]> Creatis software - CreaPhase.git/blobdiff - octave_packages/m/plot/private/__pltopt__.m
update packages
[CreaPhase.git] / octave_packages / m / plot / private / __pltopt__.m
diff --git a/octave_packages/m/plot/private/__pltopt__.m b/octave_packages/m/plot/private/__pltopt__.m
new file mode 100644 (file)
index 0000000..418ed4c
--- /dev/null
@@ -0,0 +1,241 @@
+## Copyright (C) 1994-2012 John W. Eaton
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {} __pltopt__ (@var{caller}, @var{opt})
+## Undocumented internal function.
+## @end deftypefn
+
+## @deftypefn {Function File} {} __pltopt__ (@var{caller}, @var{opt})
+##
+## Decode plot option strings.
+##
+## @var{opt} can currently be some combination of the following:
+##
+## @table @code
+## @item "-"
+## For solid linestyle (default).
+##
+## @item "--"
+## For dashed line style.
+##
+## @item "-."
+## For linespoints plot style.
+##
+## @item ":"
+## For dots plot style.
+##
+## @item "r"
+## Red line color.
+##
+## @item "g"
+## Green line color.
+##
+## @item "b"
+## Blue line color.
+##
+## @item "c"
+## Cyan line color.
+##
+## @item "m"
+## Magenta line color.
+##
+## @item "y"
+## Yellow line color.
+##
+## @item "k"
+## Black line color.
+##
+## @item "w"
+## White line color.
+##
+## @item ";title;"
+## Here @code{"title"} is the label for the key.
+##
+## @item "+"
+## @itemx "o"
+## @itemx "*"
+## @itemx "."
+## @itemx "x"
+## @itemx "s"
+## @itemx "d"
+## @itemx "^"
+## @itemx "v"
+## @itemx ">"
+## @itemx "<"
+## @itemx "p"
+## @itemx "h"
+## Used in combination with the points or linespoints styles, set the point
+## style.
+## @end table
+##
+## The legend may be fixed to include the name of the variable
+## plotted in some future version of Octave.
+
+## Author: jwe
+
+function [options, valid] = __pltopt__ (caller, opt, err_on_invalid)
+
+  valid = true;
+  options =  __default_plot_options__ ();
+
+  if ((nargin == 2 || nargin == 3) && (nargout == 1 || nargout == 2))
+    if (nargin == 2)
+      err_on_invalid = true;
+    endif
+    if (ischar (opt))
+      nel = rows (opt);
+    elseif (iscellstr (opt))
+      nel = numel (opt);
+    else
+      error ("__pltopt__: expecting argument to be character string or cell array of character strings");
+    endif
+    if (ischar (opt))
+      opt = cellstr (opt);
+    endif
+    for i = nel:-1:1
+      [options(i), valid] = __pltopt1__ (caller, opt{i}, err_on_invalid);
+      if (! err_on_invalid && ! valid)
+        return;
+      endif
+    endfor
+  else
+    print_usage ();
+  endif
+
+endfunction
+
+## Really decode plot option strings.
+
+## Author: Rick Niles <niles@axp745.gsfc.nasa.gov>
+## Adapted-By: jwe
+## Maintainer: jwe
+
+function [options, valid] = __pltopt1__ (caller, opt, err_on_invalid)
+
+  options = __default_plot_options__ ();
+  valid = true;
+
+  more_opts = 1;
+
+  if (nargin != 2 && nargin != 3)
+    print_usage ();
+  endif
+
+  if (! ischar (opt))
+    return;
+  endif
+
+  have_linestyle = false;
+  have_marker = false;
+
+  ## If called by __errplot__, extract the linestyle before proceeding.
+  if (strcmp (caller,"__errplot__"))
+    if (strncmp (opt, "#~>", 3))
+      n = 3;
+    elseif (strncmp (opt, "#~", 2) || strncmp (opt, "~>", 2))
+      n = 2;
+    elseif (strncmp (opt, "~", 1) || strncmp (opt, ">", 1)
+            || strncmp (opt, "#", 1))
+      n = 1;
+    else
+      n = 0;
+    endif
+    options.errorstyle = opt(1:n);
+    opt(1:n) = [];
+  else
+    options.errorstyle = "~";
+  endif
+
+  while (! isempty (opt))
+    if (strncmp (opt, "--", 2) || strncmp (opt, "-.", 2))
+      options.linestyle = opt(1:2);
+      have_linestyle = true;
+      n = 2;
+    else
+      topt = opt(1);
+      n = 1;
+      if (topt == "-" || topt == ":")
+        have_linestyle = true;
+        options.linestyle = topt;
+      elseif (topt == "+" || topt == "o" || topt == "*"
+              || topt == "." || topt == "x" || topt == "s"
+              || topt == "d" || topt == "^" || topt == "v"
+              || topt == ">" || topt == "<" || topt == "p"
+              || topt == "h" || topt == "@")
+        have_marker = true;
+        ## Backward compatibility.  Leave undocumented.
+        if (topt == "@")
+          topt = "+";
+        endif
+        options.marker = topt;
+### Numeric color specs for backward compatibility.  Leave undocumented.
+      elseif (topt == "k" || topt == "0")
+        options.color = [0, 0, 0];
+      elseif (topt == "r" || topt == "1")
+        options.color = [1, 0, 0];
+      elseif (topt == "g" || topt == "2")
+        options.color = [0, 1, 0];
+      elseif (topt == "b" || topt == "3")
+        options.color = [0, 0, 1];
+      elseif (topt == "y")
+        options.color = [1, 1, 0];
+      elseif (topt == "m" || topt == "4")
+        options.color = [1, 0, 1];
+      elseif (topt == "c" || topt == "5")
+        options.color = [0, 1, 1];
+      elseif (topt == "w" || topt == "6")
+        options.color = [1, 1, 1];
+      elseif (isspace (topt))
+        ## Do nothing.
+      elseif (topt == ";")
+        t = index (opt(2:end), ";");
+        if (t)
+          options.key = undo_string_escapes (opt(2:t));
+          n = t+1;
+        else
+          if (err_on_invalid)
+            error ("%s: unfinished key label", caller);
+          else
+            valid = false;
+            options = __default_plot_options__ ();
+            return;
+          endif
+        endif
+      else
+        if (err_on_invalid)
+          error ("%s: unrecognized format character: `%s'", caller, topt);
+        else
+          valid = false;
+          options = __default_plot_options__ ();
+          return;
+        endif
+      endif
+    endif
+    opt(1:n) = [];
+  endwhile
+
+  if (! have_linestyle && have_marker)
+    options.linestyle = "none";
+  endif
+
+  if (have_linestyle && ! have_marker)
+    options.marker = "none";
+  endif
+
+endfunction