Index: trunk/Ohana/src/opihi/cmd.data/load.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/load.c	(revision 4689)
+++ trunk/Ohana/src/opihi/cmd.data/load.c	(revision 5846)
@@ -3,13 +3,14 @@
 int load (int argc, char **argv) {
   
-  int N, n, Nline, ISCEL;
-  int Ximage, Nimage;
-  char *c, type[10], string[128];
+  int i, N, n, ISCEL;
+  int Ximage, Nimage, 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, *line;
+  char *buffer;
   Coords coords;
   Buffer *buf;
+  KiiOverlay *overlay;
   
   Nimage = -1;
@@ -33,6 +34,4 @@
   }
   
-  if (!SelectOverlay (argv[1], &n)) return (FALSE);
-
   if (!strcmp (argv[2], "-")) {
     f = stdin;
@@ -50,12 +49,11 @@
   }
 
+  Noverlay = 0;
+  NOVERLAY = 1000;
+  ALLOCATE (overlay, KiiOverlay, NOVERLAY);
+
   ALLOCATE (buffer, char, 65536);  /* space for 512 lines of 128 bytes */
   bzero (buffer, 65536);
-  ALLOCATE (line, char, 1024);     /* space to read the file */
-  Nline = 0;
 
-  SendGraphCommand (Ximage, 4, "LOAD");
-  SendGraphCommand (Ximage, 16, "OVER %9d ", n);
-  
   dx = dy = 0;
   for (n = 0; scan_line (f, line) != EOF;) {
@@ -81,5 +79,5 @@
     case 3:
       if (strcmp (type, "TEXT")) {
-	fprintf (stderr, "syntactical error in line:\n   %s\n", line);
+	fprintf (stderr, "syntax error in line:\n   %s\n", line);
 	continue;
       }
@@ -113,26 +111,28 @@
       }
     }
-    if (!strcmp (type, "TEXT")) {
-      snprintf (&buffer[Nline*128], 128, "%15s %20.10f %20.10f %s ", type, x, y, string);
+    overlay[Noverlay].type = KiiOverlayTypeByName (type);
+    if (overlay[Noverlay].type == KII_OVERLAY_TEXT) {
+      overlay[Noverlay].text = strcreate (string);
     } else {
-      snprintf (&buffer[Nline*128], 128, "%15s %20.10f %20.10f %20.10f %20.10f ", type, x, y, dx, dy);
+      overlay[Noverlay].text = NULL;
     }
-    n++;
-    Nline ++;
-    if (Nline == 512) {
-      SendGraphCommand (Ximage, 16, "NLINES  %7d ", Nline);
-      write (Ximage, buffer, Nline*128);
-      bzero (buffer, 65536);
-      Nline = 0;
-    }
+    overlay[Noverlay].x = x;
+    overlay[Noverlay].y = y;
+    overlay[Noverlay].dx = dx;
+    overlay[Noverlay].dy = dy;
+    Noverlay++;
+    CHECK_REALLOCATE (overlay, KiiOverlay, NOVERLAY, Noverlay, 1000);
   }
 
-  SendGraphCommand (Ximage, 16, "NLINES  %7d ", Nline);
-  write (Ximage, buffer, Nline*128);
-  SendGraphCommand (Ximage, 16, "DONE");
+  KiiLoadOverlay (Ximage, overlay, Noverlay, argv[1]);
 
-  free (buffer);
-  free (line);
-  fprintf (stderr, "loaded %d objects\n", n);
+  for (i = 0; i < Noverlay; i++) {
+    if (overlay[i].text == NULL) continue;
+    free (overlay[i].text);
+  }
+  free (overlay);
+
+  fprintf (stderr, "loaded %d objects\n", Noverlay);
+
   if (f != stdin) {
     fclose (f);
