annotate scripts/plot/private/__actual_axis_position__.m @ 11523:fd0a3ac60b0e

update copyright notices
author John W. Eaton <jwe@octave.org>
date Fri, 14 Jan 2011 05:47:45 -0500
parents d9a8a008c116
children 8ac9687dbe9f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 11184
diff changeset
1 ## Copyright (C) 2009-2011 Ben Abbott
8890
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
2 ##
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
3 ## This file is part of Octave.
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
4 ##
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
8 ## your option) any later version.
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
9 ##
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
13 ## General Public License for more details.
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
14 ##
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
18
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
19 ## -*- texinfo -*-
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
20 ## @deftypefn {Function File} {} __actual_axis_position__ (@var{h})
8890
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
21 ## @deftypefnx {Function File} {} __actual_axis_position__ (@var{axis_struct})
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
22 ## Undocumented internal function.
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
23 ## @end deftypefn
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
24
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
25 ## Author: Ben Abbott
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
26
10920
91ff0d7ee94b Don't pass figure handle to __calc_dimensions__.
Ben Abbott <bpabbott@mac.com>
parents: 10917
diff changeset
27 function pos = __actual_axis_position__ (h)
91ff0d7ee94b Don't pass figure handle to __calc_dimensions__.
Ben Abbott <bpabbott@mac.com>
parents: 10917
diff changeset
28
91ff0d7ee94b Don't pass figure handle to __calc_dimensions__.
Ben Abbott <bpabbott@mac.com>
parents: 10917
diff changeset
29 if (ishandle (h))
91ff0d7ee94b Don't pass figure handle to __calc_dimensions__.
Ben Abbott <bpabbott@mac.com>
parents: 10917
diff changeset
30 axis_obj = get (h);
91ff0d7ee94b Don't pass figure handle to __calc_dimensions__.
Ben Abbott <bpabbott@mac.com>
parents: 10917
diff changeset
31 elseif (isstruct (h))
91ff0d7ee94b Don't pass figure handle to __calc_dimensions__.
Ben Abbott <bpabbott@mac.com>
parents: 10917
diff changeset
32 axis_obj = h;
91ff0d7ee94b Don't pass figure handle to __calc_dimensions__.
Ben Abbott <bpabbott@mac.com>
parents: 10917
diff changeset
33 h = axis_obj.__my_handle__;
8890
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
34 endif
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
35
10931
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
36 ## Get figure size in pixels
8890
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
37 orig_fig_units = get (axis_obj.parent, "units");
10530
114376c7cba5 __actual_axis_position__.m: Fix bug when restoring figure position property to its original value.
Ben Abbott <bpabbott@mac.com>
parents: 10226
diff changeset
38 orig_fig_position = get (axis_obj.parent, "position");
8890
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
39 unwind_protect
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
40 set (axis_obj.parent, "units", "pixels")
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
41 fig_position = get (axis_obj.parent, "position");
10931
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
42 unwind_protect_cleanup
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
43 set (axis_obj.parent, "units", orig_fig_units)
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
44 set (axis_obj.parent, "position", orig_fig_position)
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
45 end_unwind_protect
11001
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
46 ## Get axes size in pixels
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
47 if (strcmp (get (axis_obj.parent, "__backend__"), "gnuplot")
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
48 && strcmp (axis_obj.activepositionproperty, "outerposition"))
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
49 pos_in_pixels = axis_obj.outerposition .* fig_position([3, 4, 3, 4]);
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
50 else
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
51 pos_in_pixels = axis_obj.position .* fig_position([3, 4, 3, 4]);
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
52 endif
10931
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
53
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
54 nd = __calc_dimensions__ (h);
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
55
11184
d9a8a008c116 Remove deprecated temporary calculation of plotboxaspectratio for the gnuplot backend
Konstantinos Poulios <logari81@googlemail.com>
parents: 11001
diff changeset
56 if (strcmp (axis_obj.plotboxaspectratiomode, "manual")
d9a8a008c116 Remove deprecated temporary calculation of plotboxaspectratio for the gnuplot backend
Konstantinos Poulios <logari81@googlemail.com>
parents: 11001
diff changeset
57 || strcmp (axis_obj.dataaspectratiomode, "manual"))
10931
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
58 ## When using {rltb}margin, Gnuplot does not handle the specified
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
59 ## aspect ratio properly, so handle it here.
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
60 if (nd == 2 || all (mod (axis_obj.view, 90) == 0))
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
61 aspect_ratio_2d = axis_obj.plotboxaspectratio(1:2);
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
62 else
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
63 ## FIXME -- this works for "axis square", but has not been
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
64 ## thoroughly tested for other aspect ratios.
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
65 aspect_ratio_2d = [max(axis_obj.plotboxaspectratio(1:2)), ...
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
66 axis_obj.plotboxaspectratio(3)/sqrt(2)];
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
67 endif
8890
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
68 orig_aspect_ratio_2d = pos_in_pixels(3:4);
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
69 rel_aspect_ratio_2d = aspect_ratio_2d ./ orig_aspect_ratio_2d;
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
70 rel_aspect_ratio_2d = rel_aspect_ratio_2d ./ max (rel_aspect_ratio_2d);
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
71 if (rel_aspect_ratio_2d(1) < rel_aspect_ratio_2d(2));
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
72 dx = (1.0 - rel_aspect_ratio_2d(1)) * pos_in_pixels(3);
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
73 pos_in_pixels = pos_in_pixels + dx*[0.5, 0.0, -1.0, 0.0];
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
74 elseif (rel_aspect_ratio_2d(1) > rel_aspect_ratio_2d(2))
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
75 dy = (1.0 - rel_aspect_ratio_2d(2)) * pos_in_pixels(4);
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
76 pos_in_pixels = pos_in_pixels + dy*[0.0, 0.5, 0.0, -1.0];
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
77 endif
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
78 pos = pos_in_pixels ./ fig_position([3, 4, 3, 4]);
11001
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
79 elseif (strcmp (get (axis_obj.parent, "__backend__"), "gnuplot")
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
80 && strcmp (axis_obj.activepositionproperty, "outerposition"))
2ab8cc6dcced Special treatment activepositionproperty = outerposition for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10953
diff changeset
81 pos = axis_obj.outerposition;
10953
9c0b366583cb Revert treatment of activepositionproperty from the gnuplot backend.
Ben Abbott <bpabbott@mac.com>
parents: 10931
diff changeset
82 else
10931
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
83 pos = axis_obj.position;
a72d53df4fa6 Treatment of activepositionproperty for gnuplot.
Ben Abbott <bpabbott@mac.com>
parents: 10920
diff changeset
84 endif
8890
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
85 endfunction
ae51d068bbd5 __actual_axis_position__.m: New function to determine position of rendered axes.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
86