home *** CD-ROM | disk | FTP | other *** search
- package java.awt.geom;
-
- import java.util.NoSuchElementException;
-
- class EllipseIterator implements PathIterator {
- // $FF: renamed from: x double
- double field_0;
- // $FF: renamed from: y double
- double field_1;
- // $FF: renamed from: w double
- double field_2;
- // $FF: renamed from: h double
- double field_3;
- AffineTransform affine;
- int index;
- private static final double angle = (Math.PI / 4D);
- // $FF: renamed from: a double
- private static final double field_4 = (double)1.0F - Math.cos((Math.PI / 4D));
- // $FF: renamed from: b double
- private static final double field_5 = Math.tan((Math.PI / 4D));
- // $FF: renamed from: c double
- private static final double field_6;
- // $FF: renamed from: cv double
- private static final double field_7;
- private static double[][] ctrlpts;
-
- EllipseIterator(Ellipse2D var1, AffineTransform var2) {
- this.field_0 = ((RectangularShape)var1).getX();
- this.field_1 = ((RectangularShape)var1).getY();
- this.field_2 = ((RectangularShape)var1).getWidth();
- this.field_3 = ((RectangularShape)var1).getHeight();
- this.affine = var2;
- if (this.field_2 < (double)0.0F || this.field_3 < (double)0.0F) {
- this.index = 6;
- }
-
- }
-
- public int getWindingRule() {
- return 1;
- }
-
- public boolean isDone() {
- return this.index > 5;
- }
-
- public void next() {
- ++this.index;
- }
-
- public int currentSegment(float[] var1) {
- if (this.isDone()) {
- throw new NoSuchElementException("ellipse iterator out of bounds");
- } else if (this.index == 5) {
- return 4;
- } else if (this.index == 0) {
- double[] var3 = ctrlpts[3];
- var1[0] = (float)(this.field_0 + var3[4] * this.field_2);
- var1[1] = (float)(this.field_1 + var3[5] * this.field_3);
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 1);
- }
-
- return 0;
- } else {
- double[] var2 = ctrlpts[this.index - 1];
- var1[0] = (float)(this.field_0 + var2[0] * this.field_2);
- var1[1] = (float)(this.field_1 + var2[1] * this.field_3);
- var1[2] = (float)(this.field_0 + var2[2] * this.field_2);
- var1[3] = (float)(this.field_1 + var2[3] * this.field_3);
- var1[4] = (float)(this.field_0 + var2[4] * this.field_2);
- var1[5] = (float)(this.field_1 + var2[5] * this.field_3);
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 3);
- }
-
- return 3;
- }
- }
-
- public int currentSegment(double[] var1) {
- if (this.isDone()) {
- throw new NoSuchElementException("ellipse iterator out of bounds");
- } else if (this.index == 5) {
- return 4;
- } else if (this.index == 0) {
- double[] var3 = ctrlpts[3];
- var1[0] = this.field_0 + var3[4] * this.field_2;
- var1[1] = this.field_1 + var3[5] * this.field_3;
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 1);
- }
-
- return 0;
- } else {
- double[] var2 = ctrlpts[this.index - 1];
- var1[0] = this.field_0 + var2[0] * this.field_2;
- var1[1] = this.field_1 + var2[1] * this.field_3;
- var1[2] = this.field_0 + var2[2] * this.field_2;
- var1[3] = this.field_1 + var2[3] * this.field_3;
- var1[4] = this.field_0 + var2[4] * this.field_2;
- var1[5] = this.field_1 + var2[5] * this.field_3;
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 3);
- }
-
- return 3;
- }
- }
-
- static {
- field_6 = Math.sqrt((double)1.0F + field_5 * field_5) - (double)1.0F + field_4;
- field_7 = 1.3333333333333333 * field_4 * field_5 / field_6;
- ctrlpts = new double[][]{{(double)1.0F, field_7, field_7, (double)1.0F, (double)0.0F, (double)1.0F}, {-field_7, (double)1.0F, (double)-1.0F, field_7, (double)-1.0F, (double)0.0F}, {(double)-1.0F, -field_7, -field_7, (double)-1.0F, (double)0.0F, (double)-1.0F}, {field_7, (double)-1.0F, (double)1.0F, -field_7, (double)1.0F, (double)0.0F}};
-
- for(int var0 = 0; var0 < 4; ++var0) {
- for(int var1 = 0; var1 < 6; ++var1) {
- ctrlpts[var0][var1] = ctrlpts[var0][var1] * (double)0.5F + (double)0.5F;
- }
- }
-
- }
- }
-