home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / JCLASS.BIN / KLG.JAR / jclass / chart / LinearAxisHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-05  |  5.4 KB  |  393 lines

  1. package jclass.chart;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.Graphics;
  5.  
  6. class LinearAxisHandler extends AxisHandler {
  7.    LinearAxisHandler(JCAxis var1) {
  8.       super(var1);
  9.    }
  10.  
  11.    double toData(int var1) {
  12.       return super.parent.isVertical ? ((double)(super.parent.getHeight() - var1) - super.shift) / super.scale : ((double)var1 - super.shift) / super.scale;
  13.    }
  14.  
  15.    int toPixel(double var1) {
  16.       var1 = super.scale * var1 + super.shift + (double)0.5F;
  17.       int var3;
  18.       if (var1 >= (double)0.0F) {
  19.          var3 = (int)var1;
  20.       } else {
  21.          var3 = (int)Math.floor(var1);
  22.       }
  23.  
  24.       return super.parent.isVertical ? super.parent.getHeight() - var3 : var3;
  25.    }
  26.  
  27.    void calcParams() {
  28.       double var1 = super.parent.dataLimits == null ? (double)0.0F : super.parent.dataLimits.min;
  29.       double var3 = super.parent.dataLimits == null ? (double)100.0F : super.parent.dataLimits.max;
  30.       double var9 = (double)0.0F;
  31.       double var11 = super.parent.numSpacing.value;
  32.       double var13 = super.parent.tickSpacing.value;
  33.       boolean var15 = super.parent.chartType == 9 || super.parent.chartType == 10;
  34.       boolean var16 = super.parent.chartType == 5 || super.parent.chartType == 6;
  35.       boolean var17 = super.parent.chartType == 7;
  36.       boolean var18 = super.parent.chartType == 2 || super.parent.chartType == 3 || super.parent.chartType == 4;
  37.       if (var18 && !super.parent.isVertical) {
  38.          super.parent.min.value = (double)0.0F;
  39.          super.parent.max.value = JCChartUtil.convertAngle(1, super.parent.chartArea.angleUnit, (double)360.0F);
  40.       }
  41.  
  42.       do {
  43.          this.calcPrecision();
  44.       } while(this.fixBounds());
  45.  
  46.       int var23 = super.parent.precision.value;
  47.       double var7 = JCChartUtil.precFloor(var23, var1);
  48.       double var5 = JCChartUtil.precCeil(var23, var3);
  49.       if (var5 <= var7) {
  50.          var23 = super.parent.precision.value;
  51.          if (super.parent.max.isDefault) {
  52.             do {
  53.                var5 = var7 + JCChartUtil.pow10(-var23);
  54.                --var23;
  55.             } while(var5 <= var7);
  56.          } else {
  57.             do {
  58.                var7 = var5 - JCChartUtil.pow10(-var23);
  59.                --var23;
  60.             } while(var5 <= var7);
  61.          }
  62.       }
  63.  
  64.       if (var18) {
  65.          var5 = super.parent.max.value;
  66.       }
  67.  
  68.       var7 = super.parent.min.isDefault ? var7 : super.parent.min.value;
  69.       var5 = super.parent.max.isDefault ? var5 : super.parent.max.value;
  70.       var9 = this.calcOrigin(var7, var5);
  71.       double var24 = super.parent.min.isDefault ? (var7 < var9 ? var7 : var9) : var7;
  72.       double var26 = super.parent.max.isDefault ? (var5 > var9 ? var5 : var9) : var5;
  73.       double var28 = (double)0.0F;
  74.       boolean var30 = false;
  75.  
  76.       for(int var31 = 0; var31 < 2 && !var30; ++var31) {
  77.          var7 = JCChartUtil.precFloor(super.parent.precision.value, var7);
  78.          var5 = JCChartUtil.precCeil(super.parent.precision.value, var5);
  79.          if (var18) {
  80.             var5 = super.parent.max.value;
  81.          }
  82.  
  83.          var7 = super.parent.min.isDefault ? var7 : super.parent.min.value;
  84.          var5 = super.parent.max.isDefault ? var5 : super.parent.max.value;
  85.          double var32 = super.parent.min.isDefault ? (var7 < var9 ? var7 : var9) : var7;
  86.          double var34 = super.parent.max.isDefault ? (var5 > var9 ? var5 : var9) : var5;
  87.          var7 = var32;
  88.          var5 = var34;
  89.          var28 = (double)0.5F * JCChartUtil.pow10(-super.parent.precision.value - 1);
  90.          super.parent.pixelLength();
  91.          var11 = super.parent.numSpacing.value;
  92.          var13 = super.parent.tickSpacing.value;
  93.          if (super.parent.numSpacing.isDefault && super.parent.tickSpacing.isDefault) {
  94.             int var58 = this.calcMaxAnnoSize(var32, var34);
  95.             int var65 = var58 == 0 ? 0 : super.parent.pixelLength() / var58;
  96.             double var38 = var34 - var32;
  97.             var38 = var38 > (double)0.0F ? var38 : -var38;
  98.             if (var65 <= 0) {
  99.                var11 = (double)0.0F;
  100.                var13 = (double)0.0F;
  101.             } else if (var18) {
  102.                if (super.parent.chartArea.angleUnit == 2) {
  103.                   while(90 % var65 != 0 && var65 > 1) {
  104.                      --var65;
  105.                   }
  106.                }
  107.  
  108.                double var40 = var38 / (double)(var65 * 4);
  109.                if (super.parent.chartArea.angleUnit != 2) {
  110.                   for(int var42 = (int)var40; (var40 - (double)var42 != (double)0.0F || var38 % var40 != (double)0.0F || var42 % 5 != 0 && var42 % 10 != 0) && var65 > 1; var42 = (int)var40) {
  111.                      --var65;
  112.                      var40 = var38 / (double)(var65 * 4);
  113.                   }
  114.                }
  115.  
  116.                var13 = var40;
  117.                byte var69;
  118.                if (var65 < 4) {
  119.                   var69 = 1;
  120.                } else if (var65 % 2 == 1) {
  121.                   if (var65 % 3 == 0) {
  122.                      var69 = 3;
  123.                   } else {
  124.                      var69 = 1;
  125.                   }
  126.                } else if (var65 > 4 && var65 % 4 == 0) {
  127.                   var69 = 4;
  128.                } else {
  129.                   var69 = 2;
  130.                }
  131.  
  132.                var11 = var40 * (double)var69;
  133.             } else {
  134.                double var68 = var38 / (double)var65;
  135.                DoubleCoord var70 = JCChartUtil.calcTik(var68, super.parent.precision.value);
  136.                var13 = var70.x;
  137.                var11 = var70.y;
  138.             }
  139.          } else if (super.parent.tickSpacing.isDefault) {
  140.             int var36 = super.parent.precision.value;
  141.             double var37 = JCChartUtil.pow10(-var36);
  142.             var11 = var37 * Math.floor(var11 / var37 + (double)0.5F);
  143.             var13 = super.parent.numSpacing.value / (double)2.0F;
  144.          } else if (super.parent.numSpacing.isDefault) {
  145.             var11 = (double)2.0F * var13;
  146.             int var57 = super.parent.precision.value;
  147.             double var64 = JCChartUtil.pow10(-var57);
  148.             var11 = var64 * Math.floor(var11 / var64 + (double)0.5F);
  149.          }
  150.  
  151.          if (var11 != (double)0.0F) {
  152.             double var59 = (var32 - var9) / var11;
  153.             if (var59 != Math.floor(var59)) {
  154.                var7 = var9 + Math.floor(var59 - (double)1.0F) * var11;
  155.             } else {
  156.                var7 = var9 + Math.floor(var59) * var11;
  157.             }
  158.  
  159.             var59 = (var34 - var9) / var11;
  160.             if (var59 != Math.floor(var59)) {
  161.                var5 = var9 + Math.floor(var59 + (double)1.0F) * var11;
  162.             } else {
  163.                var5 = var9 + Math.floor(var59) * var11;
  164.             }
  165.  
  166.             double var67 = var5 - var7;
  167.             if ((var67 > (double)0.0F ? var67 : -var67) < var28) {
  168.                var5 = var7 + var11;
  169.             }
  170.          } else {
  171.             double var61 = var34 - var32;
  172.             if ((var61 > (double)0.0F ? var61 : -var61) < var28) {
  173.                var5 = var32 + (double)1.0F;
  174.             }
  175.          }
  176.  
  177.          double var62 = var7 - var32;
  178.          if (!((var62 > (double)0.0F ? var62 : -var62) > var28)) {
  179.             var62 = var5 - var34;
  180.             if (!((var62 > (double)0.0F ? var62 : -var62) > var28)) {
  181.                continue;
  182.             }
  183.          }
  184.  
  185.          var30 = true;
  186.          if (var5 - var11 >= var26) {
  187.             var5 -= var11;
  188.          } else {
  189.             var30 = false;
  190.          }
  191.  
  192.          if (var7 + var11 <= var24) {
  193.             var7 += var11;
  194.          } else {
  195.             var30 = false;
  196.          }
  197.       }
  198.  
  199.       if (!super.parent.isVertical && (super.parent.annotationMethod == 2 || var18)) {
  200.          var7 = var1;
  201.          var5 = var3;
  202.          if (var3 <= var1) {
  203.             var23 = 0;
  204.  
  205.             do {
  206.                var5 = var7 + JCChartUtil.pow10(var23);
  207.                var7 -= var5 - var7;
  208.                ++var23;
  209.             } while(var5 <= var7);
  210.          }
  211.  
  212.          var24 = var7;
  213.          var26 = var5;
  214.       }
  215.  
  216.       if (super.parent.dataLimits != null && (super.parent.annotationMethod == 3 || super.parent.isPrimary && (var15 || var16 || var17))) {
  217.          double var55 = var1;
  218.          double var56 = var3;
  219.          if (super.parent.min.isDefault) {
  220.             var55 = var1 - super.parent.step / (double)2.0F;
  221.          }
  222.  
  223.          if (super.parent.max.isDefault) {
  224.             var56 = var3 + super.parent.step / (double)2.0F;
  225.          }
  226.  
  227.          var7 = var24 = var1 < var55 ? var1 : var55;
  228.          var5 = var26 = var3 > var56 ? var3 : var56;
  229.       }
  230.  
  231.       if (super.parent.isShowing) {
  232.          if (super.parent.min.isDefault) {
  233.             super.parent.min.value = var7;
  234.          }
  235.  
  236.          if (super.parent.max.isDefault) {
  237.             super.parent.max.value = var5;
  238.          }
  239.       } else {
  240.          if (super.parent.min.isDefault) {
  241.             super.parent.min.value = var24;
  242.          }
  243.  
  244.          if (super.parent.max.isDefault) {
  245.             super.parent.max.value = var26;
  246.          }
  247.       }
  248.  
  249.       var9 = this.calcOrigin(super.parent.min.value, super.parent.max.value);
  250.       if (super.parent.origin.isDefault) {
  251.          super.parent.origin.value = var9;
  252.       }
  253.  
  254.       if (super.parent.tickSpacing.isDefault) {
  255.          super.parent.tickSpacing.value = var13;
  256.       }
  257.  
  258.       if (super.parent.numSpacing.isDefault) {
  259.          super.parent.numSpacing.value = var11;
  260.       }
  261.  
  262.       if (super.parent.gridSpacing.isDefault) {
  263.          super.parent.gridSpacing.value = super.parent.numSpacing.value;
  264.       }
  265.  
  266.    }
  267.  
  268.    void calcTransformation() {
  269.       int var1 = super.parent.pixelLength();
  270.       int var2 = super.parent.pixelStart();
  271.       double var3 = super.parent.min.value;
  272.       double var5 = super.parent.max.value;
  273.       int var7 = super.parent.precision.value;
  274.       double var9 = (double)0.5F * JCChartUtil.pow10(-var7 - 1);
  275.       if (super.parent.isReversed) {
  276.          var1 = -var1;
  277.       }
  278.  
  279.       if (Math.abs(var5 - var3) < var9) {
  280.          super.scale = (double)1.0F;
  281.          super.shift = (double)0.0F;
  282.       } else {
  283.          super.scale = (double)var1 / (var5 - var3);
  284.          if (var1 < 0) {
  285.             super.shift = (double)var2 - var5 * super.scale;
  286.          } else {
  287.             super.shift = (double)var2 - var3 * super.scale;
  288.          }
  289.       }
  290.    }
  291.  
  292.    boolean fixBounds() {
  293.       return super.fixBounds();
  294.    }
  295.  
  296.    void drawTicks(Graphics var1) {
  297.       if (super.parent.annotationMethod != 0 && super.parent.tickSpacing.isDefault) {
  298.          super.drawTicks(var1);
  299.       } else {
  300.          int var2 = super.parent.precision.value;
  301.          double var10 = (double)0.5F * JCChartUtil.pow10(-var2 - 1);
  302.          if (!(super.parent.tickSpacing.value <= var10)) {
  303.             int var4 = super.parent.linePosition();
  304.             double var5 = super.parent.tickSpacing.value;
  305.             var5 = var5 > (double)0.0F ? var5 : -var5;
  306.             var5 = var5 < var10 ? var10 * (double)2.0F : var5;
  307.  
  308.             for(double var7 = super.parent.firstInc(var5); var7 <= super.parent.max.value + var10; var7 += var5) {
  309.                int var9 = super.parent.toPixel(var7);
  310.                ((AxisHandler)this).drawTick(var1, var4, var9);
  311.             }
  312.  
  313.          }
  314.       }
  315.    }
  316.  
  317.    String format(double var1, int var3) {
  318.       return JCChartUtil.format(var1, var3);
  319.    }
  320.  
  321.    void calcPrecision() {
  322.       if (super.parent.precision.isDefault) {
  323.          if (super.parent.annotationMethod != 2 && super.parent.dataLimits != null) {
  324.             double var1 = super.parent.min.isDefault ? super.parent.dataLimits.min : super.parent.min.value;
  325.             double var3 = super.parent.max.isDefault ? super.parent.dataLimits.max : super.parent.max.value;
  326.             if (var3 <= var1) {
  327.                super.parent.precision.value = JCChartUtil.nicePrecision(var3);
  328.             } else {
  329.                super.parent.precision.value = JCChartUtil.nicePrecision(var3 - var1);
  330.             }
  331.          } else {
  332.             super.parent.precision.value = 0;
  333.          }
  334.       }
  335.  
  336.       int var5 = super.parent.precision.value;
  337.       super.parent.precision.value = var5 > 6 ? 6 : (var5 < -6 ? -6 : var5);
  338.    }
  339.  
  340.    double range() {
  341.       return super.parent.max.value - super.parent.min.value;
  342.    }
  343.  
  344.    void translate(double var1) {
  345.       if (super.parent.isReversed) {
  346.          var1 = -var1;
  347.       }
  348.  
  349.       DerivedDouble var10000 = super.parent.min;
  350.       var10000.value += var1;
  351.       var10000 = super.parent.max;
  352.       var10000.value += var1;
  353.    }
  354.  
  355.    private int calcMaxAnnoSize(double var1, double var3) {
  356.       Dimension var5 = new Dimension();
  357.       ((AxisHandler)this).getAnnoExtent(var5, var3, super.parent.precision.value);
  358.       ((AxisHandler)this).getAnnoExtent(var5, var1, super.parent.precision.value);
  359.       if (super.parent.isVertical) {
  360.          super.parent.resize(var5.width + 1 + super.parent.tickLength / 2, super.parent.getHeight());
  361.       } else {
  362.          super.parent.resize(super.parent.getWidth(), var5.height + 1 + super.parent.tickLength / 2);
  363.       }
  364.  
  365.       return super.parent.isVertical ? var5.height : var5.width;
  366.    }
  367.  
  368.    private double calcOrigin(double var1, double var3) {
  369.       double var5 = (double)0.0F;
  370.       if (super.parent.origin.isDefault) {
  371.          switch (super.parent.originPlacement.value) {
  372.             case 0:
  373.                if (var1 <= (double)0.0F && var3 >= (double)0.0F) {
  374.                   var5 = (double)0.0F;
  375.                } else {
  376.                   var5 = var1;
  377.                }
  378.                break;
  379.             case 1:
  380.                var5 = var1;
  381.                break;
  382.             case 2:
  383.                var5 = var3;
  384.                break;
  385.             case 3:
  386.                var5 = (double)0.0F;
  387.          }
  388.       }
  389.  
  390.       return var5;
  391.    }
  392. }
  393.