Mercurial > octave-nkf
changeset 20238:70e8801a56f7
Correctly parse linestyle specification for contour plots.
* __contour__.m: Rewrite input varargin processing to handle the order
in which "linecolor" and a plot-type linestyle argument are given.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 18 May 2015 22:10:51 -0700 |
parents | d9f35ceff9e1 |
children | 3c8260fd0837 |
files | scripts/plot/draw/private/__contour__.m |
diffstat | 1 files changed, 29 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/plot/draw/private/__contour__.m Sun May 17 10:04:08 2015 -0700 +++ b/scripts/plot/draw/private/__contour__.m Mon May 18 22:10:51 2015 -0700 @@ -28,40 +28,42 @@ linespec.color = "auto"; linespec.linestyle = "-"; - for i = 3:2:nargin - arg = varargin{i}; - if (ischar (arg) || iscellstr (arg)) + opts = {}; + i = 3; + while (i <= length (varargin)) + if (ischar (varargin{i}) || iscellstr (varargin{i})) + arg = varargin{i}; + if (i < length (varargin)) + if (strcmpi (arg, "fill")) + filled = varargin{i+1}; + varargin(i:i+1) = []; + continue; + elseif (strcmpi (arg, "linecolor")) + linespec.color = varargin{i+1}; + varargin(i:i+1) = []; + continue; + endif + endif + [lspec, valid] = __pltopt__ ("__contour__", arg, false); if (valid) - have_line_spec = true; varargin(i) = []; - linespec = lspec; - if (isempty (linespec.color)) - linespec.color = "auto"; + if (! isempty (lspec.color)) + linespec.color = lspec.color; + endif + if (! isempty (lspec.linestyle)) + linespec.linestyle = lspec.linestyle; endif - if (isempty (linespec.linestyle)) - linespec.linestyle = "-"; + else # unrecognized option, pass unmodified in opts cell array + if (i < length (varargin)) + opts(end+(1:2)) = varargin(i:i+1); + varargin(i:i+1) = []; + else + error ("__contour__: Uneven number of PROP/VAL pairs"); endif - break; endif - endif - endfor - opts = {}; - i = 3; - while (i < length (varargin)) - if (ischar (varargin{i})) - if (strcmpi (varargin{i}, "fill")) - filled = varargin{i+1}; - varargin(i:i+1) = []; - elseif (strcmpi (varargin{i}, "linecolor")) - linespec.color = varargin{i+1}; - varargin(i:i+1) = []; - else - opts(end+(1:2)) = varargin(i:i+1); - varargin(i:i+1) = []; - endif - else + else # skip numeric arguments i++; endif endwhile