changeset 20337:928e2c6f888e

imshow.m: Respect new 'parent' property when setting axis properties. * imshow.m: Apply axes properties to parent of created image. Add input validation to ensure "parent" property is an axes. Add BIST test to check input validation.
author Rik <rik@octave.org>
date Sun, 05 Jul 2015 21:31:46 -0700
parents eca5aa3225f4
children 3c87bcf7e0f9
files scripts/image/imshow.m
diffstat 1 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/image/imshow.m	Sun Jul 05 13:55:56 2015 -0700
+++ b/scripts/image/imshow.m	Sun Jul 05 21:31:46 2015 -0700
@@ -137,10 +137,13 @@
         case "displayrange"
           display_range = varargin{narg++};
         case {"initialmagnification"}
-          warning ("image: zoom argument ignored -- use GUI features");
+          warning ("imshow: zoom argument ignored -- use GUI features");
           narg++;
         case "parent"
           prop_val_args(end+(1:2)) = {"parent", varargin{narg++}}; 
+          if (! isaxes (prop_val_args{end}))
+            error ("imshow: parent must be an axes handle");
+          endif
         case "reduce"
           warning ("imshow: reduce argument is not implemented");
           narg++;
@@ -199,10 +202,10 @@
     htmp = image (xdata, ydata, im, prop_val_args{:});
   else
     htmp = imagesc (xdata, ydata, im, display_range, prop_val_args{:});
-    set (gca (), "clim", display_range);
+    set (get (htmp, "parent"), "clim", display_range);
   endif
-  set (gca (), "visible", "off", "view", [0, 90],
-               "ydir", "reverse", "layer", "top");
+  set (get (htmp, "parent"), "visible", "off", "view", [0, 90],
+                             "ydir", "reverse", "layer", "top");
   axis ("image");
 
   if (nargout > 0)
@@ -262,6 +265,7 @@
 %!   fail ("imshow ([1,1], [2 0 0])", "invalid colormap MAP");
 %!   fail ("imshow ([1,1], [1 0 0 0])", "argument number 2 is invalid");
 %!   fail ('imshow ([1,1], "colormap", [2 0 0])', "invalid colormap");
+%!   fail ('imshow ([1,1], "parent", -1)', "must be an axes handle");
 %!   fail ('imshow ([1,1], "xdata", ones (2,2))', "xdata must be a vector");
 %!   fail ('imshow ([1,1], "ydata", ones (2,2))', "ydata must be a vector");
 %!   fail ('imshow ([1,1], "foobar")', "warning", "unrecognized property foobar")