IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 23, 2011, 6:01:32 PM (15 years ago)
Author:
eugene
Message:

fix changing shape of points (force symmetry about center pixel, consistency of size for different point types; consistency of shapes between plotting devices)

File:
1 edited

Legend:

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

    r31160 r31560  
    44# define DrawCircle(BUF,X1,Y1,R) (bDrawCircle (BUF, (X1), (Y1), (R)))
    55# define DrawRectangle(BUF,X,Y,dX,dY) (bDrawRectOpen (BUF, (X-0.5*dX), (Y-0.5*dY), (X+0.5*dX), (Y+0.5*dY)))
    6 # define FillRectangle(BUF,X,Y,dX,dY) (bDrawRectFill (BUF, (X-0.5*dX), (Y-0.5*dY), (X+0.5*dX), (Y+0.5*dY)))
    7 # define FillTriangle(BUF,X1,Y1,X2,Y2,X3,Y3) (bDrawTriFill (BUF, (X1), (Y1), (X2), (Y2), (X3), (Y3)))
     6# define FillRectangle(BUF,X,Y,dX,dY) (bDrawRectFill (BUF, (X-0.5*dX), (Y-0.5*dY), (X+0.5*dX+1), (Y+0.5*dY+1)))
     7# define FillTriangle(BUF,X1,Y1,dX,dY) (bDrawTriFill (BUF, (X1), (Y1), (dX), (dY)))
    88# define OpenTriangle(BUF,X1,Y1,X2,Y2,X3,Y3) (bDrawTriOpen (BUF, (X1), (Y1), (X2), (Y2), (X3), (Y3)))
    99
     
    260260  float *x, *y, *z;
    261261  double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by;
    262   double sx, sy, d, sx1, sy1, sx2, sy2;
     262  int sx, sy, sx1, sy1, sx2, sy2, d, D;
    263263
    264264  mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0);
     
    288288            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    289289        {
    290           FillRectangle (buffer, sx, sy, 2*d*z[i], 2*d*z[i]);
     290          D = d*z[i];
     291          FillRectangle (buffer, sx, sy, 2*D, 2*D);
    291292        }
    292293      }
     
    300301            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    301302        {
    302           DrawRectangle (buffer, sx, sy, 2*d*z[i], 2*d*z[i]);
     303          D = d*z[i];
     304          DrawRectangle (buffer, sx, sy, 2*D, 2*D);
    303305        }
    304306      }
     
    312314            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    313315        {
    314           DrawLine (buffer, sx - d*z[i], sy, sx + d*z[i], sy);
    315           DrawLine (buffer, sx, sy - d*z[i], sx, sy + d*z[i]);
     316          D = d*z[i];
     317          DrawLine (buffer, sx - D, sy, sx + D, sy);
     318          DrawLine (buffer, sx, sy - D, sx, sy + D);
    316319        }
    317320      }
     
    325328            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    326329        {
    327           DrawLine (buffer, sx + d*z[i], sy - d*z[i], sx - d*z[i], sy + d*z[i]);
    328           DrawLine (buffer, sx - d*z[i], sy - d*z[i], sx + d*z[i], sy + d*z[i]);
     330          D = d*z[i];
     331          DrawLine (buffer, sx + D, sy - D, sx - D, sy + D);
     332          DrawLine (buffer, sx - D, sy - D, sx + D, sy + D);
    329333        }
    330334      }
     
    338342            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    339343        {
    340           FillTriangle (buffer, sx - d*z[i], sy - 0.58*d*z[i], sx + d*z[i], sy - 0.58*d*z[i], sx, sy + 1.15*d*z[i]);
     344          D = d*z[i];
     345          // FillTriangle (buffer, sx - D, sy - 0.58*D, sx + D, sy - 0.58*D, sx, sy + 1.15*D);
     346          FillTriangle (buffer, sx, sy + 0.58*D, D, -1.73*D);
    341347        }
    342348      }
     
    350356            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    351357        {
    352           OpenTriangle (buffer, sx - d*z[i], sy + 0.58*d*z[i], sx, sy - 1.15*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]);
     358          D = d*z[i];
     359          OpenTriangle (buffer, sx - D, sy + 0.58*D, sx + D, sy + 0.58*D, sx, sy - 1.15*D);
    353360        }
    354361      }
     
    362369            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    363370        {
    364           DrawLine (buffer, sx, sy, sx - d*z[i], sy + 0.58*d*z[i]);
    365           DrawLine (buffer, sx, sy, sx + d*z[i], sy + 0.58*d*z[i]);
    366           DrawLine (buffer, sx, sy, sx,          sy - 1.15*d*z[i]);
     371          D = d*z[i];
     372          DrawLine (buffer, sx, sy, sx - D, sy - 0.58*D);
     373          DrawLine (buffer, sx, sy, sx + D, sy - 0.58*D);
     374          DrawLine (buffer, sx, sy, sx,     sy + 1.15*D);
    367375        }
    368376      }
     
    376384            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    377385        {
    378           DrawCircle (buffer, sx, sy, d*z[i]);
     386          D = d*z[i];
     387          DrawCircle (buffer, sx, sy, D);
    379388        }
    380389      }
     
    388397            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    389398        {
    390           DrawLine (buffer, sx + 0.00*d*z[i], sy - 1.00*d*z[i], sx + 0.95*d*z[i], sy - 0.31*d*z[i]);
    391           DrawLine (buffer, sx + 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.58*d*z[i], sy + 0.81*d*z[i]);
    392           DrawLine (buffer, sx + 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.58*d*z[i], sy + 0.81*d*z[i]);
    393           DrawLine (buffer, sx - 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.95*d*z[i], sy - 0.31*d*z[i]);
    394           DrawLine (buffer, sx - 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.00*d*z[i], sy - 1.00*d*z[i]);
     399          D = d*z[i];
     400          DrawLine (buffer, sx + 0.00*D, sy - 1.00*D, sx + 0.95*D, sy - 0.31*D);
     401          DrawLine (buffer, sx + 0.95*D, sy - 0.31*D, sx + 0.58*D, sy + 0.81*D);
     402          DrawLine (buffer, sx + 0.58*D, sy + 0.81*D, sx - 0.58*D, sy + 0.81*D);
     403          DrawLine (buffer, sx - 0.58*D, sy + 0.81*D, sx - 0.95*D, sy - 0.31*D);
     404          DrawLine (buffer, sx - 0.95*D, sy - 0.31*D, sx + 0.00*D, sy - 1.00*D);
    395405        }
    396406      }
     
    404414            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    405415        {
    406           DrawLine (buffer, sx -      d*z[i], sy,               sx - 0.50*d*z[i], sy + 0.87*d*z[i]);
    407           DrawLine (buffer, sx - 0.50*d*z[i], sy + 0.87*d*z[i], sx + 0.50*d*z[i], sy + 0.87*d*z[i]);
    408           DrawLine (buffer, sx + 0.50*d*z[i], sy + 0.87*d*z[i], sx +      d*z[i], sy);
    409 
    410           DrawLine (buffer, sx +      d*z[i], sy,               sx + 0.50*d*z[i], sy - 0.87*d*z[i]);
    411           DrawLine (buffer, sx + 0.50*d*z[i], sy - 0.87*d*z[i], sx - 0.50*d*z[i], sy - 0.87*d*z[i]);
    412           DrawLine (buffer, sx - 0.50*d*z[i], sy - 0.87*d*z[i], sx -      d*z[i], sy);
     416          D = d*z[i];
     417          DrawLine (buffer, sx -      D, sy,          sx - 0.50*D, sy + 0.87*D);
     418          DrawLine (buffer, sx - 0.50*D, sy + 0.87*D, sx + 0.50*D, sy + 0.87*D);
     419          DrawLine (buffer, sx + 0.50*D, sy + 0.87*D, sx +      D, sy);
     420          DrawLine (buffer, sx +      D, sy,          sx + 0.50*D, sy - 0.87*D);
     421          DrawLine (buffer, sx + 0.50*D, sy - 0.87*D, sx - 0.50*D, sy - 0.87*D);
     422          DrawLine (buffer, sx - 0.50*D, sy - 0.87*D, sx -      D, sy);
    413423        }
    414424      }
     
    431441    }
    432442  } else {
    433     d = object[0].size * 0.5 * (graphic->dx + graphic->dy) * 0.003;
     443    d = (int)(object[0].size * hypot((float)graphic->dx, (float)graphic->dy) * 0.003);
    434444    x = object[0].x; y = object[0].y;
     445
    435446    if (object[0].ptype == 0) { /* filled box */
    436447      for (i = 0; i < object[0].Npts; i++) {
     
    457468      }
    458469    }
    459     if (object[0].ptype == 2) { /* cross */
     470    if (object[0].ptype == 2) { /* cross : OK */
    460471      for (i = 0; i < object[0].Npts; i++) {
    461472        if (!(finite(x[i]) && finite(y[i]))) continue;
     
    491502            (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy))
    492503        {
    493           FillTriangle (buffer, sx - d, sy - 0.58*d, sx + d, sy - 0.58*d, sx, sy + 1.15*d);
     504          FillTriangle (buffer, sx, sy + 0.58*d, d, -1.73*d);
    494505        }
    495506      }
Note: See TracChangeset for help on using the changeset viewer.