IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 15, 2007, 9:29:21 AM (19 years ago)
Author:
eugene
Message:

support for rotated ellipses in kapa overlays

Location:
trunk/Ohana/src/kapa2/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/kapa2/src/LoadOverlay.c

    r14590 r15620  
    7575  j = image[0].overlay[overnum].Nobjects;
    7676  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;
    8384  }
    8485
  • trunk/Ohana/src/kapa2/src/PSOverlay.c

    r13479 r15620  
    5858          break;
    5959        }
     60        // XXX add in the rotated ellipse version (rotate in PS space)
    6061        fprintf (f, " %6.1f %6.1f %6.1f C\n", X, Y, fabs(dX + extra));
    6162        break;
  • trunk/Ohana/src/kapa2/src/PaintOverlay.c

    r13479 r15620  
    55  int i;
    66  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;
    99 
    1010  XSetForeground (graphic[0].display, graphic[0].gc, image[0].overlay[N].color);
     
    4343    switch (image[0].overlay[N].objects[i].type) {
    4444      case KII_OVERLAY_LINE:
     45        // the angle makes no sense for a line...
    4546        XDrawLine (graphic[0].display, graphic[0].window, graphic[0].gc, X, Y, (X+dX), (Y+dY));
    4647        break;
    4748      case KII_OVERLAY_TEXT:
     49        // XXX currently we ignore the rectangle angle
    4850        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));
    4951        break;
     
    5153        dx = MAX (abs(dX),2) / 2;
    5254        dy = MAX (abs(dY),2) / 2;
     55        // XXX currently we ignore the rectangle angle
    5356        XDrawRectangle (graphic[0].display, graphic[0].window, graphic[0].gc, (X - dx), (Y - dy), 2*dx, 2*dy);
    5457        break;
     
    5659        dx = MAX (abs(dX),2);
    5760        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        }
    5975        break;
    6076      default:
  • trunk/Ohana/src/kapa2/src/bDrawOverlay.c

    r13479 r15620  
    7272        dx = MAX (abs(dX),2);
    7373        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        }
    7589        break;
    7690      default:
Note: See TracChangeset for help on using the changeset viewer.