diff scripts/image/image.m @ 3651:c2305b99fbd7

[project @ 2000-03-31 07:12:29 by jwe]
author jwe
date Fri, 31 Mar 2000 07:12:30 +0000
parents e031284eea27
children 38ff09748e26
line wrap: on
line diff
--- 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