parse_options

PURPOSE ^

PARSE_OPTIONS - build a structure that holds all plot options

SYNOPSIS ^

function options_struct=parse_options(md,optionstring);

DESCRIPTION ^

PARSE_OPTIONS - build a structure that holds all plot options

   Usage:
      options_struct=parse_options(md,optionstring);

   See also: PLOTMODEL

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function  options_struct=parse_options(md,optionstring);
0002 %PARSE_OPTIONS - build a structure that holds all plot options
0003 %
0004 %   Usage:
0005 %      options_struct=parse_options(md,optionstring);
0006 %
0007 %   See also: PLOTMODEL
0008 
0009 %units
0010 unitvalues=findarg(optionstring,'unit');
0011 if ~isempty(unitvalues),
0012     if strcmpi(unitvalues.value,'km'),
0013         options_struct.unitmultiplier=10^-3;
0014     end
0015 else
0016     options_struct.unitmultiplier=NaN;
0017 end
0018 
0019 %Section profile
0020 sectionvalues=findarg(optionstring,'sectionvalue');
0021 if ~isempty(sectionvalues),
0022     if ischar(sectionvalues(1).value),
0023         options_struct.sectionvalue=sectionvalues(1).value;
0024     else
0025         options_struct.sectionvalue=0;
0026     end
0027 else
0028     options_struct.sectionvalue=NaN;
0029 end
0030 
0031 %Resolution to be used by section profile
0032 resolution=findarg(optionstring,'resolution');
0033 if ~isempty(resolution),
0034     options_struct.resolution=resolution(1).value;
0035 else
0036     options_struct.resolution=NaN;
0037 end
0038 
0039 %Show section
0040 showsections=findarg(optionstring,'showsection');
0041 if ~isempty(showsections),
0042     if ischar(showsections(1).value),
0043         options_struct.showsection=showsections(1).value;
0044     else
0045         options_struct.showsection=0;
0046     end
0047 else
0048     options_struct.showsection=NaN;
0049 end
0050 
0051 %iceshelf values
0052 iceshelfvalues=findarg(optionstring,'iceshelf');
0053 if ~isempty(iceshelfvalues),
0054     if strcmpi(iceshelfvalues(1).value,'none'),
0055         options_struct.noiceshelf=1;
0056     else
0057         options_struct.noiceshelf=0;
0058     end
0059 else
0060     options_struct.noiceshelf=0;
0061 end
0062 
0063 %icesheet values
0064 icesheetvalues=findarg(optionstring,'icesheet');
0065 if ~isempty(icesheetvalues),
0066     if strcmpi(icesheetvalues(1).value,'none'),
0067         options_struct.noicesheet=1;
0068     else
0069         options_struct.noicesheet=0;
0070     end
0071 else
0072     options_struct.noicesheet=0;
0073 end
0074 
0075 %transient_movie
0076 transient_movie_values=findarg(optionstring,'transient_movie');
0077 if ~isempty(transient_movie_values),
0078     if(ischar(transient_movie_values.value)),
0079         options_struct.transient_movie=str2num(transient_movie_values.value);
0080     else
0081         options_struct.transient_movie=transient_movie_values.value;
0082     end
0083 else
0084     options_struct.transient_movie=NaN;
0085 end
0086 
0087 %fontsize
0088 fontsize_values=findarg(optionstring,'fontsize');
0089 if ~isempty(fontsize_values),
0090     if(ischar(fontsize_values.value)),
0091         options_struct.fontsize=str2num(fontsize_values.value);
0092     else
0093         options_struct.fontsize=fontsize_values.value;
0094     end
0095 else
0096     options_struct.fontsize=NaN;
0097 end
0098 
0099 %fontweight
0100 fontweight_values=findarg(optionstring,'fontweight');
0101 if ~isempty(fontweight_values),
0102     options_struct.fontweight=fontweight_values.value;
0103 else
0104     options_struct.fontweight=NaN;
0105 end
0106 
0107 %smoothing
0108 smooth_values=findarg(optionstring,'smooth');
0109 if ~isempty(smooth_values),
0110     if strcmpi(smooth_values.value,'yes'),
0111         options_struct.smooth=0;
0112     else
0113         options_struct.smooth=smooth_values.value;
0114     end
0115 else
0116     options_struct.smooth=NaN;
0117 end
0118 
0119 %contouronly
0120 contouronly_values=findarg(optionstring,'contouronly');
0121 if ~isempty(contouronly_values) & strcmpi(contouronly_values.value,'on'),
0122     options_struct.contouronly=1;
0123 else
0124     options_struct.contouronly=NaN;
0125 end
0126 
0127 %contourlevels
0128 contourlevels_values=findarg(optionstring,'contourlevels');
0129 if ~isempty(contourlevels_values),
0130     options_struct.contourlevels=contourlevels_values.value;
0131 else
0132     options_struct.contourlevels=NaN;
0133 end
0134 
0135 %contour color
0136 contourcolor_values=findarg(optionstring,'contourcolor');
0137 if ~isempty(contourcolor_values),
0138     options_struct.contourcolor=contourcolor_values.value;
0139 else
0140     options_struct.contourcolor=NaN;
0141 end
0142 
0143 %contour ticks
0144 contourticks_values=findarg(optionstring,'contourticks');
0145 if ~isempty(contourticks_values),
0146     options_struct.contourticks=contourticks_values.value;
0147 else
0148     options_struct.contourticks=NaN;
0149 end
0150 
0151 %highlight
0152 highlight_values=findarg(optionstring,'highlight');
0153 if ~isempty(highlight_values),
0154     options_struct.highlight=highlight_values.value;
0155 else
0156     options_struct.highlight=NaN;
0157 end
0158 
0159 %layer projection?
0160 layer_values=findarg(optionstring,'layer');
0161 if ~isempty(layer_values),
0162     options_struct.layer=layer_values(1).value;
0163     if (options_struct.layer<=0 | options_struct.layer>md.numlayers),
0164         error(['plot error message: layer option should be between 1 and ' num2str(md.numlayers)]);
0165     else
0166         %we are projecting onto  2d mesh.
0167         if ~strcmpi(md.type,'3d'),
0168             error('plot error message: layer option only supported for 3d type mesh');
0169         end
0170     end
0171 else
0172     options_struct.layer=NaN;
0173 end
0174 
0175 %title
0176 titlevalues=findarg(optionstring,'title');
0177 if ~isempty(titlevalues),
0178     if ischar(titlevalues.value),
0179         options_struct.title=titlevalues.value;
0180     else
0181         error('plot error message: title option must be a string');
0182     end
0183 else
0184     options_struct.title=NaN;
0185 end
0186 
0187 %xlabel
0188 xlabelvalues=findarg(optionstring,'xlabel');
0189 if ~isempty(xlabelvalues),
0190     if ischar(xlabelvalues.value),
0191         options_struct.xlabel=xlabelvalues.value;
0192     else
0193         error('plot error message: xlabel option must be a string');
0194     end
0195 else
0196     options_struct.xlabel=NaN;
0197 end
0198 
0199 %ylabel
0200 ylabelvalues=findarg(optionstring,'ylabel');
0201 if ~isempty(ylabelvalues),
0202     if ischar(ylabelvalues.value),
0203         options_struct.ylabel=ylabelvalues.value;
0204     else
0205         error('plot error message: ylabel option must be a string');
0206     end
0207 else
0208     options_struct.ylabel=NaN;
0209 end
0210 
0211 %zlabel
0212 zlabelvalues=findarg(optionstring,'zlabel');
0213 if ~isempty(zlabelvalues),
0214     if ischar(zlabelvalues.value),
0215         options_struct.zlabel=zlabelvalues.value;
0216     else
0217         error('plot error message: zlabel option must be a string');
0218     end
0219 else
0220     options_struct.zlabel=NaN;
0221 end
0222 
0223 %view
0224 viewvalues=findarg(optionstring,'view');
0225 if ~isempty(viewvalues),
0226     options_struct.view=viewvalues.value;
0227 else
0228     if strcmpi(md.type,'3d') & isnan(options_struct.layer),
0229         options_struct.view=3;
0230     else
0231         options_struct.view=2;
0232     end
0233 end
0234 
0235 %Caxis
0236 caxisvalues=findarg(optionstring,'caxis');
0237 if ~isempty(caxisvalues),
0238     options_struct.caxis=caxisvalues.value;
0239 else
0240     options_struct.caxis=NaN;
0241 end
0242 
0243 %xlim
0244 xlimvalues=findarg(optionstring,'xlim');
0245 if ~isempty(xlimvalues),
0246     options_struct.xlim=xlimvalues.value;
0247 else
0248     options_struct.xlim=NaN;
0249 end
0250 
0251 %ylim
0252 ylimvalues=findarg(optionstring,'ylim');
0253 if ~isempty(ylimvalues),
0254     options_struct.ylim=ylimvalues.value;
0255 else
0256     options_struct.ylim=NaN;
0257 end
0258 
0259 %zlim
0260 zlimvalues=findarg(optionstring,'zlim');
0261 if ~isempty(zlimvalues),
0262     options_struct.zlim=zlimvalues.value;
0263 else
0264     options_struct.zlim=NaN;
0265 end
0266 
0267 
0268 %shading
0269 shadingvalues=findarg(optionstring,'shading');
0270 if ~isempty(shadingvalues),
0271     if ischar(shadingvalues.value),
0272         options_struct.shading=shadingvalues.value;
0273     else
0274         error('plot error message: shading option must be a string');
0275     end
0276 else
0277     options_struct.shading=NaN;
0278 end
0279 
0280 %grid
0281 gridvalues=findarg(optionstring,'grid');
0282 if ~isempty(gridvalues),
0283     if ischar(gridvalues.value),
0284         options_struct.grid=gridvalues.value;
0285     else
0286         error('plot error message: grid option must be a string');
0287     end
0288 else
0289     options_struct.grid=NaN;
0290 end
0291 
0292 %Colorbar;
0293 colorbarvalues=findarg(optionstring,'colorbar');
0294 if ~isempty(colorbarvalues),
0295     if ischar(colorbarvalues.value),
0296         if strcmpi(colorbarvalues.value,'on'),
0297             options_struct.colorbar=1;
0298         elseif strcmpi(colorbarvalues.value,'off'),
0299             options_struct.colorbar=0;
0300         end
0301     else
0302         error('plot error message: colorbarvalues option must be ''on'' or ''off''');
0303     end
0304 else
0305     options_struct.colorbar=NaN;
0306 end
0307 
0308 %Colorbar position;
0309 colorbarposvalues=findarg(optionstring,'colorbarpos');
0310 if ~isempty(colorbarposvalues),
0311     options_struct.colorbarpos=colorbarposvalues.value;
0312 else
0313     options_struct.colorbarpos=NaN;
0314 end
0315 
0316 %Colormap;
0317 colormapvalues=findarg(optionstring,'colormap');
0318 if ~isempty(colormapvalues),
0319     if ischar(colormapvalues.value),
0320         options_struct.colormap=colormapvalues.value;
0321     else
0322         error('plot error message: colormapvalues option must be a string');
0323     end
0324 else
0325     options_struct.colormap=NaN;
0326 end
0327 
0328 %Wrapping colormap;
0329 wrappingvalues=findarg(optionstring,'wrapping');
0330 if ~isempty(wrappingvalues),
0331     options_struct.wrapping=wrappingvalues.value;
0332 else
0333     options_struct.wrapping=NaN;
0334 end
0335 
0336 %axis
0337 axisvalues=findarg(optionstring,'axis');
0338 if ~isempty(axisvalues),
0339     options_struct.axis=axisvalues.value;
0340 else
0341     options_struct.axis=NaN;
0342 end
0343 
0344 %area
0345 areavalues=findarg(optionstring,'area');
0346 if ~isempty(areavalues),
0347     if ischar(areavalues.value),
0348         options_struct.area=areavalues.value;
0349     else
0350         error('plot error message: area option must be a string');
0351     end
0352 else
0353     options_struct.area=NaN;
0354 end
0355 
0356 %edgecolor
0357 edgecolorvalues=findarg(optionstring,'edgecolor');
0358 if ~isempty(edgecolorvalues),
0359     if ischar(edgecolorvalues.value),
0360         options_struct.edgecolor=edgecolorvalues.value;
0361     else
0362         error('plot error message: edgecolor option must be a string');
0363     end
0364 else
0365     options_struct.edgecolor=NaN;
0366 end
0367 
0368 %overlay
0369 overlayvalues=findarg(optionstring,'overlay');
0370 if ~isempty(overlayvalues),
0371     if ischar(overlayvalues.value),
0372         options_struct.overlay=overlayvalues.value;
0373     else
0374         error('plot error message: overlay option must be a string');
0375     end
0376 else
0377     options_struct.overlay=NaN;
0378 end
0379 
0380 %highres
0381 highresvalues=findarg(optionstring,'highres');
0382 if ~isempty(highresvalues),
0383     options_struct.highres=highresvalues.value;
0384 else
0385     options_struct.highres=NaN;
0386 end
0387 
0388 %windowsize
0389 windowsizevalues=findarg(optionstring,'windowsize');
0390 if ~isempty(windowsizevalues),
0391     if isscalar(windowsizevalues.value),
0392         options_struct.windowsize=windowsizevalues.value;
0393     else
0394         error('plot error message: windowsize option must be a string');
0395     end
0396 else
0397     options_struct.windowsize=NaN;
0398 end
0399 
0400 %alpha
0401 alphavalues=findarg(optionstring,'alpha');
0402 if ~isempty(alphavalues),
0403     if isscalar(alphavalues.value),
0404         options_struct.alpha=alphavalues.value;
0405     else
0406         error('plot error message: alpha option must be a string');
0407     end
0408 else
0409     options_struct.alpha=NaN;
0410 end
0411     
0412 %text
0413 %1: textsize
0414 textsizevalues=findarg(optionstring,'textsize');
0415 textsizevaluesarray=cell(0,0);
0416 if ~isempty(textsizevalues)
0417     textsizevalues=textsizevalues.value;
0418     %ischar if only one textsize -> create a cell
0419     if ischar(textsizevalues),
0420         textsizevalues={textsizevalues};
0421     end
0422 else
0423     textsizevalues={14};
0424 end
0425 %2: textweight
0426 textweightvalues=findarg(optionstring,'textweight');
0427 textweightvaluesarray=cell(0,0);
0428 if ~isempty(textweightvalues)
0429     textweightvalues=textweightvalues.value;
0430     %ischar if only one textweight -> create a cell
0431     if ischar(textweightvalues),
0432         textweightvalues={textweightvalues};
0433     end
0434 else
0435     textweightvalues={'n'};
0436 end
0437 %3: textcolor
0438 textcolorvalues=findarg(optionstring,'textcolor');
0439 textcolorvaluesarray=cell(0,0);
0440 if ~isempty(textcolorvalues)
0441     textcolorvalues=textcolorvalues.value;
0442     %ischar if only one textcolor -> create a cell
0443     if ischar(textcolorvalues),
0444         textcolorvalues={textcolorvalues};
0445     end
0446 else
0447     textcolorvalues={'k'};
0448 end
0449 %4: textposition
0450 textpositionvalues=findarg(optionstring,'textposition');
0451 textpositionvaluesarray=cell(0,0);
0452 if ~isempty(textpositionvalues)
0453     textpositionvalues=textpositionvalues.value;
0454     %isnumeric if only one textposition -> create a cell
0455     if isnumeric(textpositionvalues),
0456         textpositionvalues={textpositionvalues};
0457     end
0458 end
0459 %5: textvalue
0460 textvalues=findarg(optionstring,'text');
0461 textvaluesarray=cell(0,0);
0462 if ~isempty(textvalues),
0463     textvalues=textvalues.value;
0464     %ischar if only one expstyle -> create a cell
0465     if ischar(textvalues),
0466         textvalues={textvalues};
0467     end
0468     %get options
0469     for i=1:length(textvalues)
0470         textvaluesarray{end+1}=textvalues{i};
0471         %size
0472         if (length(textsizevalues)>=i),
0473             textsizevaluesarray{end+1}=textsizevalues{i};
0474         else
0475             textsizevaluesarray{end+1}=textsizevalues{1};
0476         end
0477         %weight
0478         if (length(textweightvalues)>=i),
0479             textweightvaluesarray{end+1}=textweightvalues{i};
0480         else
0481             textweightvaluesarray{end+1}=textweightvalues{1};
0482         end
0483         %color
0484         if (length(textcolorvalues)>=i),
0485             textcolorvaluesarray{end+1}=textcolorvalues{i};
0486         else
0487             textcolorvaluesarray{end+1}=textcolorvalues{1};
0488         end
0489         %position
0490         if (length(textpositionvalues)>=i),
0491             textpositionvaluesarray{end+1}=textpositionvalues{i};
0492         else
0493             error('plotmodel error message: one or more textposition is missing');
0494         end
0495     end
0496 end
0497 options_struct.text=textvaluesarray;
0498 options_struct.textsize=textsizevaluesarray;
0499 options_struct.textweight=textweightvaluesarray;
0500 options_struct.textcolor=textcolorvaluesarray;
0501 options_struct.textposition=textpositionvaluesarray;
0502 
0503 %expdisp
0504 expdispvalues=findarg(optionstring,'expdisp');
0505 expdispvaluesarray=cell(0,0);
0506 expstylevalues=findarg(optionstring,'expstyle');
0507 expstylevaluesarray=cell(0,0);
0508 if ~isempty(expstylevalues)
0509     expstylevalues=expstylevalues.value;
0510     %ischar if only one expstyle -> create a cell
0511     if ischar(expstylevalues),
0512         expstylevalues={expstylevalues};
0513     end
0514 end
0515 if ~isempty(expdispvalues),
0516     expdispvalues=expdispvalues.value;
0517     %ischar if only one expstyle -> create a cell
0518     if ischar(expdispvalues),
0519         expdispvalues={expdispvalues};
0520     end
0521     for i=1:length(expdispvalues)
0522         expdispvaluesarray{end+1}=expdispvalues{i};
0523         if (length(expstylevalues)>=i),
0524             expstylevaluesarray{end+1}=expstylevalues{i};
0525         else
0526             expstylevaluesarray{end+1}='g-';
0527         end
0528     end
0529 end
0530 options_struct.expdisp=expdispvaluesarray;
0531 options_struct.expstyle=expstylevaluesarray;
0532 
0533 %latlon
0534 latlonvalues=findarg(optionstring,'latlon');
0535 if ~isempty(latlonvalues),
0536     options_struct.latlon=latlonvalues.value;
0537 else
0538     options_struct.latlon=NaN;
0539 end
0540 
0541 %latlonnumbering
0542 latlonnumberingvalues=findarg(optionstring,'latlonnumbering');
0543 if ~isempty(latlonnumberingvalues),
0544     options_struct.latlonnumbering=latlonnumberingvalues.value;
0545 else
0546     options_struct.latlonnumbering=NaN;
0547 end
0548 
0549 %north arrow
0550 northarrowvalues=findarg(optionstring,'northarrow');
0551 if ~isempty(northarrowvalues),
0552     if  strcmpi(northarrowvalues.value,'on')
0553         %default values
0554         Lx=max(md.y)-min(md.y);
0555         Ly=max(md.y)-min(md.y);
0556         %default values
0557         northarrowvalues.value=[min(md.x)+1/6*Lx   min(md.y)+5/6*Ly   1/15*Ly   0.25   1/250*Ly];
0558     end
0559     options_struct.northarrow=northarrowvalues.value;
0560 else
0561     options_struct.northarrow=NaN;
0562 end
0563 
0564 %scale ruler
0565 scalerulervalues=findarg(optionstring,'scaleruler');
0566 if ~isempty(scalerulervalues),
0567     if  strcmpi(scalerulervalues.value,'on')
0568         %default values
0569         Lx=max(md.y)-min(md.y);
0570         Ly=max(md.y)-min(md.y);
0571         %default values
0572         scalerulervalues.value=[min(md.x)+1/8*Lx   min(md.y)+1/8*Ly   10^(ceil(log10(Lx)))/5 floor(Lx/100) 5];
0573     end
0574     options_struct.scaleruler=scalerulervalues.value;
0575 else
0576     options_struct.scaleruler=NaN;
0577 end
0578 
0579 
0580 %designvariable
0581 designvariable=findarg(optionstring,'designvariable');
0582 if ~isempty(designvariable),
0583     if ischar(designvariable(1).value),
0584         options_struct.designvariable=designvariable(1).value;
0585     else
0586         options_struct.designvariable=0;
0587     end
0588 else
0589     options_struct.designvariable=NaN;
0590 end
0591 
0592 %responsefunction
0593 responsefunction=findarg(optionstring,'responsefunction');
0594 if ~isempty(responsefunction),
0595     if ischar(responsefunction(1).value),
0596         options_struct.responsefunction=responsefunction(1).value;
0597     else
0598         options_struct.responsefunction=0;
0599     end
0600 else
0601     options_struct.responsefunction=NaN;
0602 end
0603 
0604 
0605 %log
0606 logvalues=findarg(optionstring,'log');
0607 if ~isempty(logvalues),
0608     options_struct.log=logvalues(1).value;
0609 else
0610     options_struct.log=NaN;
0611 end
0612 
0613 %border
0614 bordervalues=findarg(optionstring,'border');
0615 if ~isempty(bordervalues),
0616     options_struct.border=bordervalues(1).value;
0617 else
0618     options_struct.border=NaN;
0619 end

Generated on Sun 29-Mar-2009 20:22:55 by m2html © 2003