annotate scripts/plot/__print_parse_opts__.m @ 10727:570f30a48732

split printing between backends
author Shai Ayal <shaiay@users.sourceforge.net>
date Thu, 24 Jun 2010 07:06:11 +0300
parents
children 05ba991794d4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10727
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
1 ## Copyright (C) 2008, 2009 David Bateman
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
2 ##
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
3 ## This file is part of Octave.
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
4 ##
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
8 ## your option) any later version.
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
9 ##
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
13 ## General Public License for more details.
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
14 ##
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
18
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
19 ## -*- texinfo -*-
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
20 ## @deftypefn {Function File} {[@var{x}, @var{y}, @var{buttons}] =} ginput (@var{n})
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
21 ## Return which mouse buttons were pressed and keys were hit on the current
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
22 ## figure. If @var{n} is defined, then wait for @var{n} mouse clicks
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
23 ## before returning. If @var{n} is not defined, then @code{ginput} will
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
24 ## loop until the return key is pressed.
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
25 ## @end deftypefn
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
26
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
27 function arg_st = __print_parse_opts__ (varargin)
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
28
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
29 arg_st.orientation = "";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
30 arg_st.use_color = 0; # 0=default, -1=mono, +1=color
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
31 arg_st.append_to_file = 0;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
32 arg_st.force_solid = 0; # 0=default, -1=dashed, +1=solid
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
33 arg_st.fontsize = "";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
34 arg_st.font = "";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
35 arg_st.canvas_size = "";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
36 arg_st.name = "";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
37 arg_st.devopt = "";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
38 arg_st.printer = "";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
39 arg_st.debug = false;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
40 arg_st.debug_file = "octave-print-commands.log";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
41 arg_st.special_flag = "textnormal";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
42 arg_st.tight_flag = false;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
43 arg_st.resolution = "";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
44
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
45 old_fig = get (0, "currentfigure");
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
46
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
47 unwind_protect
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
48 for i = 1:nargin
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
49 arg = varargin{i};
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
50 if (ischar (arg))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
51 if (strcmp (arg, "-color"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
52 arg_st.use_color = 1;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
53 elseif (strcmp (arg, "-append"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
54 arg_st.append_to_file = 1;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
55 elseif (strcmp (arg, "-mono"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
56 arg_st.use_color = -1;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
57 elseif (strcmp (arg, "-solid"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
58 arg_st.force_solid = 1;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
59 elseif (strcmp (arg, "-dashed"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
60 arg_st.force_solid = -1;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
61 elseif (strcmp (arg, "-portrait"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
62 arg_st.orientation = "portrait";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
63 elseif (strcmp (arg, "-landscape"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
64 arg_st.orientation = "landscape";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
65 elseif (strcmp (arg, "-tight"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
66 arg_st.tight_flag = true;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
67 elseif (strcmp (arg, "-textspecial"))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
68 arg_st.special_flag = "textspecial";
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
69 elseif (strncmp (arg, "-debug", 6))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
70 arg_st.debug = true;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
71 if (length (arg) > 7)
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
72 arg_st.debug_file = arg(8:end);
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
73 endif
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
74 elseif (length (arg) > 2 && arg(1:2) == "-d")
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
75 arg_st.devopt = tolower(arg(3:end));
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
76 elseif (length (arg) > 2 && arg(1:2) == "-P")
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
77 arg_st.printer = arg;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
78 elseif ((length (arg) > 2) && arg(1:2) == "-G")
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
79 arg_st.ghostscript_binary = arg(3:end);
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
80 if (exist (arg_st.ghostscript_binary, "file") != 2)
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
81 arg_st.ghostscript_binary = file_in_path (EXEC_PATH, arg_st.ghostscript_binary);
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
82 endif
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
83 if (isempty (arg_st.ghostscript_binary))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
84 error ("print: Ghostscript binary ""%s"" could not be located", arg(3:end))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
85 endif
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
86 elseif (length (arg) > 2 && arg(1:2) == "-F")
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
87 idx = rindex (arg, ":");
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
88 if (idx)
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
89 arg_st.font = arg(3:idx-1);
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
90 arg_st.fontsize = arg(idx+1:length(arg));
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
91 else
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
92 arg_st.font = arg(3:length(arg));
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
93 endif
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
94 elseif (length (arg) > 2 && arg(1:2) == "-S")
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
95 arg_st.canvas_size = arg(3:length(arg));
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
96 elseif (length (arg) > 2 && arg(1:2) == "-r")
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
97 arg_st.resolution = arg(3:length(arg));
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
98 elseif (length (arg) >= 1 && arg(1) == "-")
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
99 error ("print: unknown option `%s'", arg);
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
100 elseif (length (arg) > 0)
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
101 arg_st.name = arg;
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
102 endif
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
103 elseif (isfigure (arg))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
104 arg_st.figure (arg);
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
105 else
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
106 error ("print: expecting inputs to be character string options or a figure handle");
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
107 endif
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
108 endfor
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
109 unwind_protect_cleanup
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
110 if (isfigure (old_fig))
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
111 figure (old_fig)
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
112 endif
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
113 end_unwind_protect
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
114
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
115 endfunction
570f30a48732 split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
diff changeset
116