IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38706


Ignore:
Timestamp:
Sep 3, 2015, 6:25:56 AM (11 years ago)
Author:
eugene
Message:

clip the tickmarks if they are outside the window; only add labels up to the box limits

Location:
branches/eam_branches/ipp-20150625/Ohana/src/kapa2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20150625/Ohana/src/kapa2/include/prototypes.h

    r38465 r38706  
    4040void          DrawYErrors         PROTO((KapaGraphWidget *graph, Gobjects *objects));
    4141void          DrawTick            PROTO((Graphic *graphic, Axis *axis, int P, TickMarkData *tick, int naxis));
    42 void          AxisTickScale       PROTO((Axis *axis, double *major, double *minor, int *nsignif));
     42void          AxisTickScale       PROTO((Axis *axis, double *range, double *major, double *minor, int *nsignif));
    4343TickMarkData *CreateAxisTicks     PROTO((Axis *axis, int *nticks));
    4444int           PrintTick           PROTO((char *string, double value, double min, double max, int nsignif));
  • branches/eam_branches/ipp-20150625/Ohana/src/kapa2/src/DrawFrame.c

    r34088 r38706  
    116116
    117117  if ((naxis == 0) || (naxis == 2)) {
    118     x = MAX(x, fx);
    119   }
    120   //   y = MAX(y, fy);
    121   // }
     118    x = MIN(MAX(x, fx),fx+dfx);
     119  }
     120  if ((naxis == 1) || (naxis == 3)) {
     121    y = MAX(MIN(y, fy),fy+dfy);
     122  }
    122123
    123124  dir = ((naxis == 0) || (naxis == 1)) ? -1 : +1;
     
    154155# define MIN_RANGE 1e-30
    155156
    156 void AxisTickScale (Axis *axis, double *major, double *minor, int *nsignif) {
    157 
    158   double range, lrange, factor, mantis, fmantis, power;
    159 
    160   range = axis[0].max - axis[0].min;
    161   if (fabs(range) < MIN_RANGE) {
    162     range = (range < 0) ? -MIN_RANGE : +MIN_RANGE;
    163   }
    164 
    165   lrange = log10(MAX(fabs(range), MIN_RANGE));
     157void AxisTickScale (Axis *axis, double *range, double *major, double *minor, int *nsignif) {
     158
     159  double lrange, factor, mantis, fmantis, power;
     160
     161  *range = (axis[0].max - axis[0].min);
     162  if (fabs(*range) < MIN_RANGE) {
     163    *range = (*range < 0) ? -MIN_RANGE : +MIN_RANGE;
     164  }
     165
     166  lrange = log10(MAX(fabs(*range), MIN_RANGE));
     167  double truncRange = ((int) ((lrange + 0.005) * 1000)) / 1000.0;
     168  lrange = truncRange;
     169
    166170  mantis = modf (lrange, &factor);
    167171  if (mantis < 0.0) {
     
    240244  if (isnan(axis->max) || isinf(axis->max)) return NULL;
    241245 
    242   range = axis->max - axis->min;
    243 
    244   // not sure why I skip out here instead of using the MIN_RANGE value
    245   if (fabs(range) < MIN_RANGE) return NULL;
    246  
    247   if (fabs(range) < MIN_RANGE) {
    248     range = (range < 0) ? -MIN_RANGE : +MIN_RANGE;
    249   }
    250 
    251246  // length of the axis in pixels
    252247  // int nPixels = hypot(axis->dfx, axis->dfy);
    253248  // double dPixels = nPixels / range; // axis pixel-scale
    254249
    255   AxisTickScale (axis, &major, &minor, &nsignif);
     250  AxisTickScale (axis, &range, &major, &minor, &nsignif);
    256251
    257252  // be a little generous
     
    260255
    261256  // value of the tick mark
    262   ifirst = (axis->min < 0.0) ? (axis->min/minor - 0.05) : (axis->min/minor + 0.05);
     257  if (axis->min > 0.0) {
     258    double minValue = axis->min / minor;
     259    if (minValue - (int)minValue < +0.1) {
     260      ifirst = (int) minValue;
     261    } else {
     262      ifirst = (int) (minValue + 1);
     263    }
     264  } else {
     265    double minValue = axis->min / minor;
     266    if (minValue - (int)minValue > -0.1) {
     267      ifirst = (int) minValue;
     268    } else {
     269      ifirst = (int) (minValue - 1);
     270    }
     271  }
     272  // ifirst = (axis->min < 0.0) ? (axis->min/minor - 0.01) : (axis->min/minor + 0.01);
    263273  first = minor*ifirst;
    264274 
     
    292302      value -= minor;
    293303   
    294     done |= (range > 0) && (value > axis->max);
    295     done |= (range < 0) && (value < axis->max);
     304    done |= (range > 0) && (value > axis->max + 0.1*minor);
     305    done |= (range < 0) && (value < axis->max - 0.1*minor);
     306    // fprintf (stderr, "%d : %f %f %f %f\n", done, range, value, axis->max, 0.1*minor);
    296307  }
    297308
  • branches/eam_branches/ipp-20150625/Ohana/src/kapa2/src/PSFrame.c

    r34088 r38706  
    8181  y = fy + (value-min)*dfy/(max - min);
    8282
     83  if ((naxis == 0) || (naxis == 2)) {
     84    x = MIN(MAX(x, fx),fx+dfx);
     85  }
     86  if ((naxis == 1) || (naxis == 3)) {
     87    y = MIN(MAX(y, fy),fy+dfy);
     88  }
     89
    8390  dir = ((naxis == 0) || (naxis == 1)) ? +1 : -1;
    8491  dx = dir*size*dfy*n; 
  • branches/eam_branches/ipp-20150625/Ohana/src/kapa2/src/bDrawFrame.c

    r34088 r38706  
    8484  y = fy + (value-min)*dfy/(max - min);
    8585
     86  if ((naxis == 0) || (naxis == 2)) {
     87    x = MIN(MAX(x, fx),fx+dfx);
     88  }
     89  if ((naxis == 1) || (naxis == 3)) {
     90    y = MAX(MIN(y, fy),fy+dfy);
     91  }
     92
    8693  dir = ((naxis == 0) || (naxis == 1)) ? -1 : +1;
    8794  dx = dir*size*dfy*n; 
Note: See TracChangeset for help on using the changeset viewer.