IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38738


Ignore:
Timestamp:
Sep 16, 2015, 6:22:00 AM (11 years ago)
Author:
eugene
Message:

adding options to control the tick labels and locations

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

Legend:

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

    r38465 r38738  
    143143  double fx, dfx, fy, dfy;  /* axis location on graphic */
    144144  double lweight;
     145  double fLabelRange;
     146  double fMinor;
    145147  int color;
    146148} Axis;
  • branches/eam_branches/ipp-20150625/Ohana/src/kapa2/src/DrawFrame.c

    r38706 r38738  
    159159  double lrange, factor, mantis, fmantis, power;
    160160
    161   *range = (axis[0].max - axis[0].min);
     161  *range = axis->fLabelRange*(axis[0].max - axis[0].min);
    162162  if (fabs(*range) < MIN_RANGE) {
    163163    *range = (*range < 0) ? -MIN_RANGE : +MIN_RANGE;
     
    183183  if ((fmantis >= 1.0) && (fmantis <  1.999)) {
    184184    *major = 0.5 * power;
    185     *minor = 0.1 * power;
    186185    *nsignif = factor - 1;
    187186    if (axis[0].areticks == 1) {
    188187      *major = 0.25 * power;
    189       *minor = 0.05 * power;
    190188      *nsignif = factor - 2;
    191189    }     
     
    193191  if ((fmantis >= 1.999) && (fmantis <  3.999)) {
    194192    *major = 1.0 * power;
    195     *minor = 0.2 * power;
    196193    *nsignif = factor;
    197194    if (axis[0].areticks == 1) {
    198195      *major = 0.5 * power;
    199       *minor = 0.1 * power;
    200196      *nsignif = factor - 1;
    201197    }     
     
    203199  if ((fmantis >= 3.999) && (fmantis <  5.999)) {
    204200    *major = 1.0 * power;
    205     *minor = 0.5 * power;
    206201    *nsignif = factor;
    207202    if (axis[0].areticks == 1) {
    208203      *major = 1.0 * power;
    209       *minor = 0.2 * power;
    210204      *nsignif = factor;
    211205    }     
     
    213207  if ((fmantis >= 5.999) && (fmantis <   7.999)) {
    214208    *major = 2.0 * power;
    215     *minor = 0.5 * power;
    216209    *nsignif = factor;
    217210    if (axis[0].areticks == 1) {
    218211      *major = 1.0 * power;
    219       *minor = 0.5 * power;
    220212      *nsignif = factor;
    221213    }     
     
    223215  if ((fmantis >= 7.999) && (fmantis <  10.000)) {
    224216    *major = 2.5 * power;
    225     *minor = 0.5 * power;
    226217      *nsignif = factor - 1;
    227218    if (axis[0].areticks == 1) {
    228219      *major = 2.0 * power;
    229       *minor = 0.5 * power;
    230220      *nsignif = factor;
    231221    }     
    232222  }
     223  *minor = *major / axis->fMinor;
    233224}
    234225
     
    237228  TickMarkData *ticks;
    238229  double range, major, minor, first, value;
    239   int i, NTICKS, done, ifirst, nsignif;
     230  int i, NTICKS, done, nsignif;
    240231
    241232  *nticks = 0;
     
    254245  ALLOCATE (ticks, TickMarkData, NTICKS);
    255246
    256   // value of the tick mark
    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);
     247  // value of the first tick mark (near axis->min)
     248  double minValue = axis->min / minor;
     249  int ifirst = (int) minValue;
     250
     251  if ((axis->min > 0.0) && (minValue - ifirst > +0.1)) {
     252    ifirst ++;
     253  }
     254  if ((axis->min < 0.0) && (minValue - ifirst < -0.1)) {
     255    ifirst --;
     256  }
    273257  first = minor*ifirst;
    274258 
    275   // allow undershoot by 1 pixel
    276   // double overshoot = (axis->min - first) * dPixels;
    277   // if (overshoot > 0.5) {
    278   //   if (range > 0) {
    279   //     first += minor;
    280   //   } else {
    281   //     first -= minor;
    282   //   }
    283   // }
    284 
    285   // XXX need to fix first and last value for printing label: currently prints first label
    286   // too early & fails to do last label if too close
     259  // only write the labels for the inner fRange of the axies
     260  double minLabelValue = 0.5*(1.0 - 1.001*axis->fLabelRange)*(axis->max - axis->min) + axis->min;
     261  double maxLabelValue = 0.5*(1.0 + 1.001*axis->fLabelRange)*(axis->max - axis->min) + axis->min;
    287262
    288263  // loop to find the ticks
     
    294269    ticks[i].IsMajor |= (fabs((int)((value + 0.5*minor)/major) - (value/major)) < 0.5*(minor/major));
    295270    ticks[i].IsMajor |= (fabs((int)((value - 0.5*minor)/major) - (value/major)) < 0.5*(minor/major));
    296     ticks[i].IsLabel = (ticks[i].IsMajor && axis->islabel);
     271    int inLabelRange = (range > 0) ? (value >= minLabelValue) && (value <= maxLabelValue) : (value <= minLabelValue) && (value >= maxLabelValue);
     272    ticks[i].IsLabel = inLabelRange && ticks[i].IsMajor && axis->islabel;
    297273    ticks[i].value = value;
    298274    ticks[i].nsignif = nsignif;
  • branches/eam_branches/ipp-20150625/Ohana/src/kapa2/src/Graphs.c

    r37807 r38738  
    2323    graph[0].axis[i].labelPad = NAN;
    2424    graph[0].axis[i].pad = NAN;
     25    graph[0].axis[i].fLabelRange = 1.0;
     26    graph[0].axis[i].fMinor = 5.0;
    2527  }   
    2628  graph[0].data.ticktextPad = NAN;
     
    3537  graph[0].data.padYm = NAN;
    3638  graph[0].data.padYp = NAN;
     39
     40  graph[0].data.fLabelRangeXm = 1.0;
     41  graph[0].data.fLabelRangeXp = 1.0;
     42  graph[0].data.fLabelRangeYm = 1.0;
     43  graph[0].data.fLabelRangeYp = 1.0;
     44
     45  graph[0].data.fMinorXm = 5.0;
     46  graph[0].data.fMinorXp = 5.0;
     47  graph[0].data.fMinorYm = 5.0;
     48  graph[0].data.fMinorYp = 5.0;
    3749
    3850  for (i = 0; i < 8; i++) {
  • branches/eam_branches/ipp-20150625/Ohana/src/kapa2/src/LoadFrame.c

    r29539 r38738  
    3636  graph[0].axis[2].labelPad = graph[0].data.labelPadXp;
    3737  graph[0].axis[3].labelPad = graph[0].data.labelPadYp;
     38
     39  graph[0].axis[0].fLabelRange = graph[0].data.fLabelRangeXm;
     40  graph[0].axis[1].fLabelRange = graph[0].data.fLabelRangeYm;
     41  graph[0].axis[2].fLabelRange = graph[0].data.fLabelRangeXp;
     42  graph[0].axis[3].fLabelRange = graph[0].data.fLabelRangeYp;
     43
     44  graph[0].axis[0].fMinor = graph[0].data.fMinorXm;
     45  graph[0].axis[1].fMinor = graph[0].data.fMinorYm;
     46  graph[0].axis[2].fMinor = graph[0].data.fMinorXp;
     47  graph[0].axis[3].fMinor = graph[0].data.fMinorYp;
    3848
    3949  for (i = 0; i < 4; i++) {
  • branches/eam_branches/ipp-20150625/Ohana/src/kapa2/src/SetGraphData.c

    r27790 r38738  
    2727  graph[0].axis[2].labelPad = graph[0].data.labelPadXp;
    2828  graph[0].axis[3].labelPad = graph[0].data.labelPadYp;
     29
     30  graph[0].axis[0].fLabelRange = graph[0].data.fLabelRangeXm;
     31  graph[0].axis[1].fLabelRange = graph[0].data.fLabelRangeYm;
     32  graph[0].axis[2].fLabelRange = graph[0].data.fLabelRangeXp;
     33  graph[0].axis[3].fLabelRange = graph[0].data.fLabelRangeYp;
     34
     35  graph[0].axis[0].fMinor = graph[0].data.fMinorXm;
     36  graph[0].axis[1].fMinor = graph[0].data.fMinorYm;
     37  graph[0].axis[2].fMinor = graph[0].data.fMinorXp;
     38  graph[0].axis[3].fMinor = graph[0].data.fMinorYp;
    2939
    3040  graph[0].axis[0].pad = graph[0].data.padXm;
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/include/get_graphdata.h

    r31647 r38738  
    1111  double labelPadXm, labelPadYm, labelPadXp, labelPadYp;
    1212  double padXm, padXp, padYm, padYp;
     13  double fLabelRangeXm, fLabelRangeXp, fLabelRangeYm, fLabelRangeYp;
     14  double fMinorXm, fMinorXp, fMinorYm, fMinorYp;
    1315  Coords coords;
    1416  int flipeast, flipnorth;
  • branches/eam_branches/ipp-20150625/Ohana/src/opihi/cmd.data/box.c

    r34749 r38738  
    142142  }
    143143
     144  if ((N = get_argument (argc, argv, "-fminor"))) {
     145    remove_argument (N, &argc, argv);
     146    graphmode.fMinorXm = atof(argv[N]);
     147    graphmode.fMinorXp = atof(argv[N]);
     148    graphmode.fMinorYm = atof(argv[N]);
     149    graphmode.fMinorYp = atof(argv[N]);
     150    remove_argument (N, &argc, argv);
     151  }
     152  if ((N = get_argument (argc, argv, "-xfminor"))) {
     153    remove_argument (N, &argc, argv);
     154    graphmode.fMinorXm = atof(argv[N]);
     155    remove_argument (N, &argc, argv);
     156  }
     157  if ((N = get_argument (argc, argv, "+xfminor"))) {
     158    remove_argument (N, &argc, argv);
     159    graphmode.fMinorXp = atof(argv[N]);
     160    remove_argument (N, &argc, argv);
     161  }
     162  if ((N = get_argument (argc, argv, "-yfminor"))) {
     163    remove_argument (N, &argc, argv);
     164    graphmode.fMinorYm = atof(argv[N]);
     165    remove_argument (N, &argc, argv);
     166  }
     167  if ((N = get_argument (argc, argv, "+yfminor"))) {
     168    remove_argument (N, &argc, argv);
     169    graphmode.fMinorYp = atof(argv[N]);
     170    remove_argument (N, &argc, argv);
     171  }
     172
     173  if ((N = get_argument (argc, argv, "-flabel"))) {
     174    remove_argument (N, &argc, argv);
     175    graphmode.fLabelRangeXm = atof(argv[N]);
     176    graphmode.fLabelRangeXp = atof(argv[N]);
     177    graphmode.fLabelRangeYm = atof(argv[N]);
     178    graphmode.fLabelRangeYp = atof(argv[N]);
     179    remove_argument (N, &argc, argv);
     180  }
     181  if ((N = get_argument (argc, argv, "-xflabel"))) {
     182    remove_argument (N, &argc, argv);
     183    graphmode.fLabelRangeXm = atof(argv[N]);
     184    remove_argument (N, &argc, argv);
     185  }
     186  if ((N = get_argument (argc, argv, "+xflabel"))) {
     187    remove_argument (N, &argc, argv);
     188    graphmode.fLabelRangeXp = atof(argv[N]);
     189    remove_argument (N, &argc, argv);
     190  }
     191  if ((N = get_argument (argc, argv, "-yflabel"))) {
     192    remove_argument (N, &argc, argv);
     193    graphmode.fLabelRangeYm = atof(argv[N]);
     194    remove_argument (N, &argc, argv);
     195  }
     196  if ((N = get_argument (argc, argv, "+yflabel"))) {
     197    remove_argument (N, &argc, argv);
     198    graphmode.fLabelRangeYp = atof(argv[N]);
     199    remove_argument (N, &argc, argv);
     200  }
     201
    144202  if (argc != 1) goto usage;
    145203
     
    174232  gprint (GP_ERR, "         alternatively, set each axis independently with:\n");
    175233  gprint (GP_ERR, "        -xpad, -ypad, +xpad, +ypad\n");
     234  gprint (GP_ERR, "  \n");
     235  gprint (GP_ERR, "  -fminor : set the number of minor ticks per major (all axes)\n");
     236  gprint (GP_ERR, "         alternatively, set each axis independently with:\n");
     237  gprint (GP_ERR, "        -xfminor, -yfminor, +xfminor, +yfminor\n");
     238  gprint (GP_ERR, "  \n");
     239  gprint (GP_ERR, "  -flabel : set the fraction of axis over which major ticks have labels (all axes)\n");
     240  gprint (GP_ERR, "         alternatively, set each axis independently with:\n");
     241  gprint (GP_ERR, "        -xflabel, -yflabel, +xflabel, +yflabel\n");
    176242
    177243  return (FALSE);
Note: See TracChangeset for help on using the changeset viewer.