Index: trunk/Ohana/src/opihi/dvo/cmpload.c
===================================================================
--- trunk/Ohana/src/opihi/dvo/cmpload.c	(revision 4689)
+++ trunk/Ohana/src/opihi/dvo/cmpload.c	(revision 5846)
@@ -6,5 +6,5 @@
 int cmpload (int argc, char **argv) {
   
-  int i, nstar, N, Nin, Nout, Nextra, n, Type, type;
+  int i, Noverlay, N, Nin, Nextra, n, Objtype, type;
   int doneread, done, Nskip, Nbytes, nbytes, Ninstar;
   char *c, *c2;
@@ -15,4 +15,5 @@
   int Ximage, Nimage;
   Header header;
+  KiiOverlay *overlay;
   
   Nimage = -1;
@@ -24,18 +25,15 @@
   if (!GetImage (&Ximage, &Nimage)) return (FALSE);
 
-  Type = 0;
+  Objtype = 0;
   if ((N = get_argument (argc, argv, "-t"))) {
     remove_argument (N, &argc, argv);
-    Type = atof (argv[N]);
+    Objtype = atof (argv[N]);
     remove_argument (N, &argc, argv);
   }
 
   if (argc != 3) {
-    fprintf (stderr, "USAGE: load (overlay) <filename>\n");
+    fprintf (stderr, "USAGE: cmpload (overlay) <filename>\n");
     return (FALSE);
   }
-
-  if (!SelectOverlay (argv[1], &n)) 
-    return (FALSE);
 
   if (!fits_read_header (argv[2], &header)) {
@@ -60,8 +58,8 @@
   fseek (f, header.size, SEEK_SET); 
 
-  ALLOCATE (X, double, nstar);
-  ALLOCATE (Y, double, nstar);
-  ALLOCATE (M, double, nstar);
-
+  Noverlay = 0;
+  NOVERLAY = 1000;
+  ALLOCATE (overlay, KiiOverlay, Noverlay);
+  
   /* load in stars by blocks of 1000 */
   Nin = 0;
@@ -106,48 +104,39 @@
     Ninstar = nbytes / BYTES_STAR;
     Nextra = nbytes % BYTES_STAR;
-    for (i = 0; i < Ninstar; i++, Nin++) {
-      dparse (&X[Nin],  1, &buffer[i*BYTES_STAR]);
-      dparse (&Y[Nin],  2, &buffer[i*BYTES_STAR]);
-      dparse (&M[Nin],  3, &buffer[i*BYTES_STAR]);
-      if (Type) {
+    for (i = 0; i < Ninstar; i++) {
+      if (Objtype) {
 	dparse (&dtmp, 5, &buffer[i*BYTES_STAR]);
 	type = dtmp;
-	if (type != Type) {
-	  Nin --;
-	}
+	if (type != Objtype) continue;
       }
+      # if (0)
+      if (scale) {
+	dparse (&mag,  3, &buffer[i*BYTES_STAR]);
+	overlay[Noverlay].dx = mzero + mscale * mag;
+	overlay[Noverlay].dy = mzero + mscale * mag;
+      } else {
+	overlay[Noverlay].dx = 5.0;
+	overlay[Noverlay].dy = 5.0;
+      }      
+      # endif 
+
+      dparse (&overlay[Noverlay].x,  1, &buffer[i*BYTES_STAR]);
+      dparse (&overlay[Noverlay].y,  2, &buffer[i*BYTES_STAR]);
+      overlay[Noverlay].type = KII_OVERLAY_BOX;
+      overlay[Noverlay].dx = 5.0;
+      overlay[Noverlay].dy = 5.0;
+      Noverlay ++;
+      CHECK_REALLOCATE (overlay, KiiOverlay, NOVERLAY, Noverlay, 1000);
     }
   }
   fclose (f);
 
-  SendGraphCommand (Ximage, 4, "LOAD");
-  SendGraphCommand (Ximage, 16, "OVER %9d ", n);
-  ALLOCATE (buffer2, char, 66000);
-  bzero (buffer2, 65536);
-
-  for (Nout = i = 0; i < Nin; i++, Nout++) {
-    sprintf (&buffer2[Nout*128], "%15s %20.10f %20.10f %20.10f %20.10f ", "BOX", X[i], Y[i], 5.0, 5.0);
-    if (Nout == 512) {
-      SendGraphCommand (Ximage, 16, "NLINES  %7d ", Nout);
-      write (Ximage, buffer2, Nout*128);
-      bzero (buffer2, 65536);
-      Nout = -1;
-    }
-  }
-
-  if (Nout) {
-    SendGraphCommand (Ximage, 16, "NLINES  %7d ", Nout);
-    write (Ximage, buffer2, Nout*128);
-  }
-  SendGraphCommand (Ximage, 16, "DONE");
+  KiiLoadOverlay (Ximage, overlay, Noverlay, argv[1]);
+  free (overlay);
 
   fits_free_header (&header);
-  free (X);
-  free (Y);
-  free (M);
   free (buffer);
-  free (buffer2);
 
-  fprintf (stderr, "loaded %d objects\n", Nin);
+  fprintf (stderr, "loaded %d objects\n", Noverlay);
   return (TRUE);
 }
