changeset 3651:c2305b99fbd7

[project @ 2000-03-31 07:12:29 by jwe]
author jwe
date Fri, 31 Mar 2000 07:12:30 +0000
parents b3a57a1369f8
children 25e84fcef38a
files scripts/ChangeLog scripts/image/image.m scripts/image/imagesc.m
diffstat 3 files changed, 64 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog	Fri Mar 31 06:06:16 2000 +0000
+++ b/scripts/ChangeLog	Fri Mar 31 07:12:30 2000 +0000
@@ -1,3 +1,11 @@
+2000-03-31   Paul Kienzle  <pkienzle@kienzle.powernet.co.uk>
+
+	* image/image.m: Allow image (A) or image (x, y, A).
+	* image/imagesc.m: Likewise.
+
+	* image/image.m: If zoom is not supplied, or if it is an empty
+	matrix, autoscale the image.
+
 2000-03-22  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
 	* plot/title.m, plot/bottom_title.m, plot/top_title.m: 
--- a/scripts/image/image.m	Fri Mar 31 06:06:16 2000 +0000
+++ b/scripts/image/image.m	Fri Mar 31 07:12:30 2000 +0000
@@ -19,10 +19,14 @@
 
 ## -*- texinfo -*-
 ## @deftypefn {Function File} {} image (@var{x}, @var{zoom})
+## @deftypefnx {Function File} {} image (@var{x}, @var{y}, @var{A}, @var{zoom})
 ## Display a matrix as a color image.  The elements of @var{x} are indices
 ## into the current colormap and should have values between 1 and the
-## length of the colormap.  If @var{zoom} is omitted, a value of 4 is
-## assumed.
+## length of the colormap.  If @var{zoom} is omitted, the image will be
+## scaled to fit within 600x350 (to a max of 4).
+##
+## The axis values corresponding to the matrix elements are specified in
+## @var{x} and @var{y}. At present they are ignored.
 ## @end deftypefn
 ## @seealso{imshow, imagesc, and colormap}
 
@@ -30,21 +34,39 @@
 ## Created: July 1994
 ## Adapted-By: jwe
 
-function image (x, zoom)
+function image (x, y, A, zoom)
 
   if (nargin == 0)
     ## Load Bobbie Jo Richardson (Born 3/16/94)
     x = loadimage ("default.img");
     zoom = 2;
   elseif (nargin == 1)
-    zoom = 4;
-  elseif (nargin > 2)
-    usage ("image (matrix, [zoom])");
+    A = x;
+    zoom = [];
+    x = y = [];
+  elseif (nargin == 2)
+    A = x;
+    zoom = y;
+    x = y = [];
+  elseif (nargin == 3)
+    zoom = [];
+  elseif (nargin > 4)
+    usage ("image (matrix, zoom) or image (x, y, matrix, zoom)");
   endif
 
+  if isempty(zoom)
+    ## Find an integer scale factor which sets the image to
+    ## approximately the size of the screen.
+    zoom = min ([350/rows(A), 600/columns(A), 4]);
+    if (zoom >= 1)
+      zoom = floor (zoom);
+    else
+      zoom = 1 / ceil (1/zoom);
+    endif
+  endif
   ppm_name = tmpnam ();
 
-  saveimage (ppm_name, x, "ppm");
+  saveimage (ppm_name, A, "ppm");
 
   ## Start the viewer.  Try xv, then xloadimage.
 
@@ -57,9 +79,7 @@
   ## Need to let the shell clean up the tmp file because we are putting
   ## the viewer in the background.
 
-  command = sprintf ("( %s || %s && %s ) > /dev/null 2>&1 &",
-                     xv, xloadimage, rm);
-
-  system (command);
+  system (sprintf ("( %s || %s && %s ) > /dev/null 2>&1 &",
+                   xv, xloadimage, rm));
 
 endfunction
--- a/scripts/image/imagesc.m	Fri Mar 31 06:06:16 2000 +0000
+++ b/scripts/image/imagesc.m	Fri Mar 31 07:12:30 2000 +0000
@@ -18,11 +18,15 @@
 ## 02111-1307, USA.
 
 ## -*- texinfo -*-
-## @deftypefn {Function File} {} imagesc (@var{x}, @var{zoom})
-## Display a scaled version of the matrix @var{x} as a color image.  The
+## @deftypefn {Function File} {} imagesc (@var{A}, @var{zoom})
+## @deftypefnx {Function File} {} imagesc (@var{x}, @var{y}, @var{A}, @var{zoom})
+## Display a scaled version of the matrix @var{A} as a color image.  The
 ## matrix is scaled so that its entries are indices into the current
 ## colormap.  The scaled matrix is returned.  If @var{zoom} is omitted, a
-## value of 4 is assumed.
+## comfortable size is chosen.
+##
+## The axis values corresponding to the matrix elements are specified in
+## @var{x} and @var{y}.  At present they are ignored.
 ## @end deftypefn
 ## @seealso{image and imshow}
 
@@ -30,29 +34,37 @@
 ## Created: July 1994
 ## Adapted-By: jwe
 
-function y = imagesc (x, zoom)
+function B = imagesc (x, y, A, zoom)
 
-  if (nargin < 1 || nargin > 2)
-    usage ("imagesc (matrix, [zoom])");
+  if (nargin < 1 || nargin > 4)
+    usage ("imagesc (matrix, zoom) or imagesc (x, y, matrix, zoom)");
   elseif (nargin == 1)
-    zoom = 4;
+    A = x;
+    zoom = [];
+    x = y = [];
+  elseif (nargin == 2)
+    A = x;
+    zoom = y;
+    x = y = [];
+  elseif (nargin == 3)
+    zoom = [];
   endif
 
-  [ high, wide ] = size (x);
+  [high, wide] = size (A);
 
-  maxval = max (max (x));
-  minval = min (min (x));
+  maxval = max (max (A));
+  minval = min (min (A));
 
   ## Rescale matrix so that all values are in the range 0 to
   ## length (colormap) inclusive.
 
   if (maxval == minval)
-    y = ones (high, wide);
+    B = ones (high, wide);
   else
     ## Rescale values to between 1 and length (colormap) inclusive.
-    y = round ((x - minval) / (maxval - minval) * (rows (colormap) - 1)) + 1;
+    B = round ((A - minval) / (maxval - minval) * (rows (colormap) - 1)) + 1;
   endif
 
-  image (y, zoom);
+  image (x, y, B, zoom);
 
 endfunction