annotate scripts/plot/util/figure.m @ 19218:d6f1f46e5b8f stable

Fix double '-P' in print command to printer (bug #41957). * print.m: Expand documentation of latex and latexstandalone options. Change some of the documentation examples to use more useful, modern devices (jpg instead of HP DeskJet 550C). Use isempty to determine in there is a figure to print. Remove extra '-P' from print command going directly to printer.
author Michael Godfrey <michaeldgodfrey@gmail.com>
date Tue, 25 Mar 2014 17:00:41 +0000
parents a9bb634679f8
children 8c648c3a2c8f 446c46af4b42
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17744
d63878346099 maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents: 17572
diff changeset
1 ## Copyright (C) 1996-2013 John W. Eaton
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
2 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
3 ## This file is part of Octave.
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
4 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
6 ## under the terms of the GNU General Public License as published by
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6895
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6895
diff changeset
8 ## your option) any later version.
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
9 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
13 ## General Public License for more details.
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
14 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
15 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6895
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6895
diff changeset
17 ## <http://www.gnu.org/licenses/>.
2290
9170d297145f [project @ 1996-06-06 05:18:49 by jwe]
jwe
parents:
diff changeset
18
3368
a4cd1e9d9962 [project @ 1999-11-20 17:22:48 by jwe]
jwe
parents: 3263
diff changeset
19 ## -*- texinfo -*-
14366
b76f0740940e doc: Periodic grammar check of documentation.
Rik <octave@nomad.inbox5.com>
parents: 14363
diff changeset
20 ## @deftypefn {Command} {} figure
b76f0740940e doc: Periodic grammar check of documentation.
Rik <octave@nomad.inbox5.com>
parents: 14363
diff changeset
21 ## @deftypefnx {Command} {} figure @var{n}
14276
6b4bd6a86bdd figure.m: Extend to accepting command form "figure N"
Rik <octave@nomad.inbox5.com>
parents: 14226
diff changeset
22 ## @deftypefnx {Function File} {} figure (@var{n})
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
23 ## @deftypefnx {Function File} {} figure (@dots{}, "@var{property}", @var{value}, @dots{})
18895
a9bb634679f8 Fix typo in help string of function figure
Rafael Laboissiere <rafael@laboissiere.net>
parents: 18479
diff changeset
24 ## @deftypefnx {Function File} {@var{h} =} figure (@dots{})
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
25 ## Create a new figure window for plotting.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
26 ##
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
27 ## If no arguments are specified, a new figure with the next available number
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
28 ## is created.
6895
76e3d985ae56 [project @ 2007-09-13 18:22:38 by jwe]
jwe
parents: 6780
diff changeset
29 ##
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
30 ## If called with an integer @var{n}, and no such numbered figure exists, then
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
31 ## a new figure with the specified number is created. If the figure already
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
32 ## exists then it is made visible and becomes the current figure for plotting.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
33 ##
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
34 ## Multiple property-value pairs may be specified for the figure object, but
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
35 ## they must appear in pairs.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
36 ##
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
37 ## The optional return value @var{h} is a graphics handle to the created figure
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
38 ## object.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 14846
diff changeset
39 ## @seealso{axes, gcf, clf, close}
3368
a4cd1e9d9962 [project @ 1999-11-20 17:22:48 by jwe]
jwe
parents: 3263
diff changeset
40 ## @end deftypefn
2290
9170d297145f [project @ 1996-06-06 05:18:49 by jwe]
jwe
parents:
diff changeset
41
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
42 ## Author: jwe, Bill Denney
2314
949ab8eba8bc [project @ 1996-07-12 03:58:02 by jwe]
jwe
parents: 2313
diff changeset
43
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
44 function h = figure (varargin)
3263
7d80b56e0dc8 [project @ 1999-08-20 19:10:09 by jwe]
jwe
parents: 3103
diff changeset
45
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
46 nargs = nargin;
5406
c49aec8a9080 [project @ 2005-07-08 15:25:43 by jwe]
jwe
parents: 5307
diff changeset
47
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
48 if (mod (nargs, 2) == 0)
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
49 f = NaN;
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
50 init_new_figure = true;
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
51 else
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
52 arg = varargin{1};
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
53 if (ischar (arg))
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
54 arg = str2double (arg);
14276
6b4bd6a86bdd figure.m: Extend to accepting command form "figure N"
Rik <octave@nomad.inbox5.com>
parents: 14226
diff changeset
55 endif
17838
cfe5297e0f3b figure.m: Recode to pass failing test on Mac OS X.
Rik <rik@octave.org>
parents: 17744
diff changeset
56 if (isscalar (arg) && isfigure (arg))
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
57 f = arg;
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
58 init_new_figure = false;
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
59 varargin(1) = [];
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
60 nargs--;
17838
cfe5297e0f3b figure.m: Recode to pass failing test on Mac OS X.
Rik <rik@octave.org>
parents: 17744
diff changeset
61 elseif (isscalar (arg) && isnumeric (arg) && arg > 0 && arg == fix (arg))
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
62 f = arg;
6293
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
63 init_new_figure = true;
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
64 varargin(1) = [];
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
65 nargs--;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
66 else
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
67 error ("figure: N must be figure handle or figure number");
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6046
diff changeset
68 endif
3263
7d80b56e0dc8 [project @ 1999-08-20 19:10:09 by jwe]
jwe
parents: 3103
diff changeset
69 endif
7d80b56e0dc8 [project @ 1999-08-20 19:10:09 by jwe]
jwe
parents: 3103
diff changeset
70
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
71 if (rem (nargs, 2) == 1)
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
72 error ("figure: PROPERTY/VALUE arguments must be in pairs");
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
73 endif
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
74
6293
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
75 ## Check to see if we already have a figure on the screen. If we do,
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
76 ## then update it if it is different from the figure we are creating
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
77 ## or switching to.
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
78 cf = get (0, "currentfigure"); # Can't use gcf () because it calls figure()
6293
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
79 if (! isempty (cf) && cf != 0)
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
80 if (init_new_figure || cf != f)
6293
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
81 drawnow ();
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
82 endif
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
83 endif
b649aa46950d [project @ 2007-02-09 21:50:40 by jwe]
jwe
parents: 6283
diff changeset
84
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
85 if (init_new_figure)
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
86 if (ismac () && strcmp (graphics_toolkit (), "fltk"))
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
87 ## FIXME: Hack for fltk-aqua to work around bug #31931
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
88 f = __go_figure__ (f);
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
89 drawnow ();
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
90 if (! isempty (varargin))
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
91 set (f, varargin{:});
14183
9e6ec5f55827 When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents: 14138
diff changeset
92 endif
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
93 else
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
94 f = __go_figure__ (f, varargin{:});
2290
9170d297145f [project @ 1996-06-06 05:18:49 by jwe]
jwe
parents:
diff changeset
95 endif
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
96 __add_default_menu__ (f);
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
97 elseif (nargs > 0)
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
98 set (f, varargin{:});
2290
9170d297145f [project @ 1996-06-06 05:18:49 by jwe]
jwe
parents:
diff changeset
99 endif
3263
7d80b56e0dc8 [project @ 1999-08-20 19:10:09 by jwe]
jwe
parents: 3103
diff changeset
100
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
101 set (0, "currentfigure", f);
18479
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
102 ## When switching to figure N, make figure visible and on top of stack,
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
103 ## unless visibility is explicitly switched off
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
104 if (! init_new_figure && ! any (strcmpi (varargin(1:2:end), "visible")
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
105 && strcmpi (varargin(2:2:end), "off")))
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
106 set (f, "visible", "on");
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
107 endif
11349
4a3258b1448f Add default menu for fltk backend figures
Kai Habel <kai.habel@gmx.de>
parents: 10793
diff changeset
108
6283
7099f1ae465e [project @ 2007-02-08 08:37:00 by jwe]
jwe
parents: 6257
diff changeset
109 if (nargout > 0)
7099f1ae465e [project @ 2007-02-08 08:37:00 by jwe]
jwe
parents: 6257
diff changeset
110 h = f;
7099f1ae465e [project @ 2007-02-08 08:37:00 by jwe]
jwe
parents: 6257
diff changeset
111 endif
7099f1ae465e [project @ 2007-02-08 08:37:00 by jwe]
jwe
parents: 6257
diff changeset
112
2290
9170d297145f [project @ 1996-06-06 05:18:49 by jwe]
jwe
parents:
diff changeset
113 endfunction
13204
be7bfd59300a Add tests for scripts/plot
Kai Habel <kai.habel@gmx.de>
parents: 11523
diff changeset
114
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14276
diff changeset
115
13204
be7bfd59300a Add tests for scripts/plot
Kai Habel <kai.habel@gmx.de>
parents: 11523
diff changeset
116 %!test
be7bfd59300a Add tests for scripts/plot
Kai Habel <kai.habel@gmx.de>
parents: 11523
diff changeset
117 %! hf = figure ("visible", "off");
be7bfd59300a Add tests for scripts/plot
Kai Habel <kai.habel@gmx.de>
parents: 11523
diff changeset
118 %! unwind_protect
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
119 %! assert (hf, gcf);
13204
be7bfd59300a Add tests for scripts/plot
Kai Habel <kai.habel@gmx.de>
parents: 11523
diff changeset
120 %! assert (isfigure (hf));
18479
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
121 %! hf2 = figure (hf, "visible", "off");
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
122 %! assert (hf, hf2);
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
123 %! assert (hf2, gcf);
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
124 %! assert (isfigure (hf2));
0f32b34f6ec0 figure.m: Don't make figure N visible when property explicitly set to 'off' (bug #41396)
Markus Appel <masolomaster3000@googlemail.com>
parents: 17838
diff changeset
125 %! assert (get (hf2, "visible"), "off");
13204
be7bfd59300a Add tests for scripts/plot
Kai Habel <kai.habel@gmx.de>
parents: 11523
diff changeset
126 %! unwind_protect_cleanup
be7bfd59300a Add tests for scripts/plot
Kai Habel <kai.habel@gmx.de>
parents: 11523
diff changeset
127 %! close (hf);
13279
984359717d71 Use common code idiom for checking whether a double value is an integer.
Rik <octave@nomad.inbox5.com>
parents: 13204
diff changeset
128 %! end_unwind_protect
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14276
diff changeset
129
17137
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
130 %!error <N must be figure handle or figure number> figure ({1})
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
131 %!error <N must be figure handle or figure number> figure ([1 2])
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
132 %!error <N must be figure handle or figure number> figure (-1)
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
133 %!error <N must be figure handle or figure number> figure (1.5)
603ce503babd figure.m: Overhaul function. When switching to figure N make it visible.
Rik <rik@octave.org>
parents: 17136
diff changeset
134