# HG changeset patch # User jwe # Date 1197317399 0 # Node ID 1e8e64d71e34ba790c64925d8a54f938f26623f2 # Parent c099705f1aa78e45b97d42476c626061ec7ea600 [project @ 2007-12-10 20:09:59 by jwe] diff -r c099705f1aa7 -r 1e8e64d71e34 scripts/ChangeLog --- a/scripts/ChangeLog Mon Dec 10 18:54:37 2007 +0000 +++ b/scripts/ChangeLog Mon Dec 10 20:09:59 2007 +0000 @@ -1,3 +1,10 @@ +2007-12-10 David Bateman + + * image/image.m: Rewritten to allow trailing properties to be + passed to underlying image object. + * image/__img__.m: Pass additional arguments to __go_image__. + * plot/__patch__.m: Don't set clim, rely on autoscaling. + 2007-12-10 John W. Eaton * plot/__go_draw_axes__.m: If we have a grid, send "set grid diff -r c099705f1aa7 -r 1e8e64d71e34 scripts/image/__img__.m --- a/scripts/image/__img__.m Mon Dec 10 18:54:37 2007 +0000 +++ b/scripts/image/__img__.m Mon Dec 10 20:09:59 2007 +0000 @@ -32,7 +32,7 @@ ## Created: July 1994 ## Adapted-By: jwe -function h = __img__ (x, y, img) +function h = __img__ (x, y, img, varargin) newplot (); @@ -53,7 +53,8 @@ ca = gca (); - tmp = __go_image__ (ca, "cdata", img, "xdata", xlim, "ydata", ylim); + tmp = __go_image__ (ca, "cdata", img, "xdata", xlim, "ydata", ylim, + varargin {:}); set (ca, "view", [0, 90]); diff -r c099705f1aa7 -r 1e8e64d71e34 scripts/image/image.m --- a/scripts/image/image.m Mon Dec 10 18:54:37 2007 +0000 +++ b/scripts/image/image.m Mon Dec 10 20:09:59 2007 +0000 @@ -41,57 +41,41 @@ function retval = image (varargin) - if (nargin == 0) - __image__ (gca ()); - elseif (nargin == 1) - print_usage (); - elseif (isscalar (varargin{1}) && ishandle (varargin{1})) - h = varargin{1}; - if (! strcmp (get (h, "type"), "axes")) - error ("image: expecting first argument to be an axes object"); + [ax, varargin, nargin] = __plt_get_axis_arg__ ("image", varargin{:}); + + firstnonnumeric = Inf; + for i = 1 : nargin + if (! isnumeric (varargin{i})) + firstnonnumeric = i; + break; endif - oldh = gca (); - unwind_protect - axes (h); - tmp = __image__ (h, varargin{2:end}); - unwind_protect_cleanup - axes (oldh); - end_unwind_protect + endfor + + if (nargin == 0 || firstnonnumeric == 1) + img = loadimage ("default.img"); + x = y = []; + elseif (nargin == 1 || firstnonnumeric == 2) + img = varargin{1}; + x = y = []; + elseif (nargin == 2 || firstnonnumeric == 3) + print_usage (); else - tmp = __image__ (gca (), varargin{:}); + x = varargin{1}; + y = varargin{2}; + img = varargin{3}; + firstnonnumeric = 4; endif + oldax = gca (); + unwind_protect + axes (ax); + h = __img__ (x, y, img, varargin {firstnonnumeric:end}); + unwind_protect_cleanup + axes (oldax); + end_unwind_protect + if (nargout > 0) - retval = tmp; + retval = h; endif endfunction - -function h = __image__ (ax, x, y, img) - - ## Deprecated zoom. Remove this hunk of code if old zoom argument - ## is outmoded. - if ((nargin == 3 && isscalar (y)) || nargin == 5) - warning ("image: zoom argument ignored -- use GUI features"); - endif - if (nargin == 5) - nargin = 4; - endif - if (nargin == 3 && isscalar (y)) - nargin = 2; - endif - - if (nargin == 1) - ## Load Bobbie Jo Richardson (Born 3/16/94) - img = loadimage ("default.img"); - x = y = []; - elseif (nargin == 2) - img = x; - x = y = []; - elseif (nargin == 3 || nargin > 4) - print_usage (); - endif - - h = __img__ (x, y, img); - -endfunction diff -r c099705f1aa7 -r 1e8e64d71e34 scripts/plot/__patch__.m --- a/scripts/plot/__patch__.m Mon Dec 10 18:54:37 2007 +0000 +++ b/scripts/plot/__patch__.m Mon Dec 10 20:09:59 2007 +0000 @@ -141,9 +141,6 @@ error ("patch: not supported"); endif - h = __go_patch__ (p); - ax = get (h, "parent"); - cargs = {}; if (have_c) if (ischar (c)) @@ -160,14 +157,6 @@ cargs{2} = "flat"; cargs{3} = "cdata"; cargs{4} = c; - clim = get (ax, "clim"); - if (c(1) < clim(1)) - set (ax, "clim", [c(1), clim(2)]) - clim(1) = c(1); - endif - if (c(1) > clim(2)) - set (ax, "clim", [clim(1), c(1)]) - endif else error ("patch: color value not valid"); endif @@ -178,17 +167,11 @@ cargs{4} = c; else ## Color Vectors - if (rows (c2) != rows (x) || rows (c2) != length (y)) error ("patch: size of x, y, and c must be equal") else cargs{1} = "facecolor"; cargs{2} = "interp"; - if (abs(max(c2(:)) - min(c2(:))) < eps) - set (ax, "clim", [c2(1)-1, c2(1)+1]) - else - set (ax, "clim", [min(c2(:)), max(c2(:))]); - endif endif endif else @@ -196,8 +179,8 @@ cargs{2} = [0, 1, 0]; endif - set (h, "xdata", x, "ydata", y, "faces", faces, "vertices", vert, - cargs{:}, varargin{iarg:end}); + h = __go_patch__ (p, "xdata", x, "ydata", y, "faces", faces, + "vertices", vert, cargs{:}, varargin{iarg:end}); if (have_z) set (h, "zdata", z); endif diff -r c099705f1aa7 -r 1e8e64d71e34 src/ChangeLog --- a/src/ChangeLog Mon Dec 10 18:54:37 2007 +0000 +++ b/src/ChangeLog Mon Dec 10 20:09:59 2007 +0000 @@ -1,3 +1,8 @@ +2007-12-10 David Bateman + + * graphics.h.in (data_property::data): Declare as NDArray instead + of Matrix. Change all uses. + 2007-12-10 John W. Eaton * OPERATORS/op-cm-s.cc: Define function for el_mul with diff -r c099705f1aa7 -r 1e8e64d71e34 src/graphics.h.in --- a/src/graphics.h.in Mon Dec 10 18:54:37 2007 +0000 +++ b/src/graphics.h.in Mon Dec 10 20:09:59 2007 +0000 @@ -408,7 +408,13 @@ class data_property { public: - data_property (const Matrix& m = Matrix ()) + data_property (const NDArray& m = NDArray ()) + : data (m), xmin (octave_Inf), xmax (-octave_Inf), xminp (octave_Inf) + { + get_data_limits (); + } + + data_property (const Matrix& m) : data (m), xmin (octave_Inf), xmax (-octave_Inf), xminp (octave_Inf) { get_data_limits (); @@ -417,7 +423,7 @@ data_property (const octave_value& val) : data (), xmin (octave_Inf), xmax (-octave_Inf), xminp (octave_Inf) { - data = val.matrix_value (); + data = val.array_value (); get_data_limits (); } @@ -442,7 +448,7 @@ double min_pos (void) const { return xminp; } private: - Matrix data; + NDArray data; double xmin; double xmax; double xminp;