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})