diff scripts/plot/__pltopt1__.m @ 3162:7c96e85c76db

[project @ 1998-04-08 18:19:35 by jwe]
author jwe
date Wed, 08 Apr 1998 18:21:04 +0000
parents
children 98d0ee053ba4
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/scripts/plot/__pltopt1__.m
@@ -0,0 +1,217 @@
+## Copyright (C) 1996, 1997 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 2, 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, write to the Free
+## Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+## 02111-1307, USA.
+
+## usage: fmt = __pltopt1__ (caller, opt)
+##
+## Really decode plot option strings.
+##
+## See also: __pltopt__
+
+## Author: Rick Niles <niles@axp745.gsfc.nasa.gov>
+## Adapted-By: jwe
+## Maintainer: jwe
+
+function fmt = __pltopt1__ (caller, opt)
+
+  set_color = 0;
+  set_symbol = 0;
+  set_lines = 0;
+  set_dots = 0;
+  set_points = 0;
+  set_impulses = 0;
+  set_steps = 0;
+  set_boxes = 0;
+  set_errbars = 0;
+  set_key = 0;
+  more_opts = 1;
+
+  WITH = "w";
+  LINES = "l";
+  LINESPOINTS = "linesp";
+  BOXERRORBARS = "boxer";
+  BOXES = "boxes";
+  POINTS = "p";
+  DOTS = "d";
+  IMPULSES = "i";
+  STEPS = "s";
+  ERRORBARS = "e";
+  TITLE = "title";
+
+  if (nargin != 2)
+    usage ("__pltopt1__ (opt)");
+  endif
+
+  if (! isstr (opt))
+    error ("__pltopt1__: argument must be a string");
+  endif
+
+  while (more_opts)
+
+    ## First get next char.
+
+    if (max (size (opt)) > 1)
+#      [char, opt] = sscanf (opt, "%c %s", "C");
+       char = opt(1);
+       opt = opt(2:length(opt));
+    else
+      char = opt;
+      more_opts = 0;
+    endif
+
+    ## Now set flags based on char.
+
+    if (strcmp (char, "-"))
+      set_lines = 1;
+    elseif (strcmp (char, "."))
+      set_dots  = 1;
+    elseif (strcmp (char, "@"))
+      set_points = 1;
+    elseif (strcmp (char, "^"))
+      set_impulses = 1;
+    elseif (strcmp (char, "L"))
+      set_steps = 1;
+    elseif (strcmp (char, "~"))
+      set_errbars = 1;
+    elseif (strcmp (char, "#"))
+      set_boxes = 1;
+    elseif (strcmp (char, "0") || strcmp (char, "1") ...
+            || strcmp (char, "2") || strcmp (char, "3") ...
+            || strcmp (char, "4") || strcmp (char, "5") ...
+            || strcmp (char, "6") || strcmp (char, "7") ...
+            || strcmp (char, "8") || strcmp (char, "9"))
+      if (set_color)
+	set_points = 1;
+	symbol = char;
+	set_symbol = 1;
+      else
+	color = char;
+	set_color = 1;
+      endif
+    elseif (strcmp (char, "r"))
+      set_color = 1;
+      color = "1";
+    elseif (strcmp (char, "g"))
+      set_color = 1;
+      color = "2";
+    elseif (strcmp (char, "b"))
+      set_color = 1;
+      color = "3";
+    elseif (strcmp (char, "m"))
+      set_color = 1;
+      color = "4";
+    elseif (strcmp (char, "c"))
+      set_color = 1;
+      color = "5";
+    elseif (strcmp (char, "w"))
+      set_color = 1;
+      color = "6";
+    elseif (strcmp (char, "*"))
+      set_points = 1;
+      set_symbol = 1;
+      symbol = "6";
+    elseif (strcmp (char, "+"))
+      set_points = 1;
+      set_symbol = 1;
+      symbol = "2";
+    elseif (strcmp (char, "o"))
+      set_points = 1;
+      set_symbol = 1;
+      symbol = "1";
+    elseif (strcmp (char, "x"))
+      set_points = 1;
+      set_symbol = 1;
+      symbol = "4";
+    elseif (strcmp (char, ";"))  # title mode.
+      set_key = 1;
+      working = 1;
+      key_title = ""; 
+      while (working)
+        if (max (size (opt)) > 1)
+	  char = opt(1);
+	  opt = opt(2:length(opt));
+        else
+	  char = opt;
+	  if (! strcmp (char, ";"))
+            error ("%s: unfinished key label", caller);
+          end
+          more_opts = 0;
+          working = 0;
+        endif
+        if strcmp (char, ";")
+          working = 0;
+        else
+	  if (isempty (key_title))  # needs this to avoid empty matrix warning.
+            key_title = char;
+	  else
+            key_title = strcat (key_title, char);
+	  endif
+        endif
+      endwhile
+    elseif (strcmp (char, " ")) 
+      ## whitespace -- do nothing.
+    else
+      error ("%s: unrecognized format character: '%s'", caller, char);
+    endif
+  endwhile
+
+  ## Now create format string.
+
+  fmt = WITH;
+
+  if (set_lines)
+    if (set_points)
+      fmt = strcat (fmt, " ", LINESPOINTS);
+    else
+      fmt = strcat (fmt, " ", LINES);
+    endif
+  elseif (set_boxes)
+    if (set_errbars)
+      fmt = strcat (fmt, " ", BOXERRORBARS);
+    else
+      fmt = strcat (fmt, " ", BOXES);
+    endif
+  elseif (set_points)
+    fmt = strcat (fmt, " ", POINTS);
+  elseif (set_dots)
+    fmt = strcat (fmt, " ", DOTS);
+  elseif (set_impulses)
+    fmt = strcat (fmt, " ", IMPULSES);
+  elseif (set_steps)
+    fmt = strcat (fmt, " ", STEPS);
+  elseif (set_errbars)
+    fmt = strcat (fmt, " ", ERRORBARS);
+  endif
+
+  if (strcmp (fmt, WITH))
+    fmt = strcat (fmt, " ", LINES);
+  endif
+
+  if (set_color)
+    fmt = strcat (fmt, " ", color);
+    if (set_symbol)
+      fmt = strcat (fmt, " ", symbol);
+    endif
+  elseif (set_symbol)
+    fmt = strcat (fmt, " 1 ", symbol);
+  endif
+
+  if (set_key)
+    fmt = sprintf ("%s %s \"%s\" ", fmt, TITLE, key_title);
+  endif
+endfunction