home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JDPChart.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  12.1 KB  |  799 lines

  1. import java.awt.Color;
  2. import java.awt.Component;
  3. import java.awt.Dimension;
  4. import java.awt.Event;
  5. import java.awt.Font;
  6. import java.awt.FontMetrics;
  7. import java.awt.Graphics;
  8. import java.awt.Image;
  9. import java.awt.Insets;
  10. import java.awt.Panel;
  11. import java.awt.Rectangle;
  12. import java.awt.image.ImageObserver;
  13. import java.util.Date;
  14.  
  15. public class JDPChart extends Panel {
  16.    JDPUser user;
  17.    // $FF: renamed from: p JDPChartParms
  18.    JDPChartParms field_0;
  19.    Dimension Bounds;
  20.    boolean debugon;
  21.    Image offscreen;
  22.    Rectangle offscreensize;
  23.    // $FF: renamed from: gr java.awt.Graphics
  24.    Graphics field_1;
  25.    float maxYval;
  26.    float minYval;
  27.    float scaleXFactor;
  28.    float scaleYFactor;
  29.    int minx;
  30.    int miny;
  31.    int maxx;
  32.    int maxy;
  33.    int totalXplots;
  34.    int totalXcolumns;
  35.    int columnWidth;
  36.    static int COLUMN = 1;
  37.    static int BAR = 2;
  38.    static int LINE = 3;
  39.    static int AREA = 4;
  40.    static int PIE = 5;
  41.    static int GANTT = 6;
  42.    static int HORIZONTAL = 1;
  43.    static int VERTICAL = 10;
  44.    static int FOREGROUND = 100;
  45.    static int BACKGROUND = 1000;
  46.    int[] gridArray;
  47.    int[] widths;
  48.    Font lastFont;
  49.    // $FF: renamed from: fm java.awt.FontMetrics
  50.    FontMetrics field_2;
  51.    int minimumWidth = 60;
  52.    int minimumHeight = 60;
  53.  
  54.    public void paint(Graphics var1) {
  55.       this.update(var1);
  56.    }
  57.  
  58.    public JDPChart(JDPUser var1, JDPChartParms var2) {
  59.       if (!JDPUser.classactivated) {
  60.          System.out.println("Software Violation - this class may only be used in conjunction with JDesignerPro.");
  61.       } else {
  62.          this.user = var1;
  63.          this.field_0 = var2;
  64.          if (var2.chartData != null) {
  65.             this.calculateScaling();
  66.             ((Component)this).repaint();
  67.          }
  68.       }
  69.    }
  70.  
  71.    void plotPieChart(Graphics var1) {
  72.       this.Bounds = ((Component)this).size();
  73.       this.maxx = this.Bounds.width - this.minx - 15;
  74.       this.maxy = this.Bounds.height - 15;
  75.       float var2 = 0.0F;
  76.       byte var3 = 15;
  77.       if (this.field_0.piechartData != null) {
  78.          if (this.field_0.elementLegend != null && this.field_0.elementLegend.length > 0) {
  79.             var1.getFont();
  80.             if (this.field_0.elementLegendFont != null) {
  81.                var1.setFont(new Font(this.field_0.elementLegendFont, 0, 12));
  82.             } else {
  83.                var1.setFont(new Font("TimesRoman", 0, 12));
  84.             }
  85.  
  86.             int var4 = 0;
  87.  
  88.             for(int var5 = 0; var5 < this.field_0.elementLegend.length; ++var5) {
  89.                int var6 = this.user.u.StringWidth(var1, this.field_0.elementLegend[var5]);
  90.                if (var6 > var4) {
  91.                   var4 = var6;
  92.                }
  93.             }
  94.  
  95.             this.maxx = this.maxx - var4 - 12;
  96.             this.drawLegend(var1);
  97.          }
  98.  
  99.          byte var18 = 0;
  100.          if (this.field_0.pieSplitSegment != null) {
  101.             for(int var19 = 0; var19 < this.field_0.pieSplitSegment.length; ++var19) {
  102.                if (this.field_0.pieSplitSegment[var19]) {
  103.                   var18 = var3;
  104.                }
  105.             }
  106.          }
  107.  
  108.          float var20 = (float)(this.maxx - 50 - var18 * 2);
  109.          float var21 = (float)(25 + var18);
  110.          float var7 = (float)(this.miny + var18);
  111.          if ((float)(this.maxy - 25) < var20) {
  112.             var20 = (float)(this.maxy - 50 - var18 * 2);
  113.             var21 = ((float)this.maxx - var20) / 2.0F;
  114.          } else {
  115.             var7 = ((float)this.maxy - var20) / 2.0F;
  116.          }
  117.  
  118.          this.drawChartTitle(var1);
  119.  
  120.          for(int var8 = 0; var8 < this.field_0.piechartData.length; ++var8) {
  121.             var2 += this.field_0.piechartData[var8];
  122.          }
  123.  
  124.          float var22 = 0.0F;
  125.          float var9 = 0.0F;
  126.          float var10 = 0.0F;
  127.          if (this.debugon) {
  128.             System.out.print("p.piechartData.length = ");
  129.             System.out.println(this.field_0.piechartData.length);
  130.             System.out.print("totalSum = ");
  131.             System.out.println(var2);
  132.          }
  133.  
  134.          for(int var11 = 0; var11 < this.field_0.piechartData.length; ++var11) {
  135.             float var12 = 360.0F * this.field_0.piechartData[var11] / var2;
  136.             if (this.field_0.elementColor.length > var11) {
  137.                var1.setColor(this.field_0.elementColor[var11]);
  138.             }
  139.  
  140.             var9 = 0.0F;
  141.             var10 = 0.0F;
  142.             float var13 = (float)((Math.PI * 2D) * (double)(var22 / 360.0F + var12 / 720.0F));
  143.             if (this.field_0.pieSplitSegment != null && this.field_0.pieSplitSegment[var11]) {
  144.                var9 = (float)var3 * (float)Math.cos((double)var13);
  145.                var10 = (float)(-var3) * (float)Math.sin((double)var13);
  146.             }
  147.  
  148.             if (this.debugon) {
  149.                System.out.print("startAngle = ");
  150.                System.out.println(var22);
  151.                System.out.print("arcAngle = ");
  152.                System.out.println(var12);
  153.                System.out.print("thisangle = ");
  154.                System.out.println(var13);
  155.                System.out.print("cos(thisangle) = ");
  156.                System.out.println(Math.cos((double)var13));
  157.                System.out.print("sin(thisangle) = ");
  158.                System.out.println(Math.sin((double)var13));
  159.                System.out.print("startAngle+arcAngle = ");
  160.                System.out.println(var22 + var12);
  161.             }
  162.  
  163.             var1.fillArc((int)(var21 + var9), (int)(var7 + var10), (int)var20, (int)var20, (int)var22, (int)(var12 + 1.0F));
  164.             if (this.field_0.elementBorderColor.length > var11) {
  165.                var1.setColor(this.field_0.elementBorderColor[var11]);
  166.             }
  167.  
  168.             var1.drawArc((int)(var21 + var9), (int)(var7 + var10), (int)var20, (int)var20, (int)var22, (int)(var12 + 1.0F));
  169.             int var14 = (int)(var21 + var9 + (float)((int)(var20 / 2.0F)));
  170.             int var15 = (int)(var7 + var10 + (float)((int)(var20 / 2.0F)));
  171.             int var16 = (int)(var20 / 2.0F);
  172.             var1.drawLine(var14, var15, (int)((double)var14 + (double)var16 * Math.cos((Math.PI * 2D) * (((double)var22 - (double)0.5F) / (double)360.0F))), (int)((double)var15 - (double)var16 * Math.sin((Math.PI * 2D) * (((double)var22 - (double)0.5F) / (double)360.0F))));
  173.             if (var11 == this.field_0.piechartData.length - 1) {
  174.                var1.drawLine(var14, var15, var14 + var16, var15);
  175.             }
  176.  
  177.             var1.setColor(this.field_0.pieLabelColor);
  178.             float var17 = 0.0F;
  179.             if (Math.cos((double)var13) < (double)0.0F) {
  180.                var17 = (float)(this.user.u.StringWidth(var1, this.field_0.pieLabel[var11]) - 15);
  181.             }
  182.  
  183.             if (this.field_0.pieLabel.length > var11) {
  184.                var1.drawString(this.field_0.pieLabel[var11], (int)((double)((float)var14 - var17) + (double)(var16 + 15) * Math.cos((double)var13) - (double)5.0F), (int)((double)var15 - (double)(var16 + 15) * Math.sin((double)var13)) + 7);
  185.             }
  186.  
  187.             var22 += var12;
  188.          }
  189.  
  190.       }
  191.    }
  192.  
  193.    void drawChartTitle(Graphics var1) {
  194.       if (this.field_0.chartTitle != null) {
  195.          var1.setColor(this.field_0.chartTitleColor);
  196.          Font var2 = var1.getFont();
  197.          if (this.field_0.chartTitleFont != null) {
  198.             var1.setFont(new Font(this.field_0.chartTitleFont, 1, 14));
  199.          } else {
  200.             var1.setFont(new Font("TimesRoman", 1, 14));
  201.          }
  202.  
  203.          var1.drawString(this.field_0.chartTitle, (this.maxx - this.minx - this.user.u.StringWidth(var1, this.field_0.chartTitle)) / 2 + this.minx, 10);
  204.          var1.setFont(var2);
  205.       }
  206.  
  207.    }
  208.  
  209.    public Dimension minimumSize() {
  210.       Dimension var1 = new Dimension(this.minimumWidth, this.minimumHeight);
  211.       return var1;
  212.    }
  213.  
  214.    public void update(Graphics var1) {
  215.       Rectangle var2 = ((Component)this).bounds();
  216.       var2.width -= 3;
  217.       var2.height -= 3;
  218.       if (this.offscreen == null || var2.width != this.offscreensize.width || var2.height != this.offscreensize.height) {
  219.          this.offscreen = ((Component)this).createImage(var2.width, var2.height);
  220.          this.offscreensize = var2;
  221.          this.field_1 = this.offscreen.getGraphics();
  222.          this.field_1.setFont(((Component)this).getFont());
  223.       }
  224.  
  225.       this.field_1.setColor(((Component)this).getBackground());
  226.       this.field_1.fillRect(0, 0, var2.width, var2.height);
  227.       this.field_1.setColor(Color.black);
  228.       if (this.field_0.chartType == COLUMN || this.field_0.chartType == BAR || this.field_0.chartType == LINE || this.field_0.chartType == AREA || this.field_0.chartType == GANTT) {
  229.          this.plotRegularChart(this.field_1);
  230.       }
  231.  
  232.       if (this.field_0.chartType == PIE) {
  233.          this.plotPieChart(this.field_1);
  234.       }
  235.  
  236.       var1.drawImage(this.offscreen, 3, 3, (ImageObserver)null);
  237.    }
  238.  
  239.    void drawLegend(Graphics var1) {
  240.       var1.drawRect(this.maxx + 5, this.miny - 5, this.Bounds.width - this.maxx - 10, this.field_0.elementLegend.length * 15 + 5);
  241.  
  242.       for(int var2 = 0; var2 < this.field_0.elementLegend.length; ++var2) {
  243.          var1.setColor(this.field_0.elementColor[var2]);
  244.          var1.fillRect(this.maxx + 7, this.miny + var2 * 15, 10, 10);
  245.          var1.setColor(this.field_0.elementBorderColor[var2]);
  246.          var1.drawRect(this.maxx + 7, this.miny + var2 * 15, 10, 10);
  247.          var1.setColor(Color.black);
  248.          if (this.field_0.elementLegend[var2] != null) {
  249.             var1.drawString(this.field_0.elementLegend[var2], this.maxx + 19, this.miny + 10 + var2 * 15);
  250.          }
  251.       }
  252.  
  253.    }
  254.  
  255.    public void calculateScaling() {
  256.       this.maxYval = -1.0E9F;
  257.       this.minYval = 1.0E9F;
  258.       if (this.field_0.chartData != null && this.field_0.chartData.length != 0) {
  259.          int var1 = 0;
  260.          this.gridArray = new int[4];
  261.          String var2 = Integer.toString(this.field_0.gridLineSetting);
  262.          int var3 = var2.length();
  263.          if (var3 > 4) {
  264.             var3 = 4;
  265.          }
  266.  
  267.          for(int var4 = var3; var4 > 0; --var4) {
  268.             if (var2.substring(var4 - 1, var4).compareTo("1") == 0) {
  269.                this.gridArray[var1] = 1;
  270.             }
  271.  
  272.             ++var1;
  273.          }
  274.  
  275.          this.minx = 30;
  276.          this.miny = 5;
  277.          if (this.field_0.chartType == COLUMN || this.field_0.chartType == LINE || this.field_0.chartType == AREA) {
  278.             this.minx = 30;
  279.          }
  280.  
  281.          if (this.field_0.chartType == PIE) {
  282.             this.miny += 15;
  283.          }
  284.  
  285.          this.totalXplots = this.field_0.chartData[0].length;
  286.          this.totalXcolumns = this.field_0.chartData.length;
  287.          if (this.debugon) {
  288.             System.out.println("totalXplots = " + Integer.toString(this.totalXplots));
  289.             System.out.println("totalXcolumns = " + Integer.toString(this.totalXcolumns));
  290.          }
  291.  
  292.          if (this.field_0.autoscale) {
  293.             if (this.field_0.chartType == COLUMN || this.field_0.chartType == LINE || this.field_0.chartType == BAR || this.field_0.chartType == GANTT) {
  294.                for(int var7 = 0; var7 < this.totalXcolumns; ++var7) {
  295.                   for(int var5 = 0; var5 < this.totalXplots; ++var5) {
  296.                      if (this.field_0.chartData[var7][var5] > this.maxYval) {
  297.                         this.maxYval = this.field_0.chartData[var7][var5];
  298.                      }
  299.  
  300.                      if (this.field_0.chartData[var7][var5] < this.minYval) {
  301.                         this.minYval = this.field_0.chartData[var7][var5];
  302.                      }
  303.                   }
  304.                }
  305.  
  306.                if (this.minYval > 0.0F && !this.field_0.autozoom && this.field_0.chartType != GANTT) {
  307.                   this.minYval = 0.0F;
  308.                } else if (this.minYval > 0.0F && this.field_0.autozoom && this.field_0.chartType != GANTT) {
  309.                   this.minYval = 0.95F * this.minYval;
  310.                }
  311.             }
  312.  
  313.             if (this.field_0.chartType == AREA) {
  314.                float var8 = 0.0F;
  315.  
  316.                for(int var9 = 0; var9 < this.totalXplots; ++var9) {
  317.                   for(int var6 = 0; var6 < this.totalXcolumns; ++var6) {
  318.                      var8 += this.field_0.chartData[var6][var9];
  319.                   }
  320.  
  321.                   if (var8 > this.maxYval) {
  322.                      this.maxYval = var8;
  323.                   }
  324.  
  325.                   if (var8 < this.minYval) {
  326.                      this.minYval = var8;
  327.                   }
  328.  
  329.                   var8 = 0.0F;
  330.                }
  331.  
  332.                if (this.minYval > 0.0F && !this.field_0.autozoom) {
  333.                   this.minYval = 0.0F;
  334.                }
  335.             }
  336.          } else {
  337.             this.maxYval = this.field_0.maxPlotValue;
  338.             this.minYval = this.field_0.minPlotValue;
  339.          }
  340.  
  341.          if (this.field_0.chartTitle != null) {
  342.             this.miny += 15;
  343.          }
  344.  
  345.          if (this.debugon) {
  346.             System.out.print("maxYval = ");
  347.             System.out.println(this.maxYval);
  348.             System.out.print("minYval = ");
  349.             System.out.println(this.minYval);
  350.          }
  351.  
  352.       }
  353.    }
  354.  
  355.    void drawXaxisLabels(Graphics var1) {
  356.       if (this.field_0.xaxisLabel != null) {
  357.          var1.getFont();
  358.          if (this.field_0.xaxisLabelFont != null) {
  359.             var1.setFont(new Font(this.field_0.xaxisLabelFont, 0, 12));
  360.          } else {
  361.             var1.setFont(new Font("TimesRoman", 0, 12));
  362.          }
  363.  
  364.          if (this.field_0.chartType == COLUMN) {
  365.             for(int var2 = 0; var2 < this.totalXplots; ++var2) {
  366.                var1.setColor(this.field_0.xaxisLabelColor);
  367.                var1.drawString(this.field_0.xaxisLabel[var2], (int)((float)(this.minx + 5 + this.totalXcolumns * this.columnWidth / 2) + this.scaleXFactor * (float)var2 - (float)(this.user.u.StringWidth(var1, this.field_0.xaxisLabel[var2]) / 2)), this.maxy + 15);
  368.             }
  369.          }
  370.  
  371.          if (this.field_0.chartType == LINE || this.field_0.chartType == AREA) {
  372.             for(int var3 = 0; var3 < this.totalXplots; ++var3) {
  373.                var1.setColor(this.field_0.xaxisLabelColor);
  374.                var1.drawString(this.field_0.xaxisLabel[var3], (int)((float)this.minx + this.scaleXFactor * (float)var3 - (float)(this.user.u.StringWidth(var1, this.field_0.xaxisLabel[var3]) / 2)), this.maxy + 15);
  375.             }
  376.          }
  377.  
  378.          if (this.field_0.chartType == BAR) {
  379.             for(int var4 = 0; var4 < this.totalXplots; ++var4) {
  380.                var1.setColor(this.field_0.xaxisLabelColor);
  381.                var1.drawString(this.field_0.xaxisLabel[var4], 1, (int)((float)(this.miny + 5 + this.totalXcolumns * this.columnWidth / 2) + this.scaleXFactor * (float)var4));
  382.             }
  383.          }
  384.  
  385.          if (this.field_0.chartType == GANTT) {
  386.             for(int var5 = 0; var5 < this.totalXplots; ++var5) {
  387.                var1.setColor(this.field_0.xaxisLabelColor);
  388.                var1.drawString(this.field_0.xaxisLabel[var5], 1, this.miny + 20 + this.columnWidth * var5);
  389.             }
  390.          }
  391.  
  392.       }
  393.    }
  394.  
  395.    public void setMinimumWidth(int var1) {
  396.       this.minimumWidth = var1;
  397.    }
  398.  
  399.    public int getMinimumWidth() {
  400.       return this.minimumWidth;
  401.    }
  402.  
  403.    public void setMinimumHeight(int var1) {
  404.       this.minimumHeight = var1;
  405.    }
  406.  
  407.    public Dimension preferredSize() {
  408.       return this.minimumSize();
  409.    }
  410.  
  411.    public int getMinimumHeight() {
  412.       return this.minimumHeight;
  413.    }
  414.  
  415.    public Insets insets() {
  416.       return new Insets(3, 3, 0, 0);
  417.    }
  418.  
  419.    public void layout() {
  420.       ((Component)this).repaint();
  421.    }
  422.  
  423.    public boolean handleEvent(Event var1) {
  424.       switch (var1.id) {
  425.          case 202:
  426.             ((Component)this).repaint();
  427.             return false;
  428.          case 1001:
  429.             return false;
  430.          default:
  431.             return false;
  432.       }
  433.    }
  434.  
  435.    void plotRegularChart(Graphics var1) {
  436.       float var2 = 0.0F;
  437.       if (this.field_0.chartData != null && this.totalXplots != 0 && (this.totalXplots != 1 || this.field_0.chartType != LINE && this.field_0.chartType != AREA)) {
  438.          if (this.field_0.chartType == BAR || this.field_0.chartType == GANTT) {
  439.             this.minx = 0;
  440.             if (this.field_0.xaxisLabel != null) {
  441.                for(int var3 = 0; var3 < this.field_0.xaxisLabel.length; ++var3) {
  442.                   int var4 = this.user.u.StringWidth(var1, this.field_0.xaxisLabel[var3]);
  443.                   if (var4 + 10 > this.minx) {
  444.                      this.minx = var4 + 10;
  445.                   }
  446.                }
  447.             }
  448.          }
  449.  
  450.          this.Bounds = ((Component)this).size();
  451.          this.maxx = this.Bounds.width - 15;
  452.          if (this.field_0.elementLegend != null && this.field_0.elementLegend.length > 0) {
  453.             var1.getFont();
  454.             if (this.field_0.elementLegendFont != null) {
  455.                var1.setFont(new Font(this.field_0.elementLegendFont, 0, 12));
  456.             } else {
  457.                var1.setFont(new Font("TimesRoman", 0, 12));
  458.             }
  459.  
  460.             int var11 = 0;
  461.  
  462.             for(int var14 = 0; var14 < this.field_0.elementLegend.length; ++var14) {
  463.                int var5 = this.user.u.StringWidth(var1, this.field_0.elementLegend[var14]);
  464.                if (var5 > var11) {
  465.                   var11 = var5;
  466.                }
  467.             }
  468.  
  469.             this.maxx = this.maxx - var11 - 12;
  470.             this.drawLegend(var1);
  471.          }
  472.  
  473.          this.maxy = this.Bounds.height - this.miny;
  474.          if (this.field_0.xaxisLabel != null) {
  475.             this.maxy -= 10;
  476.          }
  477.  
  478.          if (this.field_0.xaxisTitle != null) {
  479.             this.maxy -= 10;
  480.          }
  481.  
  482.          if (this.field_0.chartType == COLUMN) {
  483.             this.scaleXFactor = (float)((this.maxx - this.minx) / this.totalXplots);
  484.             this.scaleYFactor = (float)(-(this.maxy - this.miny)) / (this.maxYval - this.minYval);
  485.             this.columnWidth = (int)((double)(this.maxx - this.minx) / ((double)this.totalXplots * (double)this.totalXcolumns * 1.15));
  486.          } else if (this.field_0.chartType != LINE && this.field_0.chartType != AREA) {
  487.             if (this.field_0.chartType == BAR) {
  488.                this.scaleXFactor = (float)((this.maxy - this.miny) / this.totalXplots);
  489.                this.scaleYFactor = (float)(this.maxx - this.minx) / (this.maxYval - this.minYval);
  490.                this.columnWidth = (int)((double)(this.maxy - this.miny) / ((double)this.totalXplots * (double)this.totalXcolumns * 1.15));
  491.             } else if (this.field_0.chartType == GANTT) {
  492.                this.scaleXFactor = (float)((this.maxy - this.miny) / this.totalXplots);
  493.                this.scaleYFactor = (float)(this.maxx - this.minx) / (this.maxYval - this.minYval);
  494.                this.columnWidth = (this.maxy - this.miny) / this.totalXplots;
  495.             }
  496.          } else {
  497.             this.scaleXFactor = (float)((this.maxx - this.minx) / (this.totalXplots - 1));
  498.             this.scaleYFactor = (float)(-(this.maxy - this.miny)) / (this.maxYval - this.minYval);
  499.             this.columnWidth = (int)((double)(this.maxx - this.minx) / ((double)this.totalXplots * (double)this.totalXcolumns * 1.15));
  500.          }
  501.  
  502.          if (this.columnWidth > (this.maxx - this.minx) / 3) {
  503.             this.columnWidth = (this.maxx - this.minx) / 3;
  504.          }
  505.  
  506.          if (this.debugon) {
  507.             System.out.print("Bounds.width = ");
  508.             System.out.println(this.Bounds.width);
  509.             System.out.print("Bounds.height = ");
  510.             System.out.println(this.Bounds.height);
  511.             System.out.print("scaleXFactor = ");
  512.             System.out.println(this.scaleXFactor);
  513.             System.out.print("scaleYFactor = ");
  514.             System.out.println(this.scaleYFactor);
  515.             System.out.print("columnWidth = ");
  516.             System.out.println(this.columnWidth);
  517.          }
  518.  
  519.          this.drawChartTitle(var1);
  520.          if (this.field_0.xaxisTitle != null) {
  521.             var1.setColor(this.field_0.xaxisTitleColor);
  522.             Font var12 = var1.getFont();
  523.             if (this.field_0.xaxisTitleFont != null) {
  524.                var1.setFont(new Font(this.field_0.xaxisTitleFont, 1, 12));
  525.             } else {
  526.                var1.setFont(new Font("TimesRoman", 1, 12));
  527.             }
  528.  
  529.             if (this.field_0.chartType != BAR && this.field_0.chartType != GANTT) {
  530.                var1.drawString(this.field_0.xaxisTitle, (this.maxx - this.minx - this.user.u.StringWidth(var1, this.field_0.xaxisTitle)) / 2 + this.minx, this.maxy + 27);
  531.             } else {
  532.                var1.drawString(this.field_0.xaxisTitle, 1, this.maxy + 27);
  533.             }
  534.  
  535.             var1.setFont(var12);
  536.          }
  537.  
  538.          this.drawYaxisScale(var1);
  539.          this.drawXaxisLabels(var1);
  540.          int var13 = 0;
  541.          if (this.field_0.chartType != COLUMN && this.field_0.chartType != LINE && this.field_0.chartType != AREA) {
  542.             if (this.field_0.chartType == BAR) {
  543.                var13 = (int)((float)this.minx - this.scaleYFactor * this.minYval);
  544.                if (var13 > this.minx) {
  545.                   var1.setColor(this.field_0.chartFrameColor);
  546.                   var1.drawLine(var13, this.miny - 5, var13, this.maxy);
  547.                }
  548.             }
  549.          } else {
  550.             var13 = (int)((float)this.maxy - this.scaleYFactor * this.minYval);
  551.             if (var13 < this.maxy && var13 > this.miny) {
  552.                var1.setColor(this.field_0.chartFrameColor);
  553.                var1.drawRect(this.minx, var13, this.maxx - this.minx + 1, 0);
  554.             }
  555.          }
  556.  
  557.          if (this.field_0.chartType == COLUMN) {
  558.             for(int var15 = 0; var15 < this.totalXcolumns; ++var15) {
  559.                for(int var20 = 0; var20 < this.totalXplots; ++var20) {
  560.                   if (this.field_0.chartData[var15][var20] != 0.0F) {
  561.                      int var6 = (int)((float)this.maxy + this.scaleYFactor * (this.field_0.chartData[var15][var20] - this.minYval));
  562.                      int var7 = (int)(-this.scaleYFactor * (this.field_0.chartData[var15][var20] - this.minYval) + 1.0F);
  563.                      if (var7 + var6 > var13 && var6 < var13) {
  564.                         var7 = var13 - var6;
  565.                      }
  566.  
  567.                      if (var6 > var13) {
  568.                         var7 = var6 - var13;
  569.                         var6 = var13;
  570.                      }
  571.  
  572.                      var1.setColor(this.field_0.elementColor[var15]);
  573.                      var1.fillRect((int)((float)(this.minx + 5) + this.scaleXFactor * (float)var20 + (float)(this.columnWidth * var15)), var6, this.columnWidth, var7);
  574.                      var1.setColor(this.field_0.elementBorderColor[var15]);
  575.                      var1.drawRect((int)((float)(this.minx + 5) + this.scaleXFactor * (float)var20 + (float)(this.columnWidth * var15)), var6, this.columnWidth, var7);
  576.                   }
  577.                }
  578.             }
  579.          }
  580.  
  581.          if (this.field_0.chartType == BAR) {
  582.             for(int var16 = 0; var16 < this.totalXcolumns; ++var16) {
  583.                for(int var21 = 0; var21 < this.totalXplots; ++var21) {
  584.                   if (this.field_0.chartData[var16][var21] != 0.0F) {
  585.                      int var25 = this.minx;
  586.                      int var30 = (int)(this.scaleYFactor * (this.field_0.chartData[var16][var21] - this.minYval) + 1.0F);
  587.                      if (var25 < var13) {
  588.                         if (var25 + var30 < var13) {
  589.                            var25 += var30;
  590.                            var30 = var13 - var25;
  591.                         } else {
  592.                            var30 -= var13 - var25;
  593.                            var25 = var13;
  594.                         }
  595.                      }
  596.  
  597.                      var1.setColor(this.field_0.elementColor[var16]);
  598.                      var1.fillRect(var25, (int)((float)this.miny + this.scaleXFactor * (float)var21 + (float)(this.columnWidth * var16)), var30, this.columnWidth);
  599.                      var1.setColor(this.field_0.elementBorderColor[var16]);
  600.                      var1.drawRect(var25, (int)((float)this.miny + this.scaleXFactor * (float)var21 + (float)(this.columnWidth * var16)), var30, this.columnWidth);
  601.                   }
  602.                }
  603.             }
  604.          }
  605.  
  606.          if (this.field_0.chartType == GANTT) {
  607.             for(int var17 = 0; var17 < this.field_0.chartData[0].length; ++var17) {
  608.                byte var22 = 0;
  609.                int var26 = this.minx + (int)(this.scaleYFactor * (this.field_0.chartData[0][var17] - this.minYval));
  610.                int var31 = (int)(this.scaleYFactor * (this.field_0.chartData[1][var17] - this.field_0.chartData[0][var17]));
  611.                var1.setColor(this.field_0.elementColor[var17]);
  612.                var1.fillRect(var26, (int)((float)this.miny + this.scaleXFactor * (float)var22 + (float)(this.columnWidth * var17)), var31, this.columnWidth);
  613.                var1.setColor(this.field_0.elementBorderColor[var17]);
  614.                var1.drawRect(var26, (int)((float)this.miny + this.scaleXFactor * (float)var22 + (float)(this.columnWidth * var17)), var31, this.columnWidth);
  615.             }
  616.          }
  617.  
  618.          if (this.field_0.chartType == LINE) {
  619.             float var18 = (float)(this.minx + 1);
  620.  
  621.             for(int var23 = 1; var23 < this.totalXplots; ++var23) {
  622.                if (this.gridArray[1] == 1 && this.gridArray[3] == 1 && var18 != (float)(this.minx + 1)) {
  623.                   var1.setColor(this.field_0.gridColor);
  624.                   var1.drawLine((int)var18, this.miny - 5, (int)var18, this.maxy - 1);
  625.                }
  626.  
  627.                float var27 = (float)this.maxy;
  628.                float var32 = (float)this.maxy;
  629.                var2 = var18 + this.scaleXFactor;
  630.  
  631.                for(int var8 = 0; var8 < this.totalXcolumns; ++var8) {
  632.                   var27 = (float)this.maxy + this.scaleYFactor * this.field_0.chartData[var8][var23 - 1] - 1.0F + (float)(var13 - this.maxy);
  633.                   var32 = (float)this.maxy + this.scaleYFactor * this.field_0.chartData[var8][var23] - 1.0F + (float)(var13 - this.maxy);
  634.                   var1.setColor(this.field_0.elementColor[var8]);
  635.                   var1.drawLine((int)var18, (int)var27, (int)var2 - 1, (int)var32);
  636.                   var1.drawLine((int)var18, (int)var27 + 1, (int)var2 - 1, (int)var32 + 1);
  637.                }
  638.  
  639.                var18 = var2;
  640.             }
  641.          }
  642.  
  643.          if (this.field_0.chartType == AREA) {
  644.             int[] var19 = new int[5];
  645.             int[] var24 = new int[5];
  646.             float var29 = (float)(this.minx + 1);
  647.  
  648.             for(int var34 = 1; var34 < this.totalXplots; ++var34) {
  649.                if (this.gridArray[1] == 1 && this.gridArray[3] == 1 && var29 != (float)(this.minx + 1)) {
  650.                   var1.setColor(this.field_0.gridColor);
  651.                   var1.drawLine((int)var29, this.miny - 5, (int)var29, this.maxy - 1);
  652.                }
  653.  
  654.                float var35 = (float)this.maxy;
  655.                float var9 = (float)this.maxy;
  656.                var2 = var29 + this.scaleXFactor;
  657.  
  658.                for(int var10 = 0; var10 < this.totalXcolumns; ++var10) {
  659.                   var19[0] = (int)var29;
  660.                   var24[0] = (int)var35;
  661.                   var19[1] = (int)var2;
  662.                   var24[1] = (int)var9;
  663.                   var19[2] = (int)var2;
  664.                   var24[2] = (int)(var9 + this.scaleYFactor * this.field_0.chartData[var10][var34]);
  665.                   var19[3] = (int)var29;
  666.                   var24[3] = (int)(var35 + this.scaleYFactor * this.field_0.chartData[var10][var34 - 1]);
  667.                   var19[4] = (int)var29;
  668.                   var24[4] = (int)var35;
  669.                   var35 += this.scaleYFactor * this.field_0.chartData[var10][var34 - 1];
  670.                   var9 += this.scaleYFactor * this.field_0.chartData[var10][var34];
  671.                   var1.setColor(this.field_0.elementColor[var10]);
  672.                   var1.fillPolygon(var19, var24, 4);
  673.                   var1.setColor(this.field_0.elementBorderColor[var10]);
  674.                   var1.drawLine(var19[0], var24[0], var19[1], var24[1]);
  675.                   var1.drawLine(var19[3], var24[3], var19[2], var24[2]);
  676.                }
  677.  
  678.                if (this.gridArray[1] == 1 && this.gridArray[2] == 1 && var29 != (float)(this.minx + 1)) {
  679.                   var1.setColor(this.field_0.gridColor);
  680.                   var1.drawLine((int)var29, (int)var35, (int)var29, this.maxy - 1);
  681.                }
  682.  
  683.                var29 = var2;
  684.             }
  685.          }
  686.  
  687.          var1.setColor(this.field_0.chartFrameColor);
  688.          if (this.field_0.chartType != COLUMN && this.field_0.chartType != BAR && this.field_0.chartType != GANTT) {
  689.             if (this.field_0.chartType == LINE || this.field_0.chartType == AREA) {
  690.                var1.setColor(((Component)this).getBackground());
  691.                var1.fillRect((int)var2, this.miny - 5, (int)((float)this.maxx - var2 + 1.0F), this.maxy - this.miny + 5);
  692.                var1.setColor(this.field_0.chartFrameColor);
  693.                var1.drawRect(this.minx, this.miny - 5, (int)(var2 - (float)this.minx), this.maxy - this.miny + 5);
  694.             }
  695.  
  696.          } else {
  697.             var1.drawRect(this.minx, this.miny - 5, this.maxx - this.minx + 2, this.maxy - this.miny + 5);
  698.          }
  699.       }
  700.    }
  701.  
  702.    void drawYaxisScale(Graphics var1) {
  703.       int var2 = 0;
  704.       if (!(this.maxYval <= 0.0F)) {
  705.          var1.getFont();
  706.          if (this.field_0.yaxisLabelFont != null) {
  707.             var1.setFont(new Font(this.field_0.yaxisLabelFont, 0, 12));
  708.          } else {
  709.             var1.setFont(new Font("TimesRoman", 0, 12));
  710.          }
  711.  
  712.          int var3 = Math.round(this.maxYval / 10.0F) * 10;
  713.          if (this.minYval >= 0.0F) {
  714.             var2 = (int)Math.floor((double)(this.minYval / 10.0F)) * 10;
  715.          } else {
  716.             var2 = -((int)Math.floor((double)(-this.minYval / 10.0F))) * 10;
  717.             if ((float)var2 > this.minYval) {
  718.                var2 = (int)this.minYval;
  719.             }
  720.          }
  721.  
  722.          if (this.field_0.chartType == GANTT) {
  723.             var2 = (int)this.minYval;
  724.             var3 = (int)this.maxYval;
  725.          }
  726.  
  727.          int var4 = (var3 - var2) / 10;
  728.          if (var4 == 0) {
  729.             var4 = 1;
  730.          }
  731.  
  732.          if (this.debugon) {
  733.             System.out.print("maxpy = ");
  734.             System.out.println(var3);
  735.             System.out.print("minpy = ");
  736.             System.out.println(var2);
  737.          }
  738.  
  739.          for(int var5 = var2; var5 <= var3; var5 += var4) {
  740.             var1.setColor(this.field_0.chartFrameColor);
  741.             double var6;
  742.             if (this.field_0.chartType != BAR && this.field_0.chartType != GANTT) {
  743.                var6 = (double)((float)this.maxy + (float)(var5 - var2) * this.scaleYFactor);
  744.                if (var6 < (double)this.miny || var6 > (double)this.maxy) {
  745.                   break;
  746.                }
  747.  
  748.                var1.drawLine(this.minx - 3, (int)var6, this.minx, (int)var6);
  749.             } else {
  750.                var6 = (double)((float)this.minx + (float)(var5 - var2) * this.scaleYFactor);
  751.                if (var6 > (double)this.maxx || var6 < (double)this.minx) {
  752.                   break;
  753.                }
  754.  
  755.                var1.drawLine((int)var6, this.maxy, (int)var6, this.maxy + 3);
  756.             }
  757.  
  758.             if (this.field_0.chartType != BAR && this.field_0.chartType != GANTT) {
  759.                if (this.gridArray[0] == 1 && var6 < (double)this.maxy) {
  760.                   var1.setColor(this.field_0.gridColor);
  761.                   var1.drawLine(this.minx, (int)var6, this.maxx, (int)var6);
  762.                }
  763.             } else if (this.gridArray[0] == 1 && var6 < (double)this.maxx) {
  764.                var1.setColor(this.field_0.gridColor);
  765.                var1.drawLine((int)var6, this.miny - 4, (int)var6, this.maxy);
  766.             }
  767.  
  768.             int var8 = 0;
  769.             if (this.field_0.chartType == BAR || this.field_0.chartType == GANTT) {
  770.                var8 = this.maxx - this.minx;
  771.             }
  772.  
  773.             var1.setColor(this.field_0.yaxisLabelColor);
  774.             String var9 = "";
  775.             if (this.field_0.chartType == GANTT) {
  776.                Date var10 = new Date((long)(var5 + 1) * 24L * 60L * 60L * 1000L);
  777.                var9 = JDPDate.format(var10);
  778.             } else if (var3 < 9999) {
  779.                var9 = Integer.toString(var5);
  780.             } else if (var3 < 9999999) {
  781.                var9 = Integer.toString(var5 / 1000);
  782.                var1.drawString("x1000", var8 + this.minx - 22, this.maxy + 20);
  783.             } else if (var3 < 1410065407) {
  784.                var9 = Integer.toString(var5 / 1000000);
  785.                var1.drawString("x1,000,000", var8 + this.minx - 22, this.maxy + 20);
  786.             }
  787.  
  788.             int var12 = this.user.u.StringWidth(var1, var9);
  789.             if (this.field_0.chartType != BAR && this.field_0.chartType != GANTT) {
  790.                var1.drawString(var9, var8 + this.minx - var12 - 5, (int)(var6 + (double)4.5F));
  791.             } else {
  792.                var1.drawString(var9, (int)(var6 - (double)(var12 / 2)), this.maxy + 15);
  793.             }
  794.          }
  795.  
  796.       }
  797.    }
  798. }
  799.