home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / java2d / pipe / ShapeToPolyConverter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.0 KB  |  102 lines

  1. package sun.java2d.pipe;
  2.  
  3. import java.awt.Polygon;
  4. import java.awt.Shape;
  5. import java.awt.geom.PathIterator;
  6. import sun.java2d.SunGraphics2D;
  7.  
  8. public class ShapeToPolyConverter implements ShapeDrawPipe {
  9.    SimpleRenderPipe outpipe;
  10.    ShapeDrawPipe fillpipe;
  11.    boolean doTx;
  12.  
  13.    public ShapeToPolyConverter(SimpleRenderPipe var1, boolean var2) {
  14.       this.outpipe = var1;
  15.       this.doTx = var2;
  16.    }
  17.  
  18.    public ShapeToPolyConverter(SimpleRenderPipe var1, ShapeDrawPipe var2, boolean var3) {
  19.       this.outpipe = var1;
  20.       this.fillpipe = var2;
  21.       this.doTx = var3;
  22.    }
  23.  
  24.    public void draw(SunGraphics2D var1, Shape var2) {
  25.       this.doDraw(var1, var2, false);
  26.    }
  27.  
  28.    public void fill(SunGraphics2D var1, Shape var2) {
  29.       if (this.fillpipe != null) {
  30.          this.fillpipe.fill(var1, var2);
  31.       } else {
  32.          this.doDraw(var1, var2, true);
  33.       }
  34.  
  35.    }
  36.  
  37.    private int[] sendPoly(SunGraphics2D var1, Polygon var2, boolean var3, boolean var4, int[] var5, boolean var6) {
  38.       int var7 = var5[0];
  39.       int var8 = var7 == 0 ? 0 : var5[var7];
  40.       int var9 = var2.npoints - var8;
  41.       if (var9 < 2) {
  42.          var2.npoints = var8;
  43.       } else {
  44.          ++var7;
  45.          if (var7 >= var5.length) {
  46.             int[] var10 = new int[var5.length + 10];
  47.             System.arraycopy(var5, 0, var10, 0, var5.length);
  48.             var5 = var10;
  49.          }
  50.  
  51.          var5[var7] = var2.npoints;
  52.          var5[0] = var7;
  53.       }
  54.  
  55.       if (var6) {
  56.          var8 = 0;
  57.  
  58.          for(int var13 = 1; var13 <= var7; ++var13) {
  59.             var9 = var5[var13];
  60.             var5[var13 - 1] = var9 - var8;
  61.             var8 = var9;
  62.          }
  63.  
  64.          if (var3) {
  65.             this.outpipe.fillPolys(var1, var2.xpoints, var2.ypoints, var5, var7, var4);
  66.          } else {
  67.             this.outpipe.drawPolys(var1, var2.xpoints, var2.ypoints, var5, var7, false);
  68.          }
  69.       }
  70.  
  71.       return var5;
  72.    }
  73.  
  74.    private void doDraw(SunGraphics2D var1, Shape var2, boolean var3) {
  75.       PathIterator var4 = var2.getPathIterator(this.doTx ? var1.transform : null, (double)1.0F);
  76.       boolean var5 = var4.getWindingRule() == 0;
  77.       Polygon var6 = new Polygon();
  78.       float[] var7 = new float[6];
  79.       int[] var8 = new int[10];
  80.  
  81.       for(int var9 = 0; !var4.isDone(); var4.next()) {
  82.          switch (var4.currentSegment(var7)) {
  83.             case 0:
  84.                var8 = this.sendPoly(var1, var6, var3, var5, var8, false);
  85.                var9 = var6.npoints;
  86.             case 1:
  87.                var6.addPoint((int)Math.floor((double)var7[0]), (int)Math.floor((double)var7[1]));
  88.             case 2:
  89.             case 3:
  90.             default:
  91.                break;
  92.             case 4:
  93.                if (var6.npoints > 0) {
  94.                   var6.addPoint(var6.xpoints[var9], var6.ypoints[var9]);
  95.                }
  96.          }
  97.       }
  98.  
  99.       this.sendPoly(var1, var6, var3, var5, var8, true);
  100.    }
  101. }
  102.