Mercurial > octave
changeset 28067:11072ea6a16c
view.m: Overhaul function (bug #57800).
* view.m: Validate that there are no more than 2 numeric inputs.
Place check for correct number of inputs before call to gca()
so figure isn't created when function fails. Use numel() instead
of length() per Octave coding conventions. Add special detection
of azimuth angle of 0 and don't offset by 90 degrees. Add
input validation BIST test.
author | Rik <rik@octave.org> |
---|---|
date | Sun, 16 Feb 2020 15:54:45 -0800 |
parents | 977793472fc9 |
children | ff46a5d19dc0 |
files | scripts/plot/appearance/view.m |
diffstat | 1 files changed, 18 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/plot/appearance/view.m Sun Feb 16 14:39:54 2020 -0800 +++ b/scripts/plot/appearance/view.m Sun Feb 16 15:54:45 2020 -0800 @@ -53,27 +53,30 @@ function [azimuth, elevation] = view (varargin) [hax, varargin, nargin] = __plt_get_axis_arg__ ("view", varargin{:}); + + if (nargin > 2) + print_usage (); + endif + if (isempty (hax)) hax = gca (); endif - if (nargin > 3) - print_usage (); - endif - if (nargin == 0) - x = get (hax, "view"); - az = x(1); - el = x(2); - elseif (length (varargin) == 1) + vw = get (hax, "view"); + az = vw(1); + el = vw(2); + elseif (numel (varargin) == 1) x = varargin{1}; - if (length (x) == 2) + if (numel (x) == 2) az = x(1); el = x(2); - elseif (length (x) == 3) + elseif (numel (x) == 3) [az, el] = cart2sph (x(1), x(2), x(3)); az *= 180/pi; - az += 90; + if (az != 0) + az += 90; # Special fix for bug #57800 + endif el *= 180/pi; elseif (x == 2) az = 0; @@ -84,7 +87,7 @@ else print_usage (); endif - elseif (length (varargin) == 2) + elseif (numel (varargin) == 2) az = varargin{1}; el = varargin{2}; endif @@ -131,3 +134,6 @@ %! unwind_protect_cleanup %! close (hf); %! end_unwind_protect + +## Test input validation +%!error <Invalid call> view (0, 0, 1)