annotate scripts/plot/util/__actual_axis_position__.m @ 20038:9fc020886ae9

maint: Clean up m-files to follow Octave coding conventions. Try to trim long lines to < 80 chars. Use '##' for single line comments. Use '(...)' around tests for if/elseif/switch/while. Abut cell indexing operator '{' next to variable. Abut array indexing operator '(' next to variable. Use space between negation operator '!' and following expression. Use two newlines between endfunction and start of %!test or %!demo code. Remove unnecessary parens grouping between short-circuit operators. Remove stray extra spaces (typos) between variables and assignment operators. Remove stray extra spaces from ends of lines.
author Rik <rik@octave.org>
date Mon, 23 Feb 2015 14:54:39 -0800
parents 4197fc428c7d
children 83792dd9bcc1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19898
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 19363
diff changeset
1 ## Copyright (C) 2009-2015 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;
17096
33037eddecd2 Overhaul colorbar function.
Rik <rik@octave.org>
parents: 14138
diff changeset
33 h = axis_obj.__cbar_hax__;
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
11589
b0084095098e missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
40 set (axis_obj.parent, "units", "pixels");
8890
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
11589
b0084095098e missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
43 set (axis_obj.parent, "units", orig_fig_units);
b0084095098e missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
44 set (axis_obj.parent, "position", orig_fig_position);
10931
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
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
47 if (strcmp (get (axis_obj.parent, "__graphics_toolkit__"), "gnuplot")
11001
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
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11576
diff changeset
53
10931
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
17176
abf384f5d243 maint: Remove unneeded input validation from internal fcns in private/ directories.
Rik <rik@octave.org>
parents: 17096
diff changeset
63 ## FIXME: This works for "axis square", but has not been
abf384f5d243 maint: Remove unneeded input validation from internal fcns in private/ directories.
Rik <rik@octave.org>
parents: 17096
diff changeset
64 ## thoroughly tested for other aspect ratios.
10931
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);
20038
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19898
diff changeset
69 rel_aspect_ratio_2d = aspect_ratio_2d ./ orig_aspect_ratio_2d;
8890
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]);
11576
8ac9687dbe9f rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
79 elseif (strcmp (get (axis_obj.parent, "__graphics_toolkit__"), "gnuplot")
11001
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
19363
702aa79dc482 Add BIST tests for various quasi-internal m-files.
Rik <rik@octave.org>
parents: 17744
diff changeset
87
702aa79dc482 Add BIST tests for various quasi-internal m-files.
Rik <rik@octave.org>
parents: 17744
diff changeset
88 ## No test coverage for internal function. It is tested through calling fcn.
702aa79dc482 Add BIST tests for various quasi-internal m-files.
Rik <rik@octave.org>
parents: 17744
diff changeset
89 %!assert (1)