Index: trunk/Ohana/src/opihi/cmd.data/densify.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/densify.c	(revision 29938)
+++ trunk/Ohana/src/opihi/cmd.data/densify.c	(revision 31160)
@@ -1,8 +1,10 @@
 # include "data.h"
+
+# define CHECKVAL(ARG) if (!isfinite(ARG)) { gprint (GP_ERR, "illegal value for %s: %f\n", #ARG, ARG); return (FALSE); }
 
 int densify (int argc, char **argv) {
 
-  int i, Nx, Ny, Xb, Yb, Normalize, N;
-  float Xmin, Xmax, dX, Ymin, Ymax, dY;
+  int i, Nx, Ny, Xb, Yb, Normalize, N, Xpix, Ypix, good, UseGraph;
+  double Xmin, Xmax, dX, Ymin, Ymax, dY;
   float *val;
   Buffer *bf;
@@ -16,6 +18,14 @@
   }
 
-  if (argc != 10) {
+  UseGraph = FALSE;
+  if ((N = get_argument (argc, argv, "-graph"))) {
+    remove_argument (N, &argc, argv);
+    UseGraph = TRUE;
+  }
+
+  good = UseGraph ? (argc == 4) : (argc == 10);
+  if (!good) {
     gprint (GP_ERR, "USAGE: densify buffer x y Xmin Xmax dX Ymin Ymax dY\n");
+    gprint (GP_ERR, "   OR: densify buffer x y -graph\n");
     return (FALSE);
   }
@@ -30,11 +40,32 @@
   REQUIRE_VECTOR_FLT (vy, FALSE); 
 
-  Xmin = atof (argv[4]);
-  Xmax = atof (argv[5]);
-  dX   = atof (argv[6]);
+  if (UseGraph) {
+    int kapa;
+    Graphdata graphmode;
+    if (!GetGraph (&graphmode, &kapa, NULL)) return (FALSE);
+    KapaGetImageRange (kapa, &Xmin, &Xmax, &Ymax, &Ymin, &Xpix, &Ypix);
+    Xmax = graphmode.xmax;
+    Xmin = graphmode.xmin;
+    Ymax = graphmode.ymax;
+    Ymin = graphmode.ymin;
+    dX = (Xmax - Xmin) / (Xpix - 1);
+    dY = (Ymax - Ymin) / (Ypix - 1);
+  } else {
+    Xmin = atof (argv[4]);
+    Xmax = atof (argv[5]);
+    dX   = atof (argv[6]);
 
-  Ymin = atof (argv[7]);
-  Ymax = atof (argv[8]);
-  dY   = atof (argv[9]);
+    Ymin = atof (argv[7]);
+    Ymax = atof (argv[8]);
+    dY   = atof (argv[9]);
+  }
+
+  CHECKVAL(Xmin);
+  CHECKVAL(Xmax);
+  CHECKVAL(dX);
+
+  CHECKVAL(Ymin);
+  CHECKVAL(Ymax);
+  CHECKVAL(dY);
 
   Nx = (Xmax - Xmin) / dX + 1;
