home *** CD-ROM | disk | FTP | other *** search
- package java.awt.geom;
-
- import java.util.NoSuchElementException;
-
- class ArcIterator 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;
- double angStRad;
- double angExtDeg;
- AffineTransform affine;
- int index;
- int arcSegs;
- int lineSegs;
-
- ArcIterator(Arc2D var1, AffineTransform var2) {
- this.field_2 = ((RectangularShape)var1).getWidth() / (double)2.0F;
- this.field_3 = ((RectangularShape)var1).getHeight() / (double)2.0F;
- this.field_0 = ((RectangularShape)var1).getX() + this.field_2;
- this.field_1 = ((RectangularShape)var1).getY() + this.field_3;
- this.angStRad = -Math.toRadians(var1.getAngleStart());
- this.angExtDeg = -var1.getAngleExtent();
- this.affine = var2;
- double var3 = Math.abs(this.angExtDeg);
- if (var3 >= (double)360.0F) {
- this.arcSegs = 4;
- } else {
- this.arcSegs = (int)Math.ceil(var3 / (double)90.0F);
- }
-
- switch (var1.getArcType()) {
- case 0:
- this.lineSegs = 0;
- break;
- case 1:
- this.lineSegs = 1;
- break;
- case 2:
- this.lineSegs = 2;
- }
-
- if (this.field_2 < (double)0.0F || this.field_3 < (double)0.0F) {
- this.arcSegs = this.lineSegs = -1;
- }
-
- }
-
- public int getWindingRule() {
- return 1;
- }
-
- public boolean isDone() {
- return this.index > this.arcSegs + this.lineSegs;
- }
-
- public void next() {
- ++this.index;
- }
-
- private static double btan(double var0) {
- var0 /= (double)2.0F;
- double var2 = (double)1.0F - Math.cos(var0);
- double var4 = Math.tan(var0);
- double var6 = Math.sqrt((double)1.0F + var4 * var4) - (double)1.0F + var2;
- return 1.3333333333333333 * var2 * var4 / var6;
- }
-
- public int currentSegment(float[] var1) {
- if (this.isDone()) {
- throw new NoSuchElementException("arc iterator out of bounds");
- } else {
- double var2 = this.angStRad;
- if (this.index == 0) {
- var1[0] = (float)(this.field_0 + Math.cos(var2) * this.field_2);
- var1[1] = (float)(this.field_1 + Math.sin(var2) * this.field_3);
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 1);
- }
-
- return 0;
- } else if (this.index > this.arcSegs) {
- if (this.index == this.arcSegs + this.lineSegs) {
- return 4;
- } else {
- var1[0] = (float)this.field_0;
- var1[1] = (float)this.field_1;
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 1);
- }
-
- return 1;
- }
- } else {
- double var4 = this.angExtDeg;
- if (var4 > (double)360.0F) {
- var4 = (double)360.0F;
- } else if (var4 < (double)-360.0F) {
- var4 = (double)-360.0F;
- }
-
- var4 /= (double)this.arcSegs;
- var4 = Math.toRadians(var4);
- var2 += var4 * (double)(this.index - 1);
- double var6 = Math.cos(var2);
- double var8 = Math.sin(var2);
- double var10 = btan(var4);
- var1[0] = (float)(this.field_0 + (var6 - var10 * var8) * this.field_2);
- var1[1] = (float)(this.field_1 + (var8 + var10 * var6) * this.field_3);
- var2 += var4;
- var6 = Math.cos(var2);
- var8 = Math.sin(var2);
- var1[2] = (float)(this.field_0 + (var6 + var10 * var8) * this.field_2);
- var1[3] = (float)(this.field_1 + (var8 - var10 * var6) * this.field_3);
- var1[4] = (float)(this.field_0 + var6 * this.field_2);
- var1[5] = (float)(this.field_1 + var8 * 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("arc iterator out of bounds");
- } else {
- double var2 = this.angStRad;
- if (this.index == 0) {
- var1[0] = this.field_0 + Math.cos(var2) * this.field_2;
- var1[1] = this.field_1 + Math.sin(var2) * this.field_3;
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 1);
- }
-
- return 0;
- } else if (this.index > this.arcSegs) {
- if (this.index == this.arcSegs + this.lineSegs) {
- return 4;
- } else {
- var1[0] = this.field_0;
- var1[1] = this.field_1;
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 1);
- }
-
- return 1;
- }
- } else {
- double var4 = this.angExtDeg;
- if (var4 > (double)360.0F) {
- var4 = (double)360.0F;
- } else if (var4 < (double)-360.0F) {
- var4 = (double)-360.0F;
- }
-
- var4 /= (double)this.arcSegs;
- var4 = Math.toRadians(var4);
- var2 += var4 * (double)(this.index - 1);
- double var6 = Math.cos(var2);
- double var8 = Math.sin(var2);
- double var10 = btan(var4);
- var1[0] = this.field_0 + (var6 - var10 * var8) * this.field_2;
- var1[1] = this.field_1 + (var8 + var10 * var6) * this.field_3;
- var2 += var4;
- var6 = Math.cos(var2);
- var8 = Math.sin(var2);
- var1[2] = this.field_0 + (var6 + var10 * var8) * this.field_2;
- var1[3] = this.field_1 + (var8 - var10 * var6) * this.field_3;
- var1[4] = this.field_0 + var6 * this.field_2;
- var1[5] = this.field_1 + var8 * this.field_3;
- if (this.affine != null) {
- this.affine.transform(var1, 0, var1, 0, 3);
- }
-
- return 3;
- }
- }
- }
- }
-