Mercurial > hg > octave-nkf
annotate scripts/plot/appearance/orient.m @ 17672:36917b3db6b2
orient.m: Setting 'landscape' orientation also sets plot to take up full page.
* scripts/plot/appearance/orient.m: Check for 'landscape' orientation and
set paperposition to be entire page minus 0.25" margins.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 17 Oct 2013 09:11:24 -0700 |
parents | 7bb76a22cde1 |
children | 26bd7d18a50c |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
11589
diff
changeset
|
1 ## Copyright (C) 2001-2012 Paul Kienzle |
5364 | 2 ## |
5365 | 3 ## This file is part of Octave. |
5364 | 4 ## |
5365 | 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. | |
5365 | 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. | |
5364 | 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/>. | |
5364 | 18 |
5365 | 19 ## -*- texinfo -*- |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
20 ## @deftypefn {Function File} {} orient (@var{orientation}) |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
21 ## @deftypefnx {Function File} {} orient (@var{hfig}, @var{orientation}) |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{orientation} =} orient () |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
23 ## @deftypefnx {Function File} {@var{orientation} =} orient (@var{hfig}) |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
24 ## Query or set the default print orientation. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
25 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17171
diff
changeset
|
26 ## Valid values for @var{orientation} are @qcode{"landscape"}, |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17171
diff
changeset
|
27 ## @qcode{"portrait"}, and @qcode{"tall"}. |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
28 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17171
diff
changeset
|
29 ## The @qcode{"tall"} option sets the orientation to portrait and fills |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
30 ## the page with the plot, while leaving a 0.25 inch border. |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
31 ## |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
32 ## When called with no arguments, return the default print orientation. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
33 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
34 ## If the first argument @var{hfig} is a figure handle, then operate on this |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
35 ## figure rather than the current figure returned by @code{gcf}. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
36 ## @seealso{print, saveas} |
5365 | 37 ## @end deftypefn |
5364 | 38 |
5365 | 39 ## Author: Paul Kienzle |
40 ## Adapted-By: jwe | |
5364 | 41 |
6257 | 42 function retval = orient (varargin) |
5365 | 43 |
6257 | 44 nargs = nargin; |
5364 | 45 |
8248 | 46 if (nargs > 0 && numel (varargin{1}) == 1 && isfigure (varargin{1})) |
6257 | 47 cf = varargin{1}; |
48 varargin(1) = []; | |
49 nargs--; | |
50 else | |
51 cf = gcf (); | |
52 endif | |
53 | |
54 if (nargs == 0) | |
55 retval = get (cf, "paperorientation"); | |
5364 | 56 elseif (nargin == 1) |
6257 | 57 orientation = varargin{1}; |
8190
73d6b71788c0
use case-insensitive comparison for graphics properties; misc style fixes
John W. Eaton <jwe@octave.org>
parents:
8189
diff
changeset
|
58 if (strcmpi (orientation, "landscape") || strcmpi (orientation, "portrait")) |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
59 if (! strcmpi (get (cf, "paperorientation"), orientation)) |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
60 ## FIXME: with the proper listeners in place there won't be a need to |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
61 ## set the papersize and paperpostion here. |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
62 papersize = get (cf, "papersize"); |
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
63 paperposition = get (cf, "paperposition"); |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
64 set (cf, "paperorientation", orientation); |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
65 set (cf, "papersize", papersize([2, 1])); |
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
66 set (cf, "paperposition", paperposition([2, 1, 4, 3])); |
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
67 endif |
17672
36917b3db6b2
orient.m: Setting 'landscape' orientation also sets plot to take up full page.
Rik <rik@octave.org>
parents:
17572
diff
changeset
|
68 ## landscape also sets the plot to occupy the entire page |
36917b3db6b2
orient.m: Setting 'landscape' orientation also sets plot to take up full page.
Rik <rik@octave.org>
parents:
17572
diff
changeset
|
69 if (strcmpi (orientation, "landscape")) |
36917b3db6b2
orient.m: Setting 'landscape' orientation also sets plot to take up full page.
Rik <rik@octave.org>
parents:
17572
diff
changeset
|
70 papersize = get (cf, "papersize"); |
36917b3db6b2
orient.m: Setting 'landscape' orientation also sets plot to take up full page.
Rik <rik@octave.org>
parents:
17572
diff
changeset
|
71 set (cf, "paperposition", [0.25, 0.25, (papersize - 0.5)]); |
36917b3db6b2
orient.m: Setting 'landscape' orientation also sets plot to take up full page.
Rik <rik@octave.org>
parents:
17572
diff
changeset
|
72 endif |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
73 elseif (strcmpi (varargin{1}, 'tall')) |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
74 orient ("portrait"); |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
75 papersize = get (cf, "papersize"); |
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
76 set (cf, "paperposition", [0.25, 0.25, (papersize - 0.5)]); |
5364 | 77 else |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
9832
diff
changeset
|
78 error ("orient: unknown ORIENTATION"); |
5364 | 79 endif |
80 else | |
6046 | 81 print_usage (); |
5364 | 82 endif |
83 | |
84 endfunction | |
85 | |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
86 |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
87 %!shared papersize, paperposition, tallpaperposition, hfig |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
88 %! papersize = [8.5, 11]; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
89 %! paperposition = [0.25, 2.5, 8, 6]; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
90 %! tallpaperposition = [0.25, 0.25, (papersize-0.5)]; |
17150
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
91 %! hfig = figure ("visible", "off"); |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
92 %! set (hfig, "paperorientation", "portrait"); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
93 %! set (hfig, "papersize", papersize); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
94 %! set (hfig, "paperposition", paperposition); |
17150
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
95 |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
96 %!test |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
97 %! orient portrait; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
98 %! assert (orient, "portrait") # default |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
99 %! assert (get (hfig, "papersize"), papersize); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
100 %! assert (get (hfig, "paperposition"), paperposition); |
17150
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
101 |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
102 %!test |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
103 %! orient landscape; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
104 %! assert (orient,"landscape") # change to landscape |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
105 %! assert (get (hfig, "papersize"), papersize([2, 1])); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
106 %! assert (get (hfig, "paperposition"), paperposition([2, 1, 4, 3])); |
17150
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
107 |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
108 %!test |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
109 %! orient portrait # change back to portrait |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
110 %! assert (orient, "portrait"); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
111 %! assert (get (hfig, "papersize"), papersize); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
112 %! assert (get (hfig, "paperposition"), paperposition); |
17150
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
113 |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
114 %!test |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
115 %! orient landscape; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
116 %! orient tall; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
117 %! assert (orient, "portrait"); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
118 %! assert (get (hfig, "papersize"), papersize); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
119 %! assert (get (hfig, "paperposition"), tallpaperposition); |
17150
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
120 |
11473
44032aac5223
Correct failing error() tests due to change in capitalization of previous changeset.
Rik <octave@nomad.inbox5.com>
parents:
11472
diff
changeset
|
121 %!fail ("orient ('nobody')", "unknown ORIENTATION") |
17150
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
122 |
9832
cd0c4a5a12c8
orient.m: Flip papersize and paperposition when orientation changes. Add support for 'tall' option. Add tests.
Ben Abbott <bpabbott@mac.com>
parents:
8920
diff
changeset
|
123 %!test |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
124 %! orient portrait # errors don't change the state |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
125 %! assert (orient, "portrait"); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
126 %! assert (get (hfig, "papersize"), papersize); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
127 %! assert (get (hfig, "paperposition"), tallpaperposition); |
17150
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
128 |
e7723410ec32
Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents:
17122
diff
changeset
|
129 %!test |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
130 %! close (hfig); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
131 |