home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / awt / geom / RoundRectIterator.class (.txt) < prev   
Encoding:
Java Class File  |  1979-12-31  |  2.4 KB  |  107 lines

  1. package java.awt.geom;
  2.  
  3. import java.util.NoSuchElementException;
  4.  
  5. class RoundRectIterator implements PathIterator {
  6.    // $FF: renamed from: x double
  7.    double field_0;
  8.    // $FF: renamed from: y double
  9.    double field_1;
  10.    // $FF: renamed from: w double
  11.    double field_2;
  12.    // $FF: renamed from: h double
  13.    double field_3;
  14.    // $FF: renamed from: aw double
  15.    double field_4;
  16.    // $FF: renamed from: ah double
  17.    double field_5;
  18.    AffineTransform affine;
  19.    int index;
  20.    private static final double angle = (Math.PI / 4D);
  21.    // $FF: renamed from: a double
  22.    private static final double field_6 = (double)1.0F - Math.cos((Math.PI / 4D));
  23.    // $FF: renamed from: b double
  24.    private static final double field_7 = Math.tan((Math.PI / 4D));
  25.    // $FF: renamed from: c double
  26.    private static final double field_8;
  27.    // $FF: renamed from: cv double
  28.    private static final double field_9;
  29.    private static final double acv;
  30.    private static double[][] ctrlpts;
  31.    private static int[] types;
  32.  
  33.    RoundRectIterator(RoundRectangle2D var1, AffineTransform var2) {
  34.       this.field_0 = ((RectangularShape)var1).getX();
  35.       this.field_1 = ((RectangularShape)var1).getY();
  36.       this.field_2 = ((RectangularShape)var1).getWidth();
  37.       this.field_3 = ((RectangularShape)var1).getHeight();
  38.       this.field_4 = Math.min(this.field_2, Math.abs(var1.getArcWidth()));
  39.       this.field_5 = Math.min(this.field_3, Math.abs(var1.getArcHeight()));
  40.       this.affine = var2;
  41.       if (this.field_4 < (double)0.0F || this.field_5 < (double)0.0F) {
  42.          this.index = ctrlpts.length;
  43.       }
  44.  
  45.    }
  46.  
  47.    public int getWindingRule() {
  48.       return 1;
  49.    }
  50.  
  51.    public boolean isDone() {
  52.       return this.index >= ctrlpts.length;
  53.    }
  54.  
  55.    public void next() {
  56.       ++this.index;
  57.    }
  58.  
  59.    public int currentSegment(float[] var1) {
  60.       if (this.isDone()) {
  61.          throw new NoSuchElementException("roundrect iterator out of bounds");
  62.       } else {
  63.          double[] var2 = ctrlpts[this.index];
  64.          int var3 = 0;
  65.  
  66.          for(int var4 = 0; var4 < var2.length; var4 += 4) {
  67.             var1[var3++] = (float)(this.field_0 + var2[var4 + 0] * this.field_2 + var2[var4 + 1] * this.field_4);
  68.             var1[var3++] = (float)(this.field_1 + var2[var4 + 2] * this.field_3 + var2[var4 + 3] * this.field_5);
  69.          }
  70.  
  71.          if (this.affine != null) {
  72.             this.affine.transform(var1, 0, var1, 0, var3 / 2);
  73.          }
  74.  
  75.          return types[this.index];
  76.       }
  77.    }
  78.  
  79.    public int currentSegment(double[] var1) {
  80.       if (this.isDone()) {
  81.          throw new NoSuchElementException("roundrect iterator out of bounds");
  82.       } else {
  83.          double[] var2 = ctrlpts[this.index];
  84.          int var3 = 0;
  85.  
  86.          for(int var4 = 0; var4 < var2.length; var4 += 4) {
  87.             var1[var3++] = this.field_0 + var2[var4 + 0] * this.field_2 + var2[var4 + 1] * this.field_4;
  88.             var1[var3++] = this.field_1 + var2[var4 + 2] * this.field_3 + var2[var4 + 3] * this.field_5;
  89.          }
  90.  
  91.          if (this.affine != null) {
  92.             this.affine.transform(var1, 0, var1, 0, var3 / 2);
  93.          }
  94.  
  95.          return types[this.index];
  96.       }
  97.    }
  98.  
  99.    static {
  100.       field_8 = Math.sqrt((double)1.0F + field_7 * field_7) - (double)1.0F + field_6;
  101.       field_9 = 1.3333333333333333 * field_6 * field_7 / field_8;
  102.       acv = ((double)1.0F - field_9) / (double)2.0F;
  103.       ctrlpts = new double[][]{{(double)0.0F, (double)0.0F, (double)0.0F, (double)0.5F}, {(double)0.0F, (double)0.0F, (double)1.0F, (double)-0.5F}, {(double)0.0F, (double)0.0F, (double)1.0F, -acv, (double)0.0F, acv, (double)1.0F, (double)0.0F, (double)0.0F, (double)0.5F, (double)1.0F, (double)0.0F}, {(double)1.0F, (double)-0.5F, (double)1.0F, (double)0.0F}, {(double)1.0F, -acv, (double)1.0F, (double)0.0F, (double)1.0F, (double)0.0F, (double)1.0F, -acv, (double)1.0F, (double)0.0F, (double)1.0F, (double)-0.5F}, {(double)1.0F, (double)0.0F, (double)0.0F, (double)0.5F}, {(double)1.0F, (double)0.0F, (double)0.0F, acv, (double)1.0F, -acv, (double)0.0F, (double)0.0F, (double)1.0F, (double)-0.5F, (double)0.0F, (double)0.0F}, {(double)0.0F, (double)0.5F, (double)0.0F, (double)0.0F}, {(double)0.0F, acv, (double)0.0F, (double)0.0F, (double)0.0F, (double)0.0F, (double)0.0F, acv, (double)0.0F, (double)0.0F, (double)0.0F, (double)0.5F}, new double[0]};
  104.       types = new int[]{0, 1, 3, 1, 3, 1, 3, 1, 3, 4};
  105.    }
  106. }
  107.