Index: trunk/Ohana/src/opihi/cmd.data/box.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/box.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/box.c	(revision 13479)
@@ -3,14 +3,16 @@
 int box (int argc, char **argv) {
   
-  int i, N, Ngraph, Xgraph;
+  int i, N, kapa;
+  char *name;
   Graphdata graphmode;
   
-  Ngraph = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetGraph (&graphmode, &Xgraph, &Ngraph)) return (FALSE);
+  if (!GetGraph (&graphmode, &kapa, name)) return (FALSE);
+  FREE (name);
 
   strcpy (graphmode.ticks, "2222");
@@ -49,5 +51,5 @@
   if (argc != 1) goto usage;
 
-  KapaBox (Xgraph, &graphmode);
+  KapaBox (kapa, &graphmode);
   return (TRUE);
       
Index: trunk/Ohana/src/opihi/cmd.data/center.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/center.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/center.c	(revision 13479)
@@ -5,13 +5,15 @@
   double x, y;
   int zoom;
-  int Ximage, Nimage, N;
+  int kapa, N;
+  char *name;
   
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
+  if (!GetImage (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
 
   if ((argc != 3) && (argc != 4)) {
@@ -25,5 +27,5 @@
   if (argc == 4) zoom = atof (argv[3]);
 
-  KiiCenter (Ximage, x, y, zoom);
+  KiiCenter (kapa, x, y, zoom);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/clear.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/clear.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/clear.c	(revision 13479)
@@ -1,29 +1,48 @@
 # include "data.h"
 
+// default is to clear all plots, but not the sections or the images
 int clear (int argc, char **argv) {
   
-  int N, ClearSection;
-  int Ngraph, Xgraph;
+  int N;
+  int kapa;
+  char *name;
 
-  Ngraph = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetGraph (NULL, &Xgraph, &Ngraph)) return (FALSE);
+  if (!GetGraph (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
 
-  ClearSection = FALSE;
-  if ((N = get_argument (argc, argv, "-s"))) {
-    remove_argument (N, &argc, argv);
-    ClearSection = TRUE;
+  // clear all sections
+  if ((N = get_argument (argc, argv, "-s")) || 
+      (N = get_argument (argc, argv, "-section"))) {
+      KapaClearSections (kapa);
+      return (TRUE);
+  }
+
+  // clear all sections
+  if ((N = get_argument (argc, argv, "-graph"))) {
+      KapaClearCurrentPlot (kapa);
+      return (TRUE);
+  }
+
+  // clear image
+  if ((N = get_argument (argc, argv, "-image"))) {
+      KapaClearImage (kapa);
+      return (TRUE);
   }
 
   if (argc != 1) {
-    gprint (GP_ERR, "USAGE: clear [-n Xgraph]\n");
+    gprint (GP_ERR, "USAGE: clear [-n Xgraph] [-s|-section] [-image] [-graph]\n");
+    gprint (GP_ERR, "       [-s|-section] : clear all sections\n");
+    gprint (GP_ERR, "       [-graph]      : clear current graph\n");
+    gprint (GP_ERR, "       [-image]      : clear current image\n");
     return (FALSE);
   }
 
-  KapaClear (Xgraph, ClearSection);
+  KapaClearPlots (kapa);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/close.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/close.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/close.c	(revision 13479)
@@ -3,30 +3,19 @@
 int close_device (int argc, char **argv) {
 
-  int N, Source, Nsource, IsImage;
+  int N, kapa, IsImage;
+  char *name;
   /* close current graphics device */
 
-  Nsource = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nsource = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if ((N = get_argument (argc, argv, "-g"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (FALSE);
-  }  
-  if ((N = get_argument (argc, argv, "-i"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (TRUE);
-  }  
 
-  IsImage = GetCurrentDevice ();
-  if (IsImage) {
-    if (!GetImage (&Source, &Nsource)) return (FALSE);
-    close_image (Nsource); 
-  } else {
-    if (!GetGraph (NULL, &Source, &Nsource)) return (FALSE);
-    close_graph (Nsource); 
-  }
+  if (!GetGraph (NULL, &kapa, name)) return (FALSE);
+
+  close_kapa (name); 
+  FREE (name);
 
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/cursor.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/cursor.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/cursor.c	(revision 13479)
@@ -3,31 +3,23 @@
 int cursor (int argc, char **argv) {
 
-  char string[20], key[20];
-  int i, N, Nsource, Source, IsImage;
+  char string[20], key[20], *name;
+  int i, N, kapa;
   double X, Y, R, D, Z;
   void *oldsignal;
-  Graphdata graphmode;
-  Buffer *buf;
 
-  Nsource = -1;
+  // XXX need to be able to specify graph vs image coords
+  // currently, if only one exists, that frame will be used
+  // if both exist, defaults to ??
+  // if ((N = get_argument (argc, argv, "-g"))) {
+  // if ((N = get_argument (argc, argv, "-i"))) {
+
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nsource = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if ((N = get_argument (argc, argv, "-g"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (FALSE);
-  }  
-  if ((N = get_argument (argc, argv, "-i"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (TRUE);
-  }  
-  IsImage = GetCurrentDevice ();
-  if (IsImage) {
-    if (!GetImage (&Source, &Nsource)) return (FALSE);
-  } else {
-    if (!GetGraph (&graphmode, &Source, &Nsource)) return (FALSE);
-  }
+  if (!GetGraphData (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
 
   N = 0;
@@ -39,14 +31,12 @@
   }
   
-  buf = NULL;
-  if (IsImage) buf = SelectBuffer (GetImageName(), OLDBUFFER, FALSE);
-  
-  KiiCursorOn (Source);
+  KiiCursorOn (kapa);
   
   oldsignal = signal (SIGINT, handle_interrupt);
   interrupt = FALSE;
-  Z = -1.0;
+
   for (i = 0; ((i < N) || (N == 0)) && !interrupt; i++) {
-    KiiCursorRead (Source, &X, &Y, key);
+
+    KiiCursorRead (kapa, &X, &Y, &Z, &R, &D, key);
 
     sprintf (string, "X%s", key);
@@ -54,24 +44,20 @@
     sprintf (string, "Y%s", key);
     set_variable (string, Y);
+    sprintf (string, "Z%s", key);
+    set_variable (string, Z);
+    sprintf (string, "R%s", key);
+    set_variable (string, R);
+    sprintf (string, "D%s", key);
+    set_variable (string, D);
+
     set_str_variable ("KEY", key);
     
-    if (IsImage) {
-      if (buf != NULL) { 
-	Z = gfits_get_matrix_value (&buf[0].matrix, (int) X, (int) Y);
-      }
-      gprint (GP_LOG, "%s %f %f  %f\n", key, X, Y, Z);
-    } else {
-      XY_to_RD (&R, &D, X, Y, &graphmode.coords);
-      sprintf (string, "R%s", key);
-      set_variable (string, R);
-      sprintf (string, "D%s", key);
-      set_variable (string, D);
-      gprint (GP_LOG, "%s %f %f\n", key, X, Y);
-    }
+    gprint (GP_LOG, "%s %f %f %f %f %f\n", key, X, Y, Z, R, D);
+
     if (!strcasecmp (key, "Q")) break;
   }
 
   signal (SIGINT, oldsignal);
-  KiiCursorOff (Source);
+  KiiCursorOff (kapa);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/device.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/device.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/device.c	(revision 13479)
@@ -3,30 +3,25 @@
 int device (int argc, char **argv) {
 
-  int N, Source, Nsource, IsImage;
+  int N, kapa, IsImage;
+  char *name;;
   /* set / get current graphics device */
 
-  Nsource = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nsource = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if ((N = get_argument (argc, argv, "-g"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (FALSE);
-  }  
-  if ((N = get_argument (argc, argv, "-i"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (TRUE);
-  }  
 
-  IsImage = GetCurrentDevice ();
-  if (IsImage) {
-    if (!GetImage (&Source, &Nsource)) return (FALSE);
-    gprint (GP_ERR, "kii %d\n", Nsource); 
+  if (name == NULL) {
+    name = GetKapaName ();
+    if (name == NULL) {
+      gprint (GP_ERR, "no device defined\n");
+      return (NULL);
+    }
   } else {
-    if (!GetGraph (NULL, &Source, &Nsource)) return (FALSE);
-    gprint (GP_ERR, "kapa %d\n", Nsource); 
+    if (!GetGraph (NULL, &kapa, name)) return (FALSE);
   }
+  gprint (GP_ERR, "kapa %s\n", name); 
 
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/dot.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/dot.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/dot.c	(revision 13479)
@@ -3,8 +3,9 @@
 int dot (int argc, char **argv) {
   
+  int kapa;
   Graphdata graphmode;
   float x, y;
 
-  if (!style_args (&graphmode, &argc, argv, -1)) return FALSE;
+  if (!style_args (&graphmode, &argc, argv, &kapa)) return FALSE;
 
   if (argc != 3) {
@@ -15,15 +16,11 @@
   y = atof(argv[2]);
 
-  /* set plotting options (these are sticky) */
-  SetGraph (graphmode);
-
   /* set point style and errorbar mode (these are NOT sticky) */
   graphmode.style = 2;
   graphmode.etype = 0;
 
-  if (!PrepPlotting (1, &graphmode)) return (FALSE);
-  
-  PlotVector (1, &x);
-  PlotVector (1, &y);
+  if (!KapaPrepPlot (kapa, 1, &graphmode)) return (FALSE);
+  KapaPlotVector (kapa, 1, &x, "x");
+  KapaPlotVector (kapa, 1, &y, "y");
   
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/erase.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/erase.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/erase.c	(revision 13479)
@@ -4,13 +4,15 @@
   
   int i, N;
-  int Ximage, Nimage;
+  int kapa;
+  char *name;
   
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
+  if (!GetImage (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
 
   if (argc < 2) {
@@ -22,8 +24,8 @@
   for (i = 1; i < argc; i++) {
     if (!(strcasecmp (argv[i], "all"))) {
-      KiiEraseOverlay (Ximage, "red");
-      KiiEraseOverlay (Ximage, "green");
-      KiiEraseOverlay (Ximage, "blue");
-      KiiEraseOverlay (Ximage, "yellow");
+      KiiEraseOverlay (kapa, "red");
+      KiiEraseOverlay (kapa, "green");
+      KiiEraseOverlay (kapa, "blue");
+      KiiEraseOverlay (kapa, "yellow");
       continue;
     }
@@ -32,5 +34,5 @@
       return (FALSE);
     }
-    KiiEraseOverlay (Ximage, argv[i]);
+    KiiEraseOverlay (kapa, argv[i]);
   }
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/grid.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/grid.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/grid.c	(revision 13479)
@@ -3,17 +3,10 @@
 int grid (int argc, char **argv) {
   
-  int j, N, MinorTick, MajorTick;
+  int j, kapa, N, MinorTick, MajorTick;
   Vector Xvec, Yvec;
   double range, lrange, factor, mantis, fmantis, power, major, minor, first, next;
   Graphdata graphmode;
-  int Ngraph;
-
-  Ngraph = -1;
-  if ((N = get_argument (argc, argv, "-n"))) {
-    remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
+
+  if (!style_args (&graphmode, &argc, argv, &kapa)) return (FALSE);
 
   MajorTick = TRUE;
@@ -200,7 +193,5 @@
   graphmode.ptype = 100; /* connect a pair */
   graphmode.etype = 0;
-  PrepPlotting (N, &graphmode);
-  PlotVector (N, Xvec.elements);
-  PlotVector (N, Yvec.elements);
+  PlotVectorPair (kapa, N, Xvec.elements, Yvec.elements, &graphmode);
 
   free (Xvec.elements);
Index: trunk/Ohana/src/opihi/cmd.data/init.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/init.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/init.c	(revision 13479)
@@ -235,6 +235,5 @@
   int i;
 
-  InitGraph ();
-  InitImage ();
+  InitKapa ();
   InitQueues ();
 
Index: trunk/Ohana/src/opihi/cmd.data/jpeg.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/jpeg.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/jpeg.c	(revision 13479)
@@ -4,5 +4,6 @@
 
   char filename[1024];
-  int N, Source, Nsource, IsImage, IsPNG;
+  int N, kapa, IsImage, IsPNG, IsPPM;
+  char *name;
   
   if ((N = get_argument (argc, argv, "--help"))) {
@@ -12,9 +13,15 @@
 
   /* image type */
-  IsPNG = TRUE;
+  IsPPM = IsPNG = FALSE;
   if ((N = get_argument (argc, argv, "-ppm"))) {
     remove_argument (N, &argc, argv);
-    IsPNG = FALSE;
+    IsPPM = TRUE;
   }
+  if ((N = get_argument (argc, argv, "-png"))) {
+    remove_argument (N, &argc, argv);
+    IsPNG = TRUE;
+  }
+  if (!strcmp (argv[0], "png")) IsPNG = TRUE;
+  if (!strcmp (argv[0], "ppm")) IsPPM = TRUE;
 
   /* file name */
@@ -27,31 +34,30 @@
 
   /* display source */
-  Nsource = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nsource = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
+
+  /* XXX output png / jpeg needs to include both graph and image
+     if available.  this is a poor mix of data representations 
+     (png for image / jpeg for plots)
   if ((N = get_argument (argc, argv, "-g"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (FALSE);
-  }  
   if ((N = get_argument (argc, argv, "-i"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (TRUE);
-  }  
-  IsImage = GetCurrentDevice ();
-  if (IsImage) {
-    if (!GetImage (&Source, &Nsource)) return (FALSE);
-    if (!filename[0]) strcpy (filename, "Ximage.jpg");
-    KiiJPEG (Source, filename);
-  } else {
-    if (!GetGraph (NULL, &Source, &Nsource)) return (FALSE);
-    if (!filename[0]) strcpy (filename, "Xgraph.png");
-    if (IsPNG) {
-      KapaPNG (Source, filename);
-    } else {
-      KapaPPM (Source, filename);
-    }
+  */
+
+  if (!GetGraph (NULL, &kapa, name)) return (FALSE);
+  if (!IsPNG && !IsPPM) {
+    if (!filename[0]) strcpy (filename, "kapa.jpg");
+    KiiJPEG (kapa, filename);
+  }
+  if (IsPNG) {
+    if (!filename[0]) strcpy (filename, "kapa.png");
+    KapaPNG (kapa, filename);
+  } 
+  if (IsPPM) {
+    if (!filename[0]) strcpy (filename, "kapa.ppm");
+    KapaPPM (kapa, filename);
   }
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/labels.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/labels.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/labels.c	(revision 13479)
@@ -4,7 +4,7 @@
   
   char name[64];
-  int N, size, Xgraph;
+  int N, size, kapa;
 
-  if (!GetGraph (NULL, &Xgraph, NULL)) return (FALSE);
+  if (!GetGraph (NULL, &kapa, NULL)) return (FALSE);
 
   if (get_argument (argc, argv, "-h")) {
@@ -36,10 +36,10 @@
     size = atof (argv[N]);
     remove_argument (N, &argc, argv);
-    KapaSetFont (Xgraph, name, size);
+    KapaSetFont (kapa, name, size);
   } 
 
   if ((N = get_argument (argc, argv, "-x"))) {
     remove_argument (N, &argc, argv);
-    KapaSendLabel (Xgraph, argv[N], 0);
+    KapaSendLabel (kapa, argv[N], 0);
     remove_argument (N, &argc, argv);
   }
@@ -47,5 +47,5 @@
   if ((N = get_argument (argc, argv, "-y"))) {
     remove_argument (N, &argc, argv);
-    KapaSendLabel (Xgraph, argv[N], 1);
+    KapaSendLabel (kapa, argv[N], 1);
     remove_argument (N, &argc, argv);
   }
@@ -53,5 +53,5 @@
   if ((N = get_argument (argc, argv, "+x"))) {
     remove_argument (N, &argc, argv);
-    KapaSendLabel (Xgraph, argv[N], 2);
+    KapaSendLabel (kapa, argv[N], 2);
     remove_argument (N, &argc, argv);
   }
@@ -59,5 +59,5 @@
   if ((N = get_argument (argc, argv, "+y"))) {
     remove_argument (N, &argc, argv);
-    KapaSendLabel (Xgraph, argv[N], 3);
+    KapaSendLabel (kapa, argv[N], 3);
     remove_argument (N, &argc, argv);
   }
@@ -65,5 +65,5 @@
   if ((N = get_argument (argc, argv, "-ul"))) {
     remove_argument (N, &argc, argv);
-    KapaSendLabel (Xgraph, argv[N], 4);
+    KapaSendLabel (kapa, argv[N], 4);
     remove_argument (N, &argc, argv);
   }
@@ -71,5 +71,5 @@
   if ((N = get_argument (argc, argv, "-ur"))) {
     remove_argument (N, &argc, argv);
-    KapaSendLabel (Xgraph, argv[N], 5);
+    KapaSendLabel (kapa, argv[N], 5);
     remove_argument (N, &argc, argv);
   }
@@ -77,5 +77,5 @@
   if ((N = get_argument (argc, argv, "-ll"))) {
     remove_argument (N, &argc, argv);
-    KapaSendLabel (Xgraph, argv[N], 6);
+    KapaSendLabel (kapa, argv[N], 6);
     remove_argument (N, &argc, argv);
   }
@@ -83,5 +83,5 @@
   if ((N = get_argument (argc, argv, "-lr"))) {
     remove_argument (N, &argc, argv);
-    KapaSendLabel (Xgraph, argv[N], 7);
+    KapaSendLabel (kapa, argv[N], 7);
     remove_argument (N, &argc, argv);
   }
Index: trunk/Ohana/src/opihi/cmd.data/limits.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/limits.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/limits.c	(revision 13479)
@@ -4,5 +4,6 @@
 
   int N, APPLY;
-  int Ngraph, Xgraph;
+  int kapa;
+  char *name;
   Graphdata graphmode;
   Vector *xvec, *yvec;
@@ -15,15 +16,15 @@
     APPLY = TRUE;
   }
-
-  Ngraph = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetGraph (&graphmode, &Xgraph, &Ngraph)) return (FALSE);
+  if (!GetGraph (&graphmode, &kapa, name)) return (FALSE);
+  FREE (name);
 
   if (argc == 1) {
-    gprint (GP_ERR, "limits: %f %f %f %f [-a] [-n Xgraph]\n",
+    gprint (GP_ERR, "limits: %f %f %f %f [-a] [-n device]\n",
 	     graphmode.xmin, graphmode.xmax,
 	     graphmode.ymin, graphmode.ymax);
@@ -71,5 +72,5 @@
  success:
   SetLimits (xvec, yvec, &graphmode);
-  if (APPLY) KapaSetLimits (Xgraph, &graphmode);
+  if (APPLY) KapaSetLimits (kapa, &graphmode);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/line.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/line.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/line.c	(revision 13479)
@@ -3,8 +3,9 @@
 int line (int argc, char **argv) {
   
+  int kapa;
   Graphdata graphmode;
   float x[2], y[2];
 
-  if (!style_args (&graphmode, &argc, argv, -1)) return FALSE;
+  if (!style_args (&graphmode, &argc, argv, &kapa)) return FALSE;
 
   if (argc != 6) {
@@ -17,16 +18,12 @@
   y[1] = atof(argv[5]);
 
-  SetGraph (graphmode);
-
   /* set point style and errorbar mode (these are NOT sticky) */
   graphmode.style = 0;
   graphmode.etype = 0;
 
-  if (!PrepPlotting (2, &graphmode)) return (FALSE);
-  
-  PlotVector (2, x);
-  PlotVector (2, y);
+  if (!KapaPrepPlot (kapa, 2, &graphmode)) return (FALSE);
+  KapaPlotVector (kapa, 2, x, "x");
+  KapaPlotVector (kapa, 2, y, "y");
   
   return (TRUE);
-
 }
Index: trunk/Ohana/src/opihi/cmd.data/load.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/load.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/load.c	(revision 13479)
@@ -4,21 +4,23 @@
   
   int i, N, n, ISCEL;
-  int Ximage, Nimage, Noverlay, NOVERLAY;
+  int kapa, Noverlay, NOVERLAY;
   char *c, type[10], string[128], line[1024];
   double x, y, dx, dy, x1, y1;
   double dra, ddec, ra1, dec1, ra, dec;
   FILE *f;
-  char *buffer;
+  char *buffer, *name;
   Coords coords;
   Buffer *buf;
   KiiOverlay *overlay;
+  KapaImageData data;
   
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
+  if (!GetImageData (&data, &kapa, name)) return (FALSE);
+  FREE (name);
 
   ISCEL = FALSE;
@@ -45,5 +47,5 @@
 
   if (ISCEL) {
-    if ((buf = SelectBuffer (GetImageName(), OLDBUFFER, TRUE)) == NULL) return (FALSE);
+    if ((buf = SelectBuffer (data.name, OLDBUFFER, TRUE)) == NULL) return (FALSE);
     GetCoords (&coords, &buf[0].header);
   }
@@ -125,5 +127,5 @@
   }
 
-  KiiLoadOverlay (Ximage, overlay, Noverlay, argv[1]);
+  KiiLoadOverlay (kapa, overlay, Noverlay, argv[1]);
 
   for (i = 0; i < Noverlay; i++) {
Index: trunk/Ohana/src/opihi/cmd.data/plot.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/plot.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/plot.c	(revision 13479)
@@ -3,9 +3,9 @@
 int plot (int argc, char **argv) {
   
-  int N, Npts;
+  int kapa, N, Npts;
   Graphdata graphmode;
   Vector *xvec, *yvec, *dxmvec, *dxpvec, *dymvec, *dypvec;
 
-  if (!style_args (&graphmode, &argc, argv, -1)) return FALSE;
+  if (!style_args (&graphmode, &argc, argv, &kapa)) return FALSE;
 
   /* decide on error bars */
@@ -36,5 +36,4 @@
     return (FALSE);
   }
-  SetGraph (graphmode);
 
   /* set errorbar mode (these are NOT sticky) */
@@ -57,18 +56,16 @@
   if (Npts == 0) return (TRUE);
 
-  if (!PrepPlotting (Npts, &graphmode)) return (FALSE);
+  if (!KapaPrepPlot (kapa, Npts, &graphmode)) return (FALSE);
   
-  PlotVector (Npts, xvec[0].elements);
-  PlotVector (Npts, yvec[0].elements);
+  KapaPlotVector (kapa, Npts, xvec[0].elements, "x");
+  KapaPlotVector (kapa, Npts, yvec[0].elements, "y");
   if (graphmode.etype & 0x01) {
-    PlotVector (Npts, dymvec[0].elements);
-    PlotVector (Npts, dypvec[0].elements);
+    KapaPlotVector (kapa, Npts, dymvec[0].elements, "dym");
+    KapaPlotVector (kapa, Npts, dypvec[0].elements, "dyp");
   }
   if (graphmode.etype & 0x02) {
-    PlotVector (Npts, dxmvec[0].elements);
-    PlotVector (Npts, dxpvec[0].elements);
+    KapaPlotVector (kapa, Npts, dxmvec[0].elements, "dxm");
+    KapaPlotVector (kapa, Npts, dxpvec[0].elements, "dxp");
   }
-  
   return (TRUE);
-
 }
Index: trunk/Ohana/src/opihi/cmd.data/point.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/point.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/point.c	(revision 13479)
@@ -4,19 +4,22 @@
   
   int N, celestial, pixscale;
-  int Ximage, Nimage;
+  int kapa;
   double ra, dec, dra, ddec;
   double x1, y1, ra1, dec1;
+  char *name;
   Coords coords;
   Buffer *buf;
   KiiOverlay overlay;
+  KapaImageData data;
 
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
-  
+  if (!GetImageData (&data, &kapa, name)) return (FALSE);
+  FREE (name);
+
   celestial = FALSE;
   if ((N = get_argument (argc, argv, "-c"))) {
@@ -37,5 +40,5 @@
   
   if (celestial) {
-    if ((buf = SelectBuffer (GetImageName(), OLDBUFFER, TRUE)) == NULL) return (FALSE);
+    if ((buf = SelectBuffer (data.name, OLDBUFFER, TRUE)) == NULL) return (FALSE);
     GetCoords (&coords, &buf[0].header);
   }
@@ -66,5 +69,5 @@
   }
   overlay.type = KiiOverlayTypeByName (argv[2]);
-  KiiLoadOverlay (Ximage, &overlay, 1, argv[1]);
+  KiiLoadOverlay (kapa, &overlay, 1, argv[1]);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/ps.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/ps.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/ps.c	(revision 13479)
@@ -3,6 +3,6 @@
 int ps (int argc, char **argv) {
 
-  char filename[1024], pagename[1024];
-  int N, Source, Nsource, scaleMode, pageMode, IsImage;
+  char filename[1024], pagename[1024], *name;
+  int N, kapa, scaleMode, pageMode, IsImage;
   
   if ((N = get_argument (argc, argv, "--help"))) goto help;
@@ -44,35 +44,23 @@
 
   /* which tool */
-  Nsource = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nsource = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  /* which device */
-  if ((N = get_argument (argc, argv, "-g"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (FALSE);
-  }  
-  if ((N = get_argument (argc, argv, "-i"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (TRUE);
-  }  
-  
+
   if ((argc > 1) && filename[0]) goto help;
 
   if (argc > 1) strcpy (filename, argv[1]);
 
-  IsImage = GetCurrentDevice ();
-  if (IsImage) {
-    if (!GetImage (&Source, &Nsource)) return (FALSE);
-    if (!filename[0]) strcpy (filename, "Ximage.ps");
-  } else {
-    if (!GetGraph (NULL, &Source, &Nsource)) return (FALSE);
-    if (!filename[0]) strcpy (filename, "Xgraph.ps");
-  }
+  // get the connection to kapa, false if none available
+  if (!GetGraphData (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
+
+  if (!filename[0]) strcpy (filename, "kapa.ps");
   
   /* tell Ximage/Xgraph to ps the image */
-  KiiPS (Source, filename, scaleMode, pageMode, pagename);
+  KiiPS (kapa, filename, scaleMode, pageMode, pagename);
   return (TRUE);
 
Index: trunk/Ohana/src/opihi/cmd.data/rd.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/rd.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/rd.c	(revision 13479)
@@ -59,5 +59,8 @@
 
   /* find matrix, free old data */
-  if ((buf = SelectBuffer (argv[1], ANYBUFFER, TRUE)) == NULL) return (FALSE);
+  if ((buf = SelectBuffer (argv[1], ANYBUFFER, TRUE)) == NULL) {
+      fclose (f);
+      return (FALSE);
+  }
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
@@ -79,4 +82,5 @@
       gprint (GP_ERR, "entry in %s not found\n", argv[2]);
       DeleteBuffer (buf);
+      fclose (f);
       return (FALSE);
     }
@@ -99,4 +103,5 @@
 	DeleteBuffer (buf);
 	free (CCDKeyword);
+	fclose (f);
 	return (FALSE);
       }
@@ -105,4 +110,5 @@
 	DeleteBuffer (buf);
 	free (CCDKeyword);
+	fclose (f);
 	return (FALSE);
       }
@@ -143,4 +149,5 @@
     buf[0].header.bzero = 0;
     buf[0].header.bscale = 1;
+    fclose (f);
     return (TRUE);
   }
@@ -152,4 +159,5 @@
     gprint (GP_ERR, "-plane is too large: %d total planes\n", Nplane);
     DeleteBuffer (buf);
+    fclose (f);
     return (FALSE);
   }
Index: trunk/Ohana/src/opihi/cmd.data/resize.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/resize.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/resize.c	(revision 13479)
@@ -5,27 +5,16 @@
   char *end;
   double NX, NY;
-  int N, Source, Nsource, IsImage;
+  int N, kapa;
+  char *name;
   
   /* display source */
-  Nsource = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nsource = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if ((N = get_argument (argc, argv, "-g"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (FALSE);
-  }  
-  if ((N = get_argument (argc, argv, "-i"))) {
-    remove_argument (N, &argc, argv);
-    SetImageDevice (TRUE);
-  }  
-  IsImage = GetCurrentDevice ();
-  if (IsImage) {
-    if (!GetImage (&Source, &Nsource)) return (FALSE);
-  } else {
-    if (!GetGraph (NULL, &Source, &Nsource)) return (FALSE);
-  }
+  if (!GetImage (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
 
   if (argc != 3) {
@@ -49,5 +38,5 @@
   if (!strcmp (end, "cm")) { NY *= 38; }
 
-  KiiResize (Source, NX, NY);
+  KiiResize (kapa, NX, NY);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/save.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/save.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/save.c	(revision 13479)
@@ -4,13 +4,15 @@
   
   int N, celestial;
-  int Ximage, Nimage;
+  int kapa;
+  char *name;
   
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
+  if (!GetImage (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
 
   celestial = FALSE;
@@ -26,5 +28,5 @@
   }
 
-  KiiSaveOverlay (Ximage, celestial, argv[1], argv[2]);
+  KiiSaveOverlay (kapa, celestial, argv[1], argv[2]);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/section.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/section.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/section.c	(revision 13479)
@@ -1,29 +1,61 @@
 # include "data.h"
+
+enum {NONE, LIST, UP, DOWN, TOP, BOTTOM, TOOL};
 
 int section (int argc, char **argv) {
   
-  int N, List;
-  int Ngraph, Xgraph;
+  int N, action, kapa;
+  char *name, *location;
   Graphdata graphmode;
   KapaSection section;
 
-  List = FALSE;
+  action = NONE;
   if ((N = get_argument (argc, argv, "-list"))) {
+    action = LIST;
     remove_argument (N, &argc, argv);
-    List = TRUE;
+  }
+  if ((N = get_argument (argc, argv, "-up"))) {
+    action = UP;
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-down"))) {
+    action = DOWN;
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-top"))) {
+    action = TOP;
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-bottom"))) {
+    action = BOTTOM;
+    remove_argument (N, &argc, argv);
+  }
+  if ((N = get_argument (argc, argv, "-imtool"))) {
+    action = TOOL;
+    remove_argument (N, &argc, argv);
+    location = argv[N];
+    remove_argument (N, &argc, argv);
   }
 
-  Ngraph = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetGraph (&graphmode, &Xgraph, &Ngraph)) return (FALSE);
+  if (!GetGraph (&graphmode, &kapa, name)) return (FALSE);
+  FREE (name);
 
   /* list sections */
-  if (argc == 1) {
-    KapaGetSection (Xgraph, "*");
-    gprint (GP_ERR, "USAGE: section name [x y dx dy]\n");
+  if ((argc == 1) && (action == NONE)) {
+    KapaGetSection (kapa, "*");
+    gprint (GP_ERR, "USAGE: section name [x y dx dy] [options]\n");
+    gprint (GP_ERR, "OPTIONS: -list   : show properties of all sections\n");
+    gprint (GP_ERR, "         -up     : move section up in display stack\n");
+    gprint (GP_ERR, "         -down   : move section down in display stack\n");
+    gprint (GP_ERR, "         -top    : move section to top of display stack\n");
+    gprint (GP_ERR, "         -bottom : move section to bottom of display stack\n");
+    gprint (GP_ERR, "         -imtool (position) : set location of image zoom / status box\n");
+    gprint (GP_ERR, "                 (position may be: -x, +x, -y, +y, none)\n");
     return (TRUE);
   } 
@@ -31,8 +63,50 @@
   if (argc == 2) {
     /* select / show section */
-    if (List) {
-      KapaGetSection (Xgraph, argv[1]);
-    } else {
-      KapaSelectSection (Xgraph, argv[1]);
+    switch (action) {
+      case NONE:
+	KapaSelectSection (kapa, argv[1]);
+	break;
+
+      case UP:
+	KapaMoveSection (kapa, argv[1], "up");
+	break;
+      case DOWN:
+	KapaMoveSection (kapa, argv[1], "down");
+	break;
+      case TOP:
+	KapaMoveSection (kapa, argv[1], "top");
+	break;
+      case BOTTOM:
+	KapaMoveSection (kapa, argv[1], "bottom");
+	break;
+
+      case TOOL:
+	if (!strcmp(location, "-x")) {
+	  KapaSetToolbox (kapa, 1);
+	  break;
+	}
+	if (!strcmp(location, "+x")) {
+	  KapaSetToolbox (kapa, 3);
+	  break;
+	}
+	if (!strcmp(location, "-y")) {
+	  KapaSetToolbox (kapa, 2);
+	  break;
+	}
+	if (!strcmp(location, "+y")) {
+	  KapaSetToolbox (kapa, 4);
+	  break;
+	}
+	if (!strcmp(location, "none")) {
+	  KapaSetToolbox (kapa, 0);
+	  break;
+	}
+	gprint (GP_ERR, "unknown toolbox location %s\n", location);
+	gprint (GP_ERR, "valid values: -x, +x, -y, +y, none\n");
+	return (FALSE);
+
+      case LIST:
+	KapaGetSection (kapa, argv[1]);
+	break;
     }
     return (TRUE);
@@ -46,8 +120,9 @@
     section.dx = atof (argv[4]);
     section.dy = atof (argv[5]);
-    KapaSetSection (Xgraph, &section);
+    KapaSetSection (kapa, &section);
     return (TRUE);
   }
   gprint (GP_ERR, "USAGE: section name [x y dx dy]\n");
+  gprint (GP_ERR, "USAGE: section name [-list] [-up] [-down] [-top] [-bottom]\n");
   return (FALSE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/style.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/style.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/style.c	(revision 13479)
@@ -3,7 +3,8 @@
 int style (int argc, char **argv) {
   
-  Graphdata graphmode;
+  int kapa;
+  Graphdata data;
 
-  if (!style_args (&graphmode, &argc, argv, -1)) return FALSE;
+  if (!style_args (&data, &argc, argv, &kapa)) return FALSE;
 
   if (argc > 1) {
@@ -11,5 +12,5 @@
     return (FALSE);
   }
-  SetGraph (graphmode);
+  KapaSetGraphData (kapa, &data);
 
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/textline.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/textline.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/textline.c	(revision 13479)
@@ -6,14 +6,8 @@
   char name[64];
   double x, y, angle;
-  int Ngraph, Xgraph;
+  int kapa;
   Graphdata graphmode;
 
-  Ngraph = -1;
-  if ((N = get_argument (argc, argv, "-n"))) {
-    remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if (!GetGraph (&graphmode, &Xgraph, &Ngraph)) return (FALSE);
+  if (!style_args (&graphmode, &argc, argv, &kapa)) return (FALSE);
 
   if ((N = get_argument (argc, argv, "-fn"))) {
@@ -23,5 +17,5 @@
     size = atof (argv[N]);
     remove_argument (N, &argc, argv);
-    KapaSetFont (Xgraph, name, size);
+    KapaSetFont (kapa, name, size);
   } 
 
@@ -58,5 +52,5 @@
   }    
 
-  KapaSendTextline (Xgraph, argv[3], x, y, angle);
+  KapaSendTextline (kapa, argv[3], x, y, angle);
   return (TRUE);
 }
Index: trunk/Ohana/src/opihi/cmd.data/tv.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/tv.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/tv.c	(revision 13479)
@@ -3,31 +3,33 @@
 int tv (int argc, char **argv) {
   
-  int N, Ximage, Nimage;
+  int N, kapa;
+  char *name, *file;
   Coords coords;
   Buffer *buf;
   KiiImage image;
-  KiiDisplayMode mode;
+  KapaImageData data;
 
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
+  if (!GetImage (&data, &kapa, name)) return (FALSE);
+  FREE (name);
 
   /* shell exits on pipe close, FIX */
   if ((N = get_argument (argc, argv, "-kill"))) {
-    KiiClose (Ximage);
-    Ximage = 0;
+    KiiClose (kapa);
     return (TRUE);
   }
 
-  mode.logflux = FALSE;
+  data.logflux = FALSE;
   if ((N = get_argument (argc, argv, "-log"))) {
     remove_argument (N, &argc, argv);
-    mode.logflux = TRUE;
+    data.logflux = TRUE;
   }
 
+  // use the currently-set zero,range values if not supplied
   if ((argc != 2) && (argc != 4)) {
     gprint (GP_ERR, "USAGE: tv <buffer> [zero range] [-n Nimage] [-log] [-kill]\n");
@@ -35,10 +37,8 @@
   }
 
-  GetImageScale (&mode.zero, &mode.range);
   if (argc == 4) {
-    mode.zero = atof (argv[2]);
-    mode.range = atof (argv[3]);
-    if (mode.range == 0.0) mode.range = 0.001;
-    SetImageScale (mode.zero, mode.range);
+    data.zero = atof (argv[2]);
+    data.range = atof (argv[3]);
+    if (data.range == 0.0) data.range = 0.001;
   }
 
@@ -49,89 +49,15 @@
   image.Nx = buf[0].matrix.Naxis[0];
   image.Ny = buf[0].matrix.Naxis[1];
-  image.file = buf[0].file;
-  image.name = buf[0].name;
 
-  KiiNewPicture1D (Ximage, &image, &mode, &coords);
+  // send only the root of the file, not the full path
+  file = filerootname (buf[0].file);
+  strcpy (data.file, file);
+  free (file);
 
-  SetImageName (argv[1]);
+  strcpy (data.name, argv[1]);
+  
+  KiiNewPicture1D (kapa, &image, &data, &coords);
+
   set_str_variable ("TV", argv[1]);
   return (TRUE);
 }
-
-
-/* 
-projections and coordinates:
-
-IRAS:
-CTYPE1  = 'LL      '                    /TANGENT PLANE (L)                     
-CRVAL1  =         0.100000D+02          /R.A. OF MAP CENTER  *** SEE COMMENT   
-CDELT1  =        -0.133333D-01          /SEPARATION IN L (DEG)                 
-CRPIX1  =                  128          /MAPCENTER IN L                        
-CROTA1  =         0.000000E+00          /NO ROTATION            
-                                                                               
-CTYPE2  = 'MM      '                    /TANGENT PLANE (M)                     
-CRVAL2  =         0.410000D+02          /DEC. OF MAP CENTER  *** SEE COMMENT   
-CDELT2  =         0.133333D-01          /SEPARATION IN M (DEG)                 
-CRPIX2  =                  128          /MAP CENTER IN M                       
-CROTA2  =         0.000000E+00          /NO ROTATION                           
-
-HIRAS:
-CTYPE1  = 'RA---TAN          ' / PRIMARY AXIS NAME                             
-CRVAL1  =   1.000000000000E+01 / PRIMARY REFERENCE VALUE                       
-CDELT1  =  -5.555555555556E-03 / PRIMARY PIXEL SEPARATION                      
-CRPIX1  =   2.560000000000E+02 / PRIMARY REFERENCE PIXEL                       
-CUNIT1  = 'DEGREE            ' / PRIMARY AXIS UNITS                            
-
-CDELT2  =   5.555555555556E-03 / PRIMARY PIXEL SEPARATION                      
-CRPIX2  =   2.560000000000E+02 / PRIMARY REFERENCE PIXEL                       
-CRVAL2  =   4.100000000000E+01 / PRIMARY REFERENCE VALUE                       
-CTYPE2  = 'DEC--TAN          ' / PRIMARY AXIS NAME                             
-CUNIT2  = 'DEGREE            ' / PRIMARY AXIS UNITS                            
-
-PROJTYPE= 'GNOMON    '                                                         
-COORDSYS= 'EQUATORIAL     '                                                    
-
-gene (small FOV linear):
-RA_O
-RA_X 
-RA_Y 
-DEC_O
-DEC_X
-DEC_Y
-
-
-*/
-
-# ifdef NEWTVMODE  
-  {
-    double *pixvalues, slope;
-
-    ALLOCATE (pixvalues, double, Ncolors + 1);
-    range = fabs (range);
-    for (i = 0; i < Ncolors + 1; i++) {
-      if (ISLOG) {
-	pixvalues[i] = i*range / NNcol + zero;
-      }
-      if (!ISLOG) {
-	pixvalues[i] = pow (10.0, i*log10(range - 1.0) / NNcol) + zero - 1.0;
-      }      
-    } 
-    for (j = 0; j < Npix; j++, in++, out++) {
-      if (*in < pixvalues[0]) {
-	i = 0;
-      } else {
-	if (*in > pixvalues[NNcol]) {
-	  i = NNcol;
-	} else {
-	  for (i = 0; (*in < pixvalues[i]) || (*in > pixvalues[i+1]); ) {
-	    slope = 1.0 / (pixvalues[i+1] - pixvalues[i]);
-	    i = MIN (MAX (0, i + (*in - pixvalues[i]) * slope), NNcol);
-	  }
-	}	
-      }
-      /* for (i = 0; (i < Ncolors - 1) && (pixvalues[i] < *in); i++); */
-      *out = i;
-    }
-    free (pixvalues);
-  }
-# endif
Index: trunk/Ohana/src/opihi/cmd.data/tvcontour.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/tvcontour.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/tvcontour.c	(revision 13479)
@@ -58,15 +58,17 @@
   float *v00, *v01, *v10, *v11;
   float *Vout, *Vin, *matrix;
-  int Ximage, Nimage, N, Noverlay, NOVERLAY;
+  char *name;
+  int kapa, N, Noverlay, NOVERLAY;
   Buffer *buf;
   KiiOverlay *overlay;
   
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
+  if (!GetImage (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
 
   if ((argc != 4) && (argc != 5)) {
@@ -277,5 +279,5 @@
   }
   
-  KiiLoadOverlay (Ximage, overlay, Noverlay, argv[2]);
+  KiiLoadOverlay (kapa, overlay, Noverlay, argv[2]);
   free (overlay);
 
Index: trunk/Ohana/src/opihi/cmd.data/tvgrid.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/tvgrid.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/tvgrid.c	(revision 13479)
@@ -11,16 +11,18 @@
   char format[16];
   Coords coords;
-  int Ximage, Nimage, N, Noverlay, NOVERLAY;
+  int kapa, N, Noverlay, NOVERLAY;
+  char *name;
   Buffer *buf;
   KiiOverlay *overlay;
 
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
-  
+  if (!GetImage (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
+
   if (argc != 3) {
     gprint (GP_ERR, "USAGE: tvgrid (overlay) (buffer)\n");
@@ -144,25 +146,5 @@
   }
 
-  # if (0)
-  /* write the labels on the axes */
-  dDEC = fabs(dec1 - dec0) / 100;
-  for (ra = dRA * ((int)(MIN(ra0, ra1)/dRA) + 1); ra < MAX(ra0, ra1); ra += dRA) {
-    RD_to_XY (&x0, &y0, ra + 0.1*dRA, MIN(dec0, dec1), &coords);
-    sprintf (label, format, ra);
-    sprintf (buffer, "%15s %20.10f %20.10f %20.10f %20.10f ", "TEXT", x0, y0, (double)(strlen(label) + 1), 0.0);
-    write (Ximage, buffer, 128);
-    write (Ximage, label, strlen(label) + 1);
-    RD_to_XY (&x0, &y0, ra, MIN(dec0, dec1), &coords);
-    for (dec = MIN(dec0, dec1) + dDEC; dec < MAX(dec0,dec1); dec += dDEC) {
-      RD_to_XY (&x1, &y1, ra, dec, &coords);
-      sprintf (buffer, "%15s %20.10f %20.10f %20.10f %20.10f ", "LINE", x0, y0, (x1 - x0), (y1 - y0));
-      write (Ximage, buffer, 128);
-      x0 = x1;
-      y0 = y1;
-    }
-  }
-  # endif
-
-  KiiLoadOverlay (Ximage, overlay, Noverlay, argv[1]);
+  KiiLoadOverlay (kapa, overlay, Noverlay, argv[1]);
   free (overlay);
 
Index: trunk/Ohana/src/opihi/cmd.data/vload.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/vload.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/vload.c	(revision 13479)
@@ -4,16 +4,18 @@
   
   int i, N, Noverlay;
-  int Ximage, Nimage, type;
+  int kapa, type;
+  char *name;
   double dx, dy, size;
   KiiOverlay *overlay;
   Vector *vecx, *vecy;
   
-  Nimage = -1;
+  name = NULL;
   if ((N = get_argument (argc, argv, "-n"))) {
     remove_argument (N, &argc, argv);
-    Nimage = atof (argv[N]);
+    name = strcreate (argv[N]);
     remove_argument (N, &argc, argv);
   }
-  if (!GetImage (&Ximage, &Nimage)) return (FALSE);
+  if (!GetImage (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
 
   type = KII_OVERLAY_BOX;
@@ -65,5 +67,5 @@
   }
 
-  KiiLoadOverlay (Ximage, overlay, Noverlay, argv[1]);
+  KiiLoadOverlay (kapa, overlay, Noverlay, argv[1]);
   free (overlay);
   return (TRUE);
Index: trunk/Ohana/src/opihi/cmd.data/zplot.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/zplot.c	(revision 13107)
+++ trunk/Ohana/src/opihi/cmd.data/zplot.c	(revision 13479)
@@ -3,5 +3,5 @@
 int zplot (int argc, char **argv) {
   
-  int i, N, Npts, Ngraph;
+  int i, kapa, N, Npts;
   float *in, *out;
   double min, range;
@@ -9,11 +9,5 @@
   Vector *xvec, *yvec, *zvec, Zvec;
 
-  Ngraph = -1;
-  if ((N = get_argument (argc, argv, "-n"))) {
-    remove_argument (N, &argc, argv);
-    Ngraph = atof (argv[N]);
-    remove_argument (N, &argc, argv);
-  }
-  if (!GetGraph (&graphmode, NULL, &Ngraph)) return (FALSE);
+  if (!style_args (&graphmode, &argc, argv, &kapa)) return (FALSE);
 
   if (argc != 6) {
@@ -51,9 +45,5 @@
   graphmode.etype = 0; /* no errorbars */
   Npts = xvec[0].Nelements;
-  PrepPlotting (Npts, &graphmode);
-
-  PlotVector (Npts, xvec[0].elements);
-  PlotVector (Npts, yvec[0].elements);
-  PlotVector (Npts, Zvec.elements);
+  PlotVectorTriplet (kapa, Npts, xvec[0].elements, yvec[0].elements, Zvec.elements, &graphmode);
 
   free (Zvec.elements);
