0001 function options_struct=parse_options(md,optionstring);
0002
0003
0004
0005
0006
0007
0008
0009
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
0413
0414 textsizevalues=findarg(optionstring,'textsize');
0415 textsizevaluesarray=cell(0,0);
0416 if ~isempty(textsizevalues)
0417 textsizevalues=textsizevalues.value;
0418
0419 if ischar(textsizevalues),
0420 textsizevalues={textsizevalues};
0421 end
0422 else
0423 textsizevalues={14};
0424 end
0425
0426 textweightvalues=findarg(optionstring,'textweight');
0427 textweightvaluesarray=cell(0,0);
0428 if ~isempty(textweightvalues)
0429 textweightvalues=textweightvalues.value;
0430
0431 if ischar(textweightvalues),
0432 textweightvalues={textweightvalues};
0433 end
0434 else
0435 textweightvalues={'n'};
0436 end
0437
0438 textcolorvalues=findarg(optionstring,'textcolor');
0439 textcolorvaluesarray=cell(0,0);
0440 if ~isempty(textcolorvalues)
0441 textcolorvalues=textcolorvalues.value;
0442
0443 if ischar(textcolorvalues),
0444 textcolorvalues={textcolorvalues};
0445 end
0446 else
0447 textcolorvalues={'k'};
0448 end
0449
0450 textpositionvalues=findarg(optionstring,'textposition');
0451 textpositionvaluesarray=cell(0,0);
0452 if ~isempty(textpositionvalues)
0453 textpositionvalues=textpositionvalues.value;
0454
0455 if isnumeric(textpositionvalues),
0456 textpositionvalues={textpositionvalues};
0457 end
0458 end
0459
0460 textvalues=findarg(optionstring,'text');
0461 textvaluesarray=cell(0,0);
0462 if ~isempty(textvalues),
0463 textvalues=textvalues.value;
0464
0465 if ischar(textvalues),
0466 textvalues={textvalues};
0467 end
0468
0469 for i=1:length(textvalues)
0470 textvaluesarray{end+1}=textvalues{i};
0471
0472 if (length(textsizevalues)>=i),
0473 textsizevaluesarray{end+1}=textsizevalues{i};
0474 else
0475 textsizevaluesarray{end+1}=textsizevalues{1};
0476 end
0477
0478 if (length(textweightvalues)>=i),
0479 textweightvaluesarray{end+1}=textweightvalues{i};
0480 else
0481 textweightvaluesarray{end+1}=textweightvalues{1};
0482 end
0483
0484 if (length(textcolorvalues)>=i),
0485 textcolorvaluesarray{end+1}=textcolorvalues{i};
0486 else
0487 textcolorvaluesarray{end+1}=textcolorvalues{1};
0488 end
0489
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
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
0511 if ischar(expstylevalues),
0512 expstylevalues={expstylevalues};
0513 end
0514 end
0515 if ~isempty(expdispvalues),
0516 expdispvalues=expdispvalues.value;
0517
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
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
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
0550 northarrowvalues=findarg(optionstring,'northarrow');
0551 if ~isempty(northarrowvalues),
0552 if strcmpi(northarrowvalues.value,'on')
0553
0554 Lx=max(md.y)-min(md.y);
0555 Ly=max(md.y)-min(md.y);
0556
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
0565 scalerulervalues=findarg(optionstring,'scaleruler');
0566 if ~isempty(scalerulervalues),
0567 if strcmpi(scalerulervalues.value,'on')
0568
0569 Lx=max(md.y)-min(md.y);
0570 Ly=max(md.y)-min(md.y);
0571
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
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
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
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
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