IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 40927


Ignore:
Timestamp:
Oct 8, 2019, 9:18:09 PM (7 years ago)
Author:
eugene
Message:

add general polygon and polyfill functions

Location:
branches/eam_branches/ohana.20190329/src/kapa2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ohana.20190329/src/kapa2/include/prototypes.h

    r40782 r40927  
    3939void          DrawTextlines       PROTO((KapaGraphWidget *graph));
    4040void          DrawConnect         PROTO((Graphic *graphic, KapaGraphWidget *graph, Gobjects *objects));
     41void          DrawPolygon         PROTO((Graphic *graphic, KapaGraphWidget *graph, Gobjects *objects));
     42void          DrawPolyfill        PROTO((Graphic *graphic, KapaGraphWidget *graph, Gobjects *objects));
    4143void          DrawHistogram       PROTO((Graphic *graphic, KapaGraphWidget *graph, Gobjects *objects));
    4244int           DrawObjectN         PROTO((Graphic *graphic, KapaGraphWidget *graph, Gobjects *objects));
     
    150152void          bDrawBars           PROTO((bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object, int mode));
    151153void          bDrawPoints         PROTO((bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object));
     154void          bDrawPolygons       PROTO((bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object));
     155void          bDrawFillPolygons   PROTO((bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object));
    152156void          bDrawXErrors        PROTO((bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object));
    153157void          bDrawYErrors        PROTO((bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object));
  • branches/eam_branches/ohana.20190329/src/kapa2/include/structures.h

    r40731 r40927  
    133133} Overlay;
    134134 
    135 typedef struct {
    136   float *x, *y, *z, *dxp, *dxm, *dyp, *dym;
    137   int Npts;
    138   int style, ptype, ltype, color, etype, ebar;
    139   double lweight, size;
     135// a set of objects all have the same basic properties
     136typedef struct {
     137  float *x; // x-coordinates of the points
     138  float *y; // y-coordinates of the points
     139  float *z; // size/colorscale for points
     140  float *dxp; // lower-errorbar in x
     141  float *dxm; // upper-errorbar in x
     142  float *dyp; // lower-errorbar in y
     143  float *dym; // upper-errorbar in y
     144  int Npts;   // number of points in this set
     145  int style;  // how are the object draw: CONNECT, HISTOGRAM,
     146  int ptype;  // shape of object at each point
     147  // ptype is overloaded for NPOLYGON to be the number of points / polygon
     148  int ltype;  // style of line (solid, dot, dash, etc)
     149  int color;  // color for point (if not colorscaled)
     150  int etype;  // errorbars to draw (0x01 = y, 0x02 = x)
     151  int ebar;   // draw a cap on the error bar
     152  double lweight; // line thickness
     153  double size; // size of the object
    140154  double x0, x1, y0, y1;  /* limits for this object */
    141155  double alpha;
  • branches/eam_branches/ohana.20190329/src/kapa2/src/DrawObjects.c

    r40291 r40927  
    9797  switch (object[0].style) {
    9898    case KAPA_PLOT_CONNECT:
    99       // fprintf (stderr, "plot KAPA_PLOT_CONNECT: \n");
    10099      DrawConnect (graphic, graph, object);
    101100      break;
     101    case KAPA_PLOT_POLYGON:
     102      DrawPolygon (graphic, graph, object);
     103      break;
     104    case KAPA_PLOT_POLYFILL:
     105      DrawPolyfill (graphic, graph, object);
     106      break;
    102107    case KAPA_PLOT_HISTOGRAM:
    103       // fprintf (stderr, "plot KAPA_PLOT_HISTOGRAM:\n");
    104108      DrawHistogram (graphic, graph, object);
    105109      break;
    106110    case KAPA_PLOT_BARS_SOLID:
    107       // fprintf (stderr, "plot KAPA_PLOT_BARS_SOLID:\n");
    108111      DrawBars (graphic, graph, object, KAPA_PLOT_BARS_SOLID);
    109112      break;
    110113    case KAPA_PLOT_BARS_OUTLINE:
    111       // fprintf (stderr, "plot KAPA_PLOT_BARS_OUTLINE:\n");
    112114      DrawBars (graphic, graph, object, KAPA_PLOT_BARS_OUTLINE);
    113115      break;
    114116    case KAPA_PLOT_BARS_OUTFILL:
    115       // fprintf (stderr, "plot KAPA_PLOT_BARS_OUTFILL:\n");
    116117      DrawBars (graphic, graph, object, KAPA_PLOT_BARS_OUTFILL);
    117118      break;
    118119    case KAPA_PLOT_POINTS:
    119120    default:
    120       // fprintf (stderr, "plot KAPA_PLOT_POINTS:\n");
    121121      DrawPoints (graphic, graph, object);
    122122      break;
     
    172172    sx0 = sx1; sy0 = sy1;
    173173  }
    174  
     174}
     175
     176/******/
     177void DrawPolygon (Graphic *graphic, KapaGraphWidget *graph, Gobjects *object) {
     178
     179  float *x, *y;
     180  double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by;
     181  double sx0, sy0, sx1, sy1;
     182  double X0, X1, Y0, Y1;
     183
     184  mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0);
     185  mxj = graph[0].axis[1].dfx / (object[0].y1 - object[0].y0);
     186  myi = graph[0].axis[0].dfy / (object[0].x1 - object[0].x0);
     187  myj = graph[0].axis[1].dfy / (object[0].y1 - object[0].y0);
     188 
     189  bxi  =  graph[0].axis[0].fx - object[0].x0*graph[0].axis[0].dfx/(object[0].x1 - object[0].x0);
     190  bxj  =  -object[0].y0*graph[0].axis[1].dfx/(object[0].y1 - object[0].y0);
     191  byi  =  -object[0].x0*graph[0].axis[0].dfy/(object[0].x1 - object[0].x0);
     192  byj  =  graph[0].axis[1].fy - object[0].y0*graph[0].axis[1].dfy/(object[0].y1 - object[0].y0);
     193 
     194  bx = bxi + bxj;
     195  by = byi + byj;
     196 
     197  X0 = graph[0].axis[0].fx;
     198  X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx;
     199  Y0 = graph[0].axis[1].fy;
     200  Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy;
     201
     202  x = object[0].x; y = object[0].y;
     203
     204  // ptype must > 2
     205  // Npts % ptype must be 0
     206  // who must validate that?
     207
     208  // each polygon is made of (N = ptype) points
     209  // we connect each point and the last one back
     210  for (int i = 0; i < object[0].Npts; i += object[0].ptype) {
     211    // first check for any invalid values for this polygon
     212    int skipObject = FALSE;
     213    for (int j = 0; (j < object[0].ptype) && !skipObject; j++) {
     214      int k = i + j;
     215      if (!(finite(x[k]) && finite(y[k]))) skipObject = TRUE;
     216    }
     217    if (skipObject) continue;
     218
     219    for (int j = 0; (j < object[0].ptype); j++) {
     220      int k = i + j;
     221      sx0 = x[k]*mxi + y[k]*mxj + bx + XCENTER;
     222      sy0 = x[k]*myi + y[k]*myj + by + YCENTER;
     223
     224      // last point connects to first
     225      if (j == object[0].ptype - 1) {
     226        sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER;
     227        sy1 = x[i]*myi + y[i]*myj + by + YCENTER;
     228      } else {
     229        sx1 = x[k+1]*mxi + y[k+1]*mxj + bx + XCENTER;
     230        sy1 = x[k+1]*myi + y[k+1]*myj + by + YCENTER;
     231      }
     232      ClipLine (graphic, sx0, sy0, sx1, sy1, X0, Y0, X1, Y1);
     233    }
     234  }
     235}
     236
     237/******/
     238void DrawPolyfill (Graphic *graphic, KapaGraphWidget *graph, Gobjects *object) {
     239
     240  float *x, *y, *z;
     241  double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by;
     242  double sx0, sy0;
     243  // double X0, X1, Y0, Y1;
     244
     245  mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0);
     246  mxj = graph[0].axis[1].dfx / (object[0].y1 - object[0].y0);
     247  myi = graph[0].axis[0].dfy / (object[0].x1 - object[0].x0);
     248  myj = graph[0].axis[1].dfy / (object[0].y1 - object[0].y0);
     249 
     250  bxi  =  graph[0].axis[0].fx - object[0].x0*graph[0].axis[0].dfx/(object[0].x1 - object[0].x0);
     251  bxj  =  -object[0].y0*graph[0].axis[1].dfx/(object[0].y1 - object[0].y0);
     252  byi  =  -object[0].x0*graph[0].axis[0].dfy/(object[0].x1 - object[0].x0);
     253  byj  =  graph[0].axis[1].fy - object[0].y0*graph[0].axis[1].dfy/(object[0].y1 - object[0].y0);
     254 
     255  bx = bxi + bxj;
     256  by = byi + byj;
     257 
     258  /*
     259    window boundary so we can clip objects
     260  X0 = graph[0].axis[0].fx;
     261  X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx;
     262  Y0 = graph[0].axis[1].fy;
     263  Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy;
     264  */
     265
     266  x = object[0].x; y = object[0].y; z = object[0].z;
     267
     268  // ptype must > 2
     269  // Npts % ptype must be 0
     270  // who must validate that?
     271
     272  ALLOCATE_PTR (points, XPoint, object[0].ptype);
     273
     274  // NOTE that LoadObject.c:45 limits the allow
     275  // object styles which may have negative (scaled) colors
     276  int scaleColor = (object[0].color < 0);
     277
     278  // each polygon is made of (N = ptype) points
     279  // we connect each point and the last one back
     280  for (int i = 0; i < object[0].Npts; i += object[0].ptype) {
     281    // first check for any invalid values for this polygon
     282    int skipObject = FALSE;
     283    for (int j = 0; (j < object[0].ptype) && !skipObject; j++) {
     284      int k = i + j;
     285      if (!(finite(x[k]) && finite(y[k]))) skipObject = TRUE;
     286    }
     287    if (skipObject) continue;
     288
     289    for (int j = 0; (j < object[0].ptype); j++) {
     290      int k = i + j;
     291      sx0 = x[k]*mxi + y[k]*mxj + bx + XCENTER;
     292      sy0 = x[k]*myi + y[k]*myj + by + YCENTER;
     293
     294      points[j].x = sx0;
     295      points[j].y = sy0;
     296    }
     297
     298    if (scaleColor) {
     299      if (!finite(z[i])) continue;
     300      int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1)));
     301      XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel);
     302    }
     303    XFillPolygon (graphic->display, graphic->window, graphic->gc, points, object[0].ptype, Convex, CoordModeOrigin);
     304  }
     305
     306  free (points);
    175307}
    176308
     
    580712  int scaleColor = (object[0].color < 0);
    581713
     714  // NOTE that LoadObject.c:45 limits the allow
     715  // object styles which may have negative (scaled) colors
     716
    582717  ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size;
    583718  dz = 0.5 * (graphic->dx + graphic->dy) * 0.010;
     
    9161051    // for open circles, only go to the outer radius
    9171052    D = 0;
    918     if (object[0].ptype ==  7) { D = scaleSize ? dz*z[i] : ds; }
    919     if (object[0].ptype ==  1) { D = scaleSize ? dz*z[i] : ds; }
    920     if (object[0].ptype ==  5) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; }
    921     if (object[0].ptype == 15) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; }
     1053    if (object[0].ptype == KAPA_POINT_CIRCLE_OPEN       ) { D = scaleSize ? dz*z[i] : ds; }
     1054    if (object[0].ptype == KAPA_POINT_BOX_OPEN          ) { D = scaleSize ? dz*z[i] : ds; }
     1055    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN     ) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; }
     1056    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN_DOWN) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; }
    9221057    if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) goto skip_dxp;
    9231058    if (D > fabs(dxp[i]*mxi)) goto skip_dxp;
     
    9991134    // for open circles, only go to the outer radius
    10001135    D = 0;
    1001     if (object[0].ptype ==  7) { D = scaleSize ? dz*z[i] : ds; }
    1002     if (object[0].ptype ==  1) { D = scaleSize ? dz*z[i] : ds; }
    1003     if (object[0].ptype ==  5) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; }
    1004     if (object[0].ptype == 15) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; }
     1136    if (object[0].ptype == KAPA_POINT_CIRCLE_OPEN       ) { D = scaleSize ? dz*z[i] : ds; }
     1137    if (object[0].ptype == KAPA_POINT_BOX_OPEN          ) { D = scaleSize ? dz*z[i] : ds; }
     1138    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN     ) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; }
     1139    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN_DOWN) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; }
    10051140    if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) goto skip_dyp;
    10061141    if (D > fabs(dyp[i]*myj)) goto skip_dyp;
     
    10231158  skip_dyp:
    10241159    if (!(finite(x[i]) && finite(y[i]) && finite(dym[i]))) continue;
    1025     if (object[0].ptype ==  5) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; }
    1026     if (object[0].ptype == 15) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; }
     1160    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN     ) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; }
     1161    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN_DOWN) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; }
    10271162    if (D > fabs(dym[i]*myj)) continue;
    10281163    sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER;
  • branches/eam_branches/ohana.20190329/src/kapa2/src/LoadObject.c

    r40731 r40927  
    4242      graph[0].objects[N].color = KapaColormapSize() - 1;
    4343  }
    44   if ((graph[0].objects[N].style != KAPA_PLOT_POINTS) && (graph[0].objects[N].color < 0)) {
     44
     45  // XXX watch out for this restriction in DrawObjects / bDrawObjects
     46  int canScaleColor = FALSE;
     47  canScaleColor |= (graph[0].objects[N].style == KAPA_PLOT_POINTS);
     48  canScaleColor |= (graph[0].objects[N].style == KAPA_PLOT_POLYFILL);
     49
     50  if (!canScaleColor && (graph[0].objects[N].color < 0)) {
    4551      graph[0].objects[N].color = 0;
    4652  }
  • branches/eam_branches/ohana.20190329/src/kapa2/src/Refresh.c

    r40781 r40927  
    11# include "Ximage.h"
     2
     3# define USE_BUFFERED_DRAW 0
    24
    35void bDrawXimage (bDrawBuffer *buffer);
     
    68
    79void Refresh (void) {
    8   Refresh_Buffered();
     10  if (USE_BUFFERED_DRAW) {
     11    Refresh_Buffered();
     12  } else {
     13    Refresh_Unbuffered();
     14  }
    915}
    1016
  • branches/eam_branches/ohana.20190329/src/kapa2/src/bDrawObjects.c

    r40731 r40927  
    3838      bDrawConnect (buffer, graph, object);
    3939      break;
     40    case KAPA_PLOT_POLYGON:
     41      bDrawPolygons (buffer, graph, object);
     42      break;
     43    case KAPA_PLOT_POLYFILL:
     44      bDrawFillPolygons (buffer, graph, object);
     45      break;
    4046    case KAPA_PLOT_HISTOGRAM:
    4147      bDrawHistogram (buffer, graph, object);
     
    105111    sx0 = sx1; sy0 = sy1;
    106112  }
     113}
     114
     115void bDrawPolygons (bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object) {
     116
     117  float *x, *y;
     118  double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by;
     119  double sx0, sy0, sx1, sy1;
     120  double X0, X1, Y0, Y1;
     121
     122  mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0);
     123  mxj = graph[0].axis[1].dfx / (object[0].y1 - object[0].y0);
     124  myi = graph[0].axis[0].dfy / (object[0].x1 - object[0].x0);
     125  myj = graph[0].axis[1].dfy / (object[0].y1 - object[0].y0);
     126 
     127  bxi  =  graph[0].axis[0].fx - object[0].x0*graph[0].axis[0].dfx/(object[0].x1 - object[0].x0);
     128  bxj  =  -object[0].y0*graph[0].axis[1].dfx/(object[0].y1 - object[0].y0);
     129  byi  =  -object[0].x0*graph[0].axis[0].dfy/(object[0].x1 - object[0].x0);
     130  byj  =  graph[0].axis[1].fy - object[0].y0*graph[0].axis[1].dfy/(object[0].y1 - object[0].y0);
     131 
     132  bx = bxi + bxj;
     133  by = byi + byj;
     134 
     135  X0 = graph[0].axis[0].fx;
     136  X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx;
     137  Y0 = graph[0].axis[1].fy;
     138  Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy;
     139
     140  x = object[0].x; y = object[0].y;
     141
     142  // ptype must > 2
     143  // Npts % ptype must be 0
     144  // who must validate that?
     145
     146  // each polygon is made of (N = ptype) points
     147  // we connect each point and the last one back
     148  for (int i = 0; i < object[0].Npts; i += object[0].ptype) {
     149    // first check for any invalid values for this polygon
     150    int skipObject = FALSE;
     151    for (int j = 0; (j < object[0].ptype) && !skipObject; j++) {
     152      int k = i + j;
     153      if (!(finite(x[k]) && finite(y[k]))) skipObject = TRUE;
     154    }
     155    if (skipObject) continue;
     156
     157    for (int j = 0; (j < object[0].ptype); j++) {
     158      int k = i + j;
     159      sx0 = x[k]*mxi + y[k]*mxj + bx;
     160      sy0 = x[k]*myi + y[k]*myj + by;
     161
     162      // last point connects to first
     163      if (j == object[0].ptype - 1) {
     164        sx1 = x[i]*mxi + y[i]*mxj + bx;
     165        sy1 = x[i]*myi + y[i]*myj + by;
     166      } else {
     167        sx1 = x[k+1]*mxi + y[k+1]*mxj + bx;
     168        sy1 = x[k+1]*myi + y[k+1]*myj + by;
     169      }
     170      bDrawClipLine (buffer, sx0, sy0, sx1, sy1, X0, Y0, X1, Y1);
     171    }
     172  }
     173}
     174
     175void bDrawFillPolygons (bDrawBuffer *buffer, KapaGraphWidget *graph, Gobjects *object) {
     176
     177  float *x, *y;
     178  double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by;
     179  double sx0, sy0;
     180  // double X0, X1, Y0, Y1;
     181
     182  mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0);
     183  mxj = graph[0].axis[1].dfx / (object[0].y1 - object[0].y0);
     184  myi = graph[0].axis[0].dfy / (object[0].x1 - object[0].x0);
     185  myj = graph[0].axis[1].dfy / (object[0].y1 - object[0].y0);
     186 
     187  bxi  =  graph[0].axis[0].fx - object[0].x0*graph[0].axis[0].dfx/(object[0].x1 - object[0].x0);
     188  bxj  =  -object[0].y0*graph[0].axis[1].dfx/(object[0].y1 - object[0].y0);
     189  byi  =  -object[0].x0*graph[0].axis[0].dfy/(object[0].x1 - object[0].x0);
     190  byj  =  graph[0].axis[1].fy - object[0].y0*graph[0].axis[1].dfy/(object[0].y1 - object[0].y0);
     191 
     192  bx = bxi + bxj;
     193  by = byi + byj;
     194 
     195  /*
     196    window boundary so we can clip objects
     197  X0 = graph[0].axis[0].fx;
     198  X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx;
     199  Y0 = graph[0].axis[1].fy;
     200  Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy;
     201  */
     202
     203  x = object[0].x; y = object[0].y;
     204
     205  // ptype must > 2
     206  // Npts % ptype must be 0
     207  // who must validate that?
     208
     209  ALLOCATE_PTR (xpts, double, object[0].ptype);
     210  ALLOCATE_PTR (ypts, double, object[0].ptype);
     211
     212  int scaleColor = (object[0].color < 0);
     213  unsigned char *pixel1, *pixel2, *pixel3;
     214  float *z = object[0].z;
     215
     216  if (scaleColor) {
     217    // scaled colors use the colormap defined for the graphic
     218    ALLOCATE (pixel1, unsigned char, graphic[0].Npixels);
     219    ALLOCATE (pixel2, unsigned char, graphic[0].Npixels);
     220    ALLOCATE (pixel3, unsigned char, graphic[0].Npixels);
     221
     222    /** cmap[i].pixel must be defined even if X is not used **/
     223    for (int i = 0; i < graphic[0].Npixels; i++) { /* set up pixel array */
     224      pixel1[i] = graphic[0].cmap[i].red >> 8;
     225      pixel2[i] = graphic[0].cmap[i].green >> 8;
     226      pixel3[i] = graphic[0].cmap[i].blue >> 8;
     227    }
     228
     229  }
     230
     231  // each polygon is made of (N = ptype) points
     232  // we connect each point and the last one back
     233  for (int i = 0; i < object[0].Npts; i += object[0].ptype) {
     234    // first check for any invalid values for this polygon
     235    int skipObject = FALSE;
     236    for (int j = 0; (j < object[0].ptype) && !skipObject; j++) {
     237      int k = i + j;
     238      if (!(finite(x[k]) && finite(y[k]))) skipObject = TRUE;
     239    }
     240    if (skipObject) continue;
     241
     242    for (int j = 0; (j < object[0].ptype); j++) {
     243      int k = i + j;
     244      sx0 = x[k]*mxi + y[k]*mxj + bx;
     245      sy0 = x[k]*myi + y[k]*myj + by;
     246
     247      xpts[j] = sx0;
     248      ypts[j] = sy0;
     249    }
     250   
     251    if (scaleColor) {
     252      if (!finite(z[i])) continue;
     253      int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1)));
     254      buffer->bColor_R = pixel1[pixel];
     255      buffer->bColor_G = pixel2[pixel];
     256      buffer->bColor_B = pixel3[pixel];
     257    }
     258    bDrawPolyFill (buffer, xpts, ypts, object[0].ptype);
     259  }
     260  free (xpts);
     261  free (ypts);
    107262}
    108263
     
    8881043    // for open circles, only go to the outer radius
    8891044    D = 0;
    890     if (object[0].ptype ==  7) { D = scaleSize ? dz*z[i] : ds; }
    891     if (object[0].ptype ==  1) { D = scaleSize ? dz*z[i] : ds; }
    892     if (object[0].ptype ==  5) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; }
    893     if (object[0].ptype == 15) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; }
     1045    if (object[0].ptype == KAPA_POINT_CIRCLE_OPEN       ) { D = scaleSize ? dz*z[i] : ds; }
     1046    if (object[0].ptype == KAPA_POINT_BOX_OPEN          ) { D = scaleSize ? dz*z[i] : ds; }
     1047    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN     ) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; }
     1048    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN_DOWN) { D = scaleSize ? 0.66*dz*z[i] : 0.66*ds; }
    8941049    if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) goto skip_dxp;
    8951050    if (D > fabs(dxp[i]*mxi)) goto skip_dxp;
     
    9711126    // for open circles, only go to the outer radius
    9721127    D = 0;
    973     if (object[0].ptype ==  7) { D = scaleSize ? dz*z[i] : ds; }
    974     if (object[0].ptype ==  1) { D = scaleSize ? dz*z[i] : ds; }
    975     if (object[0].ptype ==  5) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; }
    976     if (object[0].ptype == 15) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; }
     1128    if (object[0].ptype == KAPA_POINT_CIRCLE_OPEN       ) { D = scaleSize ? dz*z[i] : ds; }
     1129    if (object[0].ptype == KAPA_POINT_BOX_OPEN          ) { D = scaleSize ? dz*z[i] : ds; }
     1130    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN     ) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; }
     1131    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN_DOWN) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; }
    9771132    if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) goto skip_dyp;
    9781133    if (D > fabs(dyp[i]*myj)) goto skip_dyp;
     
    9951150  skip_dyp:
    9961151    if (!(finite(x[i]) && finite(y[i]) && finite(dym[i]))) continue;
    997     if (object[0].ptype ==  5) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; }
    998     if (object[0].ptype == 15) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; }
     1152    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN     ) { D = scaleSize ? 0.58*dz*z[i] : 0.58*ds; }
     1153    if (object[0].ptype == KAPA_POINT_TRIANGLE_OPEN_DOWN) { D = scaleSize ? 1.15*dz*z[i] : 1.15*ds; }
    9991154    if (D > fabs(dym[i]*myj)) continue;
    10001155    sx0 = x[i]*mxi + y[i]*mxj + bx;
Note: See TracChangeset for help on using the changeset viewer.