Index: /issm/trunk/src/m/model/plot/plot_overlay.m
===================================================================
--- /issm/trunk/src/m/model/plot/plot_overlay.m	(revision 6491)
+++ /issm/trunk/src/m/model/plot/plot_overlay.m	(revision 6492)
@@ -19,74 +19,61 @@
 end
 
-% radar power {{{1
+%Get xlim and ylim (used to extract radar image)
+xlim=getfieldvalue(options,'xlim',[min(md.x) max(md.x)]);
+ylim=getfieldvalue(options,'ylim',[min(md.y) max(md.y)]);
+
+%radar power {{{1
 if ~any(isnan(md.sarxm)) & ~any(isnan(md.sarym)) & ~any(isnan(md.sarpwr)),
 	disp('plot_overlay info: the radar image held by the model is being used');
 else
-	%t1=clock; fprintf('%s','Extracting radar image...');
 	disp('Extracting radar image...');
-	xlim=getfieldvalue(options,'xlim',[min(x) max(x)])/getfieldvalue(options,'unit',1);
-	ylim=getfieldvalue(options,'ylim',[min(y) max(y)])/getfieldvalue(options,'unit',1);
 	md=radarpower(md,xlim,ylim,getfieldvalue(options,'highres',0));
-	%t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
 end%}}}
-% InterpFromMeshToGrid -> data_grid {{{1
-redo=1;
-if (ischar(data) & isstruct(md.mesh2grid_parameters) & ismember(data,mesh2grid_parameters)),
-	choice=input(['mesh2grid has already been called for the parameter ''' data '''. Do you want to call it again (y/n)?'],'s');
-	if strcmp(choice,'y')
-		disp('use previous mesh2grid result');
-		x_m=md.mesh2grid_x_m;
-		y_m=md.mesh2grid_y_m;
-		data_grid=md.mesh2grid_data;
-		redo=0;
-	end
+%InterpFromMeshToGrid -> data_grid {{{1
+cornereast =min(xlim);
+cornernorth=max(ylim);
+xspacing=(max(xlim)-min(xlim))/(length(md.sarxm));
+yspacing=(max(ylim)-min(ylim))/(length(md.sarym));
+nlines=length(md.sarym);
+ncols =length(md.sarxm);
+disp('Interpolating data on grid...');
+[x_m y_m data_grid]=InterpFromMeshToGrid(elements,x,y,data,cornereast,cornernorth,xspacing,yspacing,nlines,ncols,NaN);
+
+%Process data_grid
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+else
+	data_min=min(data_grid(:));
+	data_max=max(data_grid(:));
 end
-if redo,
-	%apply caxis if required
-	if exist(options,'caxis'),
-		caxis_opt=getfieldvalue(options,'caxis');
-		data(find(data<caxis_opt(1)))=caxis_opt(1);
-		data(find(data>caxis_opt(2)))=caxis_opt(2);
-	end
+data_nan=find(isnan(data_grid));
 
-	%use InterpFromMeshToGrid to get an gridded data to display using imagesc
-	xlim=getfieldvalue(options,'xlim',[min(x) max(x)]);
-	ylim=getfieldvalue(options,'ylim',[min(y) max(y)]);
-	cornereast =min(xlim);
-	cornernorth=max(ylim);
-	xspacing=(max(xlim)-min(xlim))/(length(md.sarxm));
-	yspacing=(max(ylim)-min(ylim))/(length(md.sarym));
-	nlines=length(md.sarym);
-	ncols =length(md.sarxm);
-	t1=clock; fprintf('%s','Interpolating data on grid...');
-	[x_m y_m data_grid]=InterpFromMeshToGrid(elements,x,y,data,cornereast,cornernorth,xspacing,yspacing,nlines,ncols,getfieldvalue(options,'cutoff',1.5));
-	t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
-end%}}}
-%Generate RGB image{{{1
+%}}}
+%Generate HSV image{{{1
 
-%Build hsv color image from radar and results
-radar=md.sarpwr;
+%options
 contrast=getfieldvalue(options,'contrast',1);  
-radar=radar.^(contrast);
 transparency=getfieldvalue(options,'alpha',1.5);  %Rignot's setting: 1.5
-cutoff=getfieldvalue(options,'cutoff',1.5);       %Rignot's setting: 1.5
+data_coba=linspace(data_min,data_max,256);        %prepare colorbar (256 values between min and max)
+data_grid(data_nan)=data_min; 
 
-%intensity
+%hue (H)
+h_data=bytscl(data_grid)/(255+1);           %scale between 0 and 1 (log applied in processdata)
+h_coba=bytscl(data_coba)/(255+1);           %scale between 0 and 1
+%saturation (S)
+s_data=(0.5+10.^data_grid/125)/transparency;s_data(find(s_data>1))=1;s_data(find(s_data<0))=0;
+s_coba=(0.5+10.^data_coba/125)/transparency;s_coba(find(s_coba>1))=1;s_coba(find(s_coba<0))=0;
+s_data(data_nan)=0;
+%intensity (V)
+radar=(md.sarpwr).^(contrast);
 v_data=radar/max(radar(:)); %For the principla image, use radar power as intensity
 v_coba=ones(256,1);         %For the colorbar: maximal intensity
 
-%hue
-data_grid(find(data_grid<cutoff))=cutoff;   %cut all values below cutoff
-data_coba=linspace(max(min(data(:)),cutoff),max(max(data(:)),cutoff),256);%prepare colorbar (256 values between min and max)
-h_data=bytscl(data_grid)/(255+1);           %scale between 0 and 1 (log applied in processdata)
-h_coba=bytscl(data_coba)/(255+1);           %scale between 0 and 1
-
-%saturation
-s_data=(0.5+10.^data_grid/125)/transparency;s_data(find(s_data>1))=1;s_data(find(s_data<0))=0;
-s_coba=(0.5+10.^data_coba/125)/transparency;s_coba(find(s_coba>1))=1;s_coba(find(s_coba<0))=0;
-s_data(find(data_grid==cutoff))=0;
-s_coba(find(data_coba==cutoff))=0;
-
-%Transform hsv to rgb
+%}}}
+%Transform HSV to RGB {{{1
 image_hsv=zeros(size(data_grid,1),size(data_grid,2),3);
 image_hsv(:,:,1)=h_data;
@@ -114,46 +101,29 @@
 
 %last step: mesh overlay?
-if exist(options,'edgecolor')
+if exist(options,'edgecolor'),
 	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
 	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor',getfieldvalue(options,'edgecolor'));
 end
 
-%Apply options {{{1
 %Apply options, without colorbar and without grid
 iscolorbar=getfieldvalue(options,'colorbar',1);
-options=changefieldvalue(options,'colorbar',0);
-options=addfielddefault(options,'axis','equal off');
-options=addfielddefault(options,'colorbarpos',[0.80 0.70 0.02 0.15]);
+options=changefieldvalue(options,'colorbar',0);                %do not create colorbar, we will take care of it
+options=changefieldvalue(options,'caxis',[data_min data_max]); %force caxis so that the colorbar is ready
+options=addfielddefault(options,'axis','equal off');           %default axis
 applyoptions(md,data,options);
 
-%colorbar
+%Create Colorbar {{{1
 if iscolorbar,
 
-	%create colorbar with correct colors and position
-	%colorbar_rgb=buildoverlaycolorbar(md,data,getfieldvalue(options,'aplha',1.5));
-	colorbar_handle=colorbar; 
-	colorbar_image_handle=get(colorbar_handle,'Children'); 
-	set(colorbar_image_handle,'CData',colorbar_rgb);
-	set(colorbar_handle,'Position',getfieldvalue(options,'colorbarpos'));
-	set(colorbar_handle,'FontSize',getfieldvalue(options,'colorbarfontsize',14));
+	h=colorbar; 
+	set(h,'FontSize',getfieldvalue(options,'colorbarfontsize',14));
+	set(h,'YColor',getfieldvalue(options,'FontColor','k'));
+	h2=get(h,'Children');
+	set(h2,'CData',colorbar_rgb);
+	%colormap([colorbar_rgb(:,1,1) colorbar_rgb(:,1,2) colorbar_rgb(:,1,3)]);
 
-	%modify ticks.
-	scalestring=get(colorbar_handle,'YTickLabel');
-	numvalues=length(get(colorbar_handle,'YTick'));
-
-	scalestring=[];
-	scaleminmax=[max(min(data),cutoff) max(data)];
-	for i=1:numvalues,
-		fraction=(i-1)/(numvalues-1);
-		scalevalues(i)=scaleminmax(1)+(scaleminmax(2)-scaleminmax(1))*fraction;
-		if exist(options,'log'),
-			logvalue=getfieldvalue(options,'log');
-			scalestring=[scalestring; sprintf('%-8.4g',round_ice(logvalue^scalevalues(i),2) )];
-		else
-			scalestring=[scalestring; sprintf('%-8.4g',round_ice(scalevalues(i),2) )];
-		end
+	if exist(options,'colorbarpos'),
+		set(h,'Position',getfieldvalue(options,'colorbarpos')); 
 	end
-	set(colorbar_handle,'YTickLabel',scalestring);
-	set(colorbar_handle,'YColor',getfieldvalue(options,'FontColor','k'));
 	if exist(options,'colorbartitle'),
 		backup=gca;
@@ -163,3 +133,4 @@
 		axes(backup);
 	end
+
 end%}}}
