Mercurial > octave
changeset 26591:26a3861a34b6
lightangle.m: review new function (bug #55446).
* lightangle.m: Move input validation ahead of code that can potentially create
a new figure. Add input validation tests for AZ and EL arguments.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 21 Jan 2019 22:34:03 -0800 |
parents | 5bfbcbec6826 |
children | c0fa4a9eef95 |
files | scripts/plot/draw/lightangle.m |
diffstat | 1 files changed, 24 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/plot/draw/lightangle.m Fri Jan 18 18:25:31 2019 -0500 +++ b/scripts/plot/draw/lightangle.m Mon Jan 21 22:34:03 2019 -0800 @@ -80,6 +80,20 @@ el = varargin{3}; endif + if (nargin == 1) + pos = get (hl, "Position"); + [az, el] = cart2sph (pos(1), pos(2), pos(3)); + az = rad2deg (az) + 90; # see view.m + el = rad2deg (el); + varargout = { az, el }; + return; + endif + + if (! isscalar (az) || ! isnumeric (az) + || ! isscalar (el) || ! isnumeric (el)) + error ("lightangle: AZ and EL must be numeric scalars"); + endif + if (! isempty (hl)) hax = ancestor (hl, "axes"); endif @@ -94,19 +108,6 @@ pos = get (hl, "Position"); - if (nargin == 1) - [az, el] = cart2sph (pos(1), pos(2), pos(3)); - az = rad2deg (az) + 90; # see view.m - el = rad2deg (el); - varargout = { az, el }; - return; - else - if (! isscalar (az) || ! isnumeric (az) - || ! isscalar (el) || ! isnumeric (el)) - error ("lightangle: AZ and EL must be numeric scalars."); - endif - endif - az = deg2rad (az - 90); el = deg2rad (el); @@ -154,9 +155,13 @@ %! end_unwind_protect ## Test input validation -%!error <Invalid call> lightangle (); -%!error <Invalid call> lightangle (1, 2, 3, 4); -%!error <Invalid call> [a, b] = lightangle (45, 30); -%!error <Invalid call> [a, b, c] = lightangle (45, 30); -%!error <HL must be a handle to a light object> lightangle (0); -%!error <H must be a handle to an axes or light object> lightangle (0, 90, 45); +%!error <Invalid call> lightangle () +%!error <Invalid call> lightangle (1, 2, 3, 4) +%!error <Invalid call> [a, b] = lightangle (45, 30) +%!error <Invalid call> [a, b, c] = lightangle (45, 30) +%!error <HL must be a handle to a light object> lightangle (0) +%!error <H must be a handle to an axes or light object> lightangle (0, 90, 45) +%!error <AZ and EL must be numeric scalars> lightangle ([1 2], 0) +%!error <AZ and EL must be numeric scalars> lightangle ({1}, 0) +%!error <AZ and EL must be numeric scalars> lightangle (0, [1 2]) +%!error <AZ and EL must be numeric scalars> lightangle (0, {1})