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 / BasicStroke.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.7 KB  |  224 lines

  1. package java.awt;
  2.  
  3. import java.awt.geom.AffineTransform;
  4. import java.awt.geom.PathIterator;
  5. import java.util.Arrays;
  6. import sun.dc.path.PathConsumer;
  7. import sun.dc.path.PathException;
  8. import sun.dc.pr.PathDasher;
  9. import sun.dc.pr.PathStroker;
  10.  
  11. public class BasicStroke implements Stroke {
  12.    public static final int JOIN_MITER = 0;
  13.    public static final int JOIN_ROUND = 1;
  14.    public static final int JOIN_BEVEL = 2;
  15.    public static final int CAP_BUTT = 0;
  16.    public static final int CAP_ROUND = 1;
  17.    public static final int CAP_SQUARE = 2;
  18.    float width;
  19.    int join;
  20.    int cap;
  21.    float miterlimit;
  22.    float[] dash;
  23.    float dash_phase;
  24.    private static final int[] RasterizerCaps = new int[]{30, 10, 20};
  25.    private static final int[] RasterizerCorners = new int[]{50, 10, 40};
  26.  
  27.    public BasicStroke(float var1, int var2, int var3, float var4, float[] var5, float var6) {
  28.       if (var1 < 0.0F) {
  29.          throw new IllegalArgumentException("negative width");
  30.       } else if (var2 != 0 && var2 != 1 && var2 != 2) {
  31.          throw new IllegalArgumentException("illegal end cap value");
  32.       } else {
  33.          if (var3 == 0) {
  34.             if (var4 < 1.0F) {
  35.                throw new IllegalArgumentException("miter limit < 1");
  36.             }
  37.          } else if (var3 != 1 && var3 != 2) {
  38.             throw new IllegalArgumentException("illegal line join value");
  39.          }
  40.  
  41.          if (var5 != null) {
  42.             if (var6 < 0.0F) {
  43.                throw new IllegalArgumentException("negative dash phase");
  44.             }
  45.  
  46.             boolean var7 = true;
  47.  
  48.             for(int var8 = 0; var8 < var5.length; ++var8) {
  49.                float var9 = var5[var8];
  50.                if ((double)var9 > (double)0.0F) {
  51.                   var7 = false;
  52.                } else if ((double)var9 < (double)0.0F) {
  53.                   throw new IllegalArgumentException("negative dash length");
  54.                }
  55.             }
  56.  
  57.             if (var7) {
  58.                throw new IllegalArgumentException("dash lengths all zero");
  59.             }
  60.          }
  61.  
  62.          this.width = var1;
  63.          this.cap = var2;
  64.          this.join = var3;
  65.          this.miterlimit = var4;
  66.          if (var5 != null) {
  67.             this.dash = (float[])var5.clone();
  68.          }
  69.  
  70.          this.dash_phase = var6;
  71.       }
  72.    }
  73.  
  74.    public BasicStroke(float var1, int var2, int var3, float var4) {
  75.       this(var1, var2, var3, var4, (float[])null, 0.0F);
  76.    }
  77.  
  78.    public BasicStroke(float var1, int var2, int var3) {
  79.       this(var1, var2, var3, 10.0F, (float[])null, 0.0F);
  80.    }
  81.  
  82.    public BasicStroke(float var1) {
  83.       this(var1, 2, 0, 10.0F, (float[])null, 0.0F);
  84.    }
  85.  
  86.    public BasicStroke() {
  87.       this(1.0F, 2, 0, 10.0F, (float[])null, 0.0F);
  88.    }
  89.  
  90.    public Shape createStrokedShape(Shape var1) {
  91.       FillAdapter var2 = new FillAdapter(this);
  92.       PathStroker var3 = new PathStroker(var2);
  93.       var3.setPenDiameter(this.width);
  94.       var3.setPenT4((float[])null);
  95.       var3.setCaps(RasterizerCaps[this.cap]);
  96.       var3.setCorners(RasterizerCorners[this.join], this.miterlimit);
  97.       Object var4;
  98.       if (this.dash != null) {
  99.          PathDasher var5 = new PathDasher(var3);
  100.          var5.setDash(this.dash, this.dash_phase);
  101.          var5.setDashT4((float[])null);
  102.          var4 = var5;
  103.       } else {
  104.          var4 = var3;
  105.       }
  106.  
  107.       PathIterator var12 = var1.getPathIterator((AffineTransform)null);
  108.  
  109.       try {
  110.          ((PathConsumer)var4).beginPath();
  111.          boolean var6 = false;
  112.          float var7 = 0.0F;
  113.          float var8 = 0.0F;
  114.  
  115.          for(float[] var9 = new float[6]; !var12.isDone(); var12.next()) {
  116.             int var10 = var12.currentSegment(var9);
  117.             if (var6) {
  118.                var6 = false;
  119.                if (var10 != 0) {
  120.                   ((PathConsumer)var4).beginSubpath(var7, var8);
  121.                }
  122.             }
  123.  
  124.             switch (var10) {
  125.                case 0:
  126.                   var7 = var9[0];
  127.                   var8 = var9[1];
  128.                   ((PathConsumer)var4).beginSubpath(var9[0], var9[1]);
  129.                   break;
  130.                case 1:
  131.                   ((PathConsumer)var4).appendLine(var9[0], var9[1]);
  132.                   break;
  133.                case 2:
  134.                   ((PathConsumer)var4).appendQuadratic(var9[0], var9[1], var9[2], var9[3]);
  135.                   break;
  136.                case 3:
  137.                   ((PathConsumer)var4).appendCubic(var9[0], var9[1], var9[2], var9[3], var9[4], var9[5]);
  138.                   break;
  139.                case 4:
  140.                   ((PathConsumer)var4).closedSubpath();
  141.                   var6 = true;
  142.             }
  143.          }
  144.  
  145.          ((PathConsumer)var4).endPath();
  146.       } catch (PathException var11) {
  147.          throw new InternalError("Unable to Stroke shape (" + ((Throwable)var11).getMessage() + ")");
  148.       }
  149.  
  150.       return var2.getShape();
  151.    }
  152.  
  153.    public float getLineWidth() {
  154.       return this.width;
  155.    }
  156.  
  157.    public int getEndCap() {
  158.       return this.cap;
  159.    }
  160.  
  161.    public int getLineJoin() {
  162.       return this.join;
  163.    }
  164.  
  165.    public float getMiterLimit() {
  166.       return this.miterlimit;
  167.    }
  168.  
  169.    public float[] getDashArray() {
  170.       return this.dash == null ? null : (float[])this.dash.clone();
  171.    }
  172.  
  173.    public float getDashPhase() {
  174.       return this.dash_phase;
  175.    }
  176.  
  177.    public int hashCode() {
  178.       int var1 = Float.floatToIntBits(this.width);
  179.       var1 = var1 * 31 + this.join;
  180.       var1 = var1 * 31 + this.cap;
  181.       var1 = var1 * 31 + Float.floatToIntBits(this.miterlimit);
  182.       if (this.dash != null) {
  183.          var1 = var1 * 31 + Float.floatToIntBits(this.dash_phase);
  184.  
  185.          for(int var2 = 0; var2 < this.dash.length; ++var2) {
  186.             var1 = var1 * 31 + Float.floatToIntBits(this.dash[var2]);
  187.          }
  188.       }
  189.  
  190.       return var1;
  191.    }
  192.  
  193.    public boolean equals(Object var1) {
  194.       if (!(var1 instanceof BasicStroke)) {
  195.          return false;
  196.       } else {
  197.          BasicStroke var2 = (BasicStroke)var1;
  198.          if (this.width != var2.width) {
  199.             return false;
  200.          } else if (this.join != var2.join) {
  201.             return false;
  202.          } else if (this.cap != var2.cap) {
  203.             return false;
  204.          } else if (this.miterlimit != var2.miterlimit) {
  205.             return false;
  206.          } else {
  207.             if (this.dash != null) {
  208.                if (this.dash_phase != var2.dash_phase) {
  209.                   return false;
  210.                }
  211.  
  212.                if (!Arrays.equals(this.dash, var2.dash)) {
  213.                   return false;
  214.                }
  215.             } else if (var2.dash != null) {
  216.                return false;
  217.             }
  218.  
  219.             return true;
  220.          }
  221.       }
  222.    }
  223. }
  224.