home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.awt.geom.AffineTransform;
- import java.awt.geom.PathIterator;
- import java.util.Arrays;
- import sun.dc.path.PathConsumer;
- import sun.dc.path.PathException;
- import sun.dc.pr.PathDasher;
- import sun.dc.pr.PathStroker;
-
- public class BasicStroke implements Stroke {
- public static final int JOIN_MITER = 0;
- public static final int JOIN_ROUND = 1;
- public static final int JOIN_BEVEL = 2;
- public static final int CAP_BUTT = 0;
- public static final int CAP_ROUND = 1;
- public static final int CAP_SQUARE = 2;
- float width;
- int join;
- int cap;
- float miterlimit;
- float[] dash;
- float dash_phase;
- private static final int[] RasterizerCaps = new int[]{30, 10, 20};
- private static final int[] RasterizerCorners = new int[]{50, 10, 40};
-
- public BasicStroke(float var1, int var2, int var3, float var4, float[] var5, float var6) {
- if (var1 < 0.0F) {
- throw new IllegalArgumentException("negative width");
- } else if (var2 != 0 && var2 != 1 && var2 != 2) {
- throw new IllegalArgumentException("illegal end cap value");
- } else {
- if (var3 == 0) {
- if (var4 < 1.0F) {
- throw new IllegalArgumentException("miter limit < 1");
- }
- } else if (var3 != 1 && var3 != 2) {
- throw new IllegalArgumentException("illegal line join value");
- }
-
- if (var5 != null) {
- if (var6 < 0.0F) {
- throw new IllegalArgumentException("negative dash phase");
- }
-
- boolean var7 = true;
-
- for(int var8 = 0; var8 < var5.length; ++var8) {
- float var9 = var5[var8];
- if ((double)var9 > (double)0.0F) {
- var7 = false;
- } else if ((double)var9 < (double)0.0F) {
- throw new IllegalArgumentException("negative dash length");
- }
- }
-
- if (var7) {
- throw new IllegalArgumentException("dash lengths all zero");
- }
- }
-
- this.width = var1;
- this.cap = var2;
- this.join = var3;
- this.miterlimit = var4;
- if (var5 != null) {
- this.dash = (float[])var5.clone();
- }
-
- this.dash_phase = var6;
- }
- }
-
- public BasicStroke(float var1, int var2, int var3, float var4) {
- this(var1, var2, var3, var4, (float[])null, 0.0F);
- }
-
- public BasicStroke(float var1, int var2, int var3) {
- this(var1, var2, var3, 10.0F, (float[])null, 0.0F);
- }
-
- public BasicStroke(float var1) {
- this(var1, 2, 0, 10.0F, (float[])null, 0.0F);
- }
-
- public BasicStroke() {
- this(1.0F, 2, 0, 10.0F, (float[])null, 0.0F);
- }
-
- public Shape createStrokedShape(Shape var1) {
- FillAdapter var2 = new FillAdapter(this);
- PathStroker var3 = new PathStroker(var2);
- var3.setPenDiameter(this.width);
- var3.setPenT4((float[])null);
- var3.setCaps(RasterizerCaps[this.cap]);
- var3.setCorners(RasterizerCorners[this.join], this.miterlimit);
- Object var4;
- if (this.dash != null) {
- PathDasher var5 = new PathDasher(var3);
- var5.setDash(this.dash, this.dash_phase);
- var5.setDashT4((float[])null);
- var4 = var5;
- } else {
- var4 = var3;
- }
-
- PathIterator var12 = var1.getPathIterator((AffineTransform)null);
-
- try {
- ((PathConsumer)var4).beginPath();
- boolean var6 = false;
- float var7 = 0.0F;
- float var8 = 0.0F;
-
- for(float[] var9 = new float[6]; !var12.isDone(); var12.next()) {
- int var10 = var12.currentSegment(var9);
- if (var6) {
- var6 = false;
- if (var10 != 0) {
- ((PathConsumer)var4).beginSubpath(var7, var8);
- }
- }
-
- switch (var10) {
- case 0:
- var7 = var9[0];
- var8 = var9[1];
- ((PathConsumer)var4).beginSubpath(var9[0], var9[1]);
- break;
- case 1:
- ((PathConsumer)var4).appendLine(var9[0], var9[1]);
- break;
- case 2:
- ((PathConsumer)var4).appendQuadratic(var9[0], var9[1], var9[2], var9[3]);
- break;
- case 3:
- ((PathConsumer)var4).appendCubic(var9[0], var9[1], var9[2], var9[3], var9[4], var9[5]);
- break;
- case 4:
- ((PathConsumer)var4).closedSubpath();
- var6 = true;
- }
- }
-
- ((PathConsumer)var4).endPath();
- } catch (PathException var11) {
- throw new InternalError("Unable to Stroke shape (" + ((Throwable)var11).getMessage() + ")");
- }
-
- return var2.getShape();
- }
-
- public float getLineWidth() {
- return this.width;
- }
-
- public int getEndCap() {
- return this.cap;
- }
-
- public int getLineJoin() {
- return this.join;
- }
-
- public float getMiterLimit() {
- return this.miterlimit;
- }
-
- public float[] getDashArray() {
- return this.dash == null ? null : (float[])this.dash.clone();
- }
-
- public float getDashPhase() {
- return this.dash_phase;
- }
-
- public int hashCode() {
- int var1 = Float.floatToIntBits(this.width);
- var1 = var1 * 31 + this.join;
- var1 = var1 * 31 + this.cap;
- var1 = var1 * 31 + Float.floatToIntBits(this.miterlimit);
- if (this.dash != null) {
- var1 = var1 * 31 + Float.floatToIntBits(this.dash_phase);
-
- for(int var2 = 0; var2 < this.dash.length; ++var2) {
- var1 = var1 * 31 + Float.floatToIntBits(this.dash[var2]);
- }
- }
-
- return var1;
- }
-
- public boolean equals(Object var1) {
- if (!(var1 instanceof BasicStroke)) {
- return false;
- } else {
- BasicStroke var2 = (BasicStroke)var1;
- if (this.width != var2.width) {
- return false;
- } else if (this.join != var2.join) {
- return false;
- } else if (this.cap != var2.cap) {
- return false;
- } else if (this.miterlimit != var2.miterlimit) {
- return false;
- } else {
- if (this.dash != null) {
- if (this.dash_phase != var2.dash_phase) {
- return false;
- }
-
- if (!Arrays.equals(this.dash, var2.dash)) {
- return false;
- }
- } else if (var2.dash != null) {
- return false;
- }
-
- return true;
- }
- }
- }
- }
-