function hh= fillstd(varargin)
% hh = fillstd(varargin)
%
% %% chose  either 'h' or 'v'
%
% 'h'         horizontal variable              eg time
% 'v'         vertical variable                eg depth
% 'std'       std away from mean
%
%%% optional:
% 'mean'      the mean                         default 0;
% 'c'         fillcolor                        default, gray
% 

cfg.h    = [];
cfg.v    = [];
cfg.std = [];
cfg.mean = [];

cfg.c = .85*[1 1 1];


cfg = fillstruct(cfg, varargin, 0);

if (isempty(cfg.std))
   help(mfilename)
   fprintf('must choose ''h'' or ''v'' AND ''std''\n')
   return
end

if (isempty(cfg.mean))
   cfg.mean =  zeros(size(cfg.std));
elseif length(cfg.mean) == 1
   cfg.mean =  cfg.mean + zeros(size(cfg.std));
end

if (~isempty(cfg.v))
   % vertical
   badi=find(isnan(cfg.std(:) + cfg.v(:)));
   cfg.std(badi)=[];
   cfg.mean(badi)=[];
   cfg.v(badi)=[];
   xx = [cfg.mean(1) + cfg.std(1); 
         cfg.mean(:) + cfg.std(:); 
         flipud(cfg.mean(:) -cfg.std(:)); 
         cfg.mean(1) - cfg.std(1); 
         cfg.mean(1) + cfg.std(1)];
   
   yy = [cfg.v(1);
         cfg.v(:);
         flipud(cfg.v(:));
         cfg.v(1);         
         cfg.v(1)];
   
   hh=fill(xx, yy, cfg.c);
   set(hh, 'edgecolor', 'none');

elseif (~isempty(cfg.h))
   % horizontal
   badi=find(isnan(cfg.std(:) + cfg.h(:)));
   cfg.std(badi)=[];
   cfg.mean(badi)=[];
   cfg.h(badi)=[];
   xx = [cfg.h(1);
         cfg.h(:);
         flipud(cfg.h(:));
         cfg.h(1);         
         cfg.h(1)];

   yy = [cfg.mean(1) + cfg.std(1); 
         cfg.mean(:) + cfg.std(:); 
         flipud(cfg.mean(:) + -cfg.std(:)); 
         cfg.mean(1) - cfg.std(1); 
         cfg.mean(1) + cfg.std(1)];
   
   hh=fill(xx, yy,  cfg.c);
   set(hh, 'edgecolor', 'none');

else
   help(mfilename)
   fprintf('must choose ''h'' or ''v'' AND ''std''\n')
   hh = [];
end



