Changeset 15620
- Timestamp:
- Nov 15, 2007, 9:29:21 AM (18 years ago)
- Location:
- trunk/Ohana/src
- Files:
-
- 7 edited
-
kapa2/src/LoadOverlay.c (modified) (1 diff)
-
kapa2/src/PSOverlay.c (modified) (1 diff)
-
kapa2/src/PaintOverlay.c (modified) (4 diffs)
-
kapa2/src/bDrawOverlay.c (modified) (1 diff)
-
libkapa/include/kapa.h (modified) (2 diffs)
-
libkapa/src/KiiOverlay.c (modified) (3 diffs)
-
opihi/cmd.data/point.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/kapa2/src/LoadOverlay.c
r14590 r15620 75 75 j = image[0].overlay[overnum].Nobjects; 76 76 for (i = 0; i < Noverlay; i++, j++) { 77 image[0].overlay[overnum].objects[j].x = overlay[i].x; 78 image[0].overlay[overnum].objects[j].y = overlay[i].y; 79 image[0].overlay[overnum].objects[j].dx = overlay[i].dx; 80 image[0].overlay[overnum].objects[j].dy = overlay[i].dy; 81 image[0].overlay[overnum].objects[j].type = overlay[i].type; 82 image[0].overlay[overnum].objects[j].text = NULL; 77 image[0].overlay[overnum].objects[j].x = overlay[i].x; 78 image[0].overlay[overnum].objects[j].y = overlay[i].y; 79 image[0].overlay[overnum].objects[j].dx = overlay[i].dx; 80 image[0].overlay[overnum].objects[j].dy = overlay[i].dy; 81 image[0].overlay[overnum].objects[j].angle = overlay[i].angle; 82 image[0].overlay[overnum].objects[j].type = overlay[i].type; 83 image[0].overlay[overnum].objects[j].text = NULL; 83 84 } 84 85 -
trunk/Ohana/src/kapa2/src/PSOverlay.c
r13479 r15620 58 58 break; 59 59 } 60 // XXX add in the rotated ellipse version (rotate in PS space) 60 61 fprintf (f, " %6.1f %6.1f %6.1f C\n", X, Y, fabs(dX + extra)); 61 62 break; -
trunk/Ohana/src/kapa2/src/PaintOverlay.c
r13479 r15620 5 5 int i; 6 6 int dX, dY, dx, dy; 7 int X, Y, Xmin, Ymin, Xmax, Ymax, Xrange, Yrange;8 double expand, X0, Y0;7 int x, y, X, Y, Xmin, Ymin, Xmax, Ymax, Xrange, Yrange; 8 double t, expand, X0, Y0; 9 9 10 10 XSetForeground (graphic[0].display, graphic[0].gc, image[0].overlay[N].color); … … 43 43 switch (image[0].overlay[N].objects[i].type) { 44 44 case KII_OVERLAY_LINE: 45 // the angle makes no sense for a line... 45 46 XDrawLine (graphic[0].display, graphic[0].window, graphic[0].gc, X, Y, (X+dX), (Y+dY)); 46 47 break; 47 48 case KII_OVERLAY_TEXT: 49 // XXX currently we ignore the rectangle angle 48 50 XDrawString (graphic[0].display, graphic[0].window, graphic[0].gc, X, Y, image[0].overlay[N].objects[i].text, strlen(image[0].overlay[N].objects[i].text)); 49 51 break; … … 51 53 dx = MAX (abs(dX),2) / 2; 52 54 dy = MAX (abs(dY),2) / 2; 55 // XXX currently we ignore the rectangle angle 53 56 XDrawRectangle (graphic[0].display, graphic[0].window, graphic[0].gc, (X - dx), (Y - dy), 2*dx, 2*dy); 54 57 break; … … 56 59 dx = MAX (abs(dX),2); 57 60 dy = MAX (abs(dY),2); 58 XDrawArc (graphic[0].display, graphic[0].window, graphic[0].gc, (X - dx), (Y - dy), 2*dx, 2*dy, 0, 23040); 61 if (image[0].overlay[N].objects[i].angle == 0.0) { 62 XDrawArc (graphic[0].display, graphic[0].window, graphic[0].gc, (X - dx), (Y - dy), 2*dx, 2*dy, 0, 23040); 63 } else { 64 // very stupid rotate ellipse drawing: 65 double angle = image[0].overlay[N].objects[i].angle * RAD_DEG; 66 double cs = cos(angle); 67 double sn = sin(angle); 68 // XXX dt should be based on the size of the ellipse... 69 for (t = 0; t < 2*M_PI; t+=0.05) { 70 x = X + dx*cos(t)*cs + dy*sin(t)*sn; 71 y = Y - dx*cos(t)*sn + dy*sin(t)*cs; 72 XDrawPoint (graphic[0].display, graphic[0].window, graphic[0].gc, x, y); 73 } 74 } 59 75 break; 60 76 default: -
trunk/Ohana/src/kapa2/src/bDrawOverlay.c
r13479 r15620 72 72 dx = MAX (abs(dX),2); 73 73 dy = MAX (abs(dY),2); 74 bDrawArc (X, Y, dx, dy, 0, 360); 74 if (image[0].overlay[N].objects[i].angle == 0.0) { 75 bDrawArc (X, Y, dx, dy, 0, 360); 76 } else { 77 // very stupid rotate ellipse drawing: 78 double x, y, t; 79 double angle = image[0].overlay[N].objects[i].angle * RAD_DEG; 80 double cs = cos(angle); 81 double sn = sin(angle); 82 // XXX dt should be based on the size of the ellipse... 83 for (t = 0; t < 2*M_PI; t+=0.05) { 84 x = X + dx*cos(t)*cs + dy*sin(t)*sn; 85 y = Y - dx*cos(t)*sn + dy*sin(t)*cs; 86 bDrawPoint (x, y); 87 } 88 } 75 89 break; 76 90 default: -
trunk/Ohana/src/libkapa/include/kapa.h
r14590 r15620 27 27 float dx; 28 28 float dy; 29 float angle; 29 30 int type; 30 31 } KiiOverlayBase; … … 35 36 float dx; 36 37 float dy; 38 float angle; 37 39 int type; 38 40 char *text; -
trunk/Ohana/src/libkapa/src/KiiOverlay.c
r14590 r15620 50 50 } 51 51 52 int KiiLoadOverlayOld (int fd, KiiOverlay *overlay, int Noverlay, char *overname) {53 54 int i, n, Nline;55 char *buffer, *type;56 57 KiiSelectOverlay (overname, &n);58 59 KiiSendCommand (fd, 4, "LOAD");60 KiiSendCommand (fd, 16, "OVER %9d ", n);61 62 Nline = 0;63 ALLOCATE (buffer, char, 65536); /* space for 512 lines of 128 bytes */64 bzero (buffer, 65536);65 66 for (i = 0; i < Noverlay; i++) {67 type = KiiOverlayTypeByNumber(overlay[i].type);68 if (overlay[i].type == KII_OVERLAY_TEXT) {69 snprintf (&buffer[Nline*128], 128, "%15s %20.10f %20.10f %s ", type, overlay[i].x, overlay[i].y, overlay[i].text);70 } else {71 snprintf (&buffer[Nline*128], 128, "%15s %20.10f %20.10f %20.10f %20.10f ", type, overlay[i].x, overlay[i].y, overlay[i].dx, overlay[i].dy);72 }73 Nline ++;74 if (Nline == 512) {75 KiiSendCommand (fd, 16, "NLINES %7d ", Nline);76 write (fd, buffer, Nline*128);77 bzero (buffer, 65536);78 Nline = 0;79 }80 }81 KiiSendCommand (fd, 16, "NLINES %7d ", Nline);82 write (fd, buffer, Nline*128);83 KiiSendCommand (fd, 16, "DONE 0");84 85 free (buffer);86 KiiWaitAnswer (fd, "DONE");87 88 /* this is very inefficient: 128 bytes per object vs 17 as binary, plus the89 conversions back and forth90 */91 92 return (TRUE);93 }94 95 52 int KiiLoadOverlay (int fd, KiiOverlay *overlay, int Noverlay, char *overname) { 96 53 … … 109 66 ALLOCATE (buffer, KiiOverlayBase, Noverlay); 110 67 for (i = 0; i < Noverlay; i++) { 111 buffer[i].x = overlay[i].x; 112 buffer[i].y = overlay[i].y; 113 buffer[i].dx = overlay[i].dx; 114 buffer[i].dy = overlay[i].dy; 115 buffer[i].type = overlay[i].type; 68 buffer[i].x = overlay[i].x; 69 buffer[i].y = overlay[i].y; 70 buffer[i].dx = overlay[i].dx; 71 buffer[i].dy = overlay[i].dy; 72 buffer[i].angle = overlay[i].angle; 73 buffer[i].type = overlay[i].type; 116 74 if (buffer[i].type == KII_OVERLAY_TEXT) { 117 75 Ntext ++; … … 131 89 // we could break this into segments if we want to trap an interrupt, but why bother? 132 90 Nchar = write (fd, buffer, Noverlay*sizeof(KiiOverlayBase)); 133 fprintf (stderr, "sent %d of %ld bytes\n", Nchar, Noverlay*sizeof(KiiOverlayBase));134 91 KiiWaitAnswer (fd, "DONE"); 135 92 -
trunk/Ohana/src/opihi/cmd.data/point.c
r13479 r15620 5 5 int N, celestial, pixscale; 6 6 int kapa; 7 double ra, dec, dra, ddec ;7 double ra, dec, dra, ddec, angle; 8 8 double x1, y1, ra1, dec1; 9 9 char *name; … … 32 32 remove_argument (N, &argc, argv); 33 33 pixscale = TRUE; 34 } 35 36 angle = 0.0; 37 if ((N = get_argument (argc, argv, "-angle"))) { 38 remove_argument (N, &argc, argv); 39 angle = atof(argv[N]); 40 remove_argument (N, &argc, argv); 34 41 } 35 42 … … 68 75 overlay.dy = atof(argv[6]); 69 76 } 77 overlay.angle = angle; 70 78 overlay.type = KiiOverlayTypeByName (argv[2]); 71 79 KiiLoadOverlay (kapa, &overlay, 1, argv[1]);
Note:
See TracChangeset
for help on using the changeset viewer.
