Mercurial > hg > octave-nkf
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 |
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 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
2313 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
2290 | 18 |
3368 | 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 | 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 | 40 ## @end deftypefn |
2290 | 41 |
6257 | 42 ## Author: jwe, Bill Denney |
2314 | 43 |
6257 | 44 function h = figure (varargin) |
3263 | 45 |
6257 | 46 nargs = nargin; |
5406 | 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 | 59 varargin(1) = []; |
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 | 63 init_new_figure = true; |
6257 | 64 varargin(1) = []; |
65 nargs--; | |
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 | 68 endif |
3263 | 69 endif |
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 | 75 ## Check to see if we already have a figure on the screen. If we do, |
76 ## then update it if it is different from the figure we are creating | |
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 | 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 | 81 drawnow (); |
82 endif | |
83 endif | |
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 | 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 | 99 endif |
3263 | 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 | 109 if (nargout > 0) |
110 h = f; | |
111 endif | |
112 | |
2290 | 113 endfunction |
13204 | 114 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14276
diff
changeset
|
115 |
13204 | 116 %!test |
117 %! hf = figure ("visible", "off"); | |
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 | 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 | 126 %! unwind_protect_cleanup |
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 |