home *** CD-ROM | disk | FTP | other *** search
- package sun.java2d.pipe;
-
- import java.awt.Polygon;
- import java.awt.Shape;
- import java.awt.geom.PathIterator;
- import sun.java2d.SunGraphics2D;
-
- public class ShapeToPolyConverter implements ShapeDrawPipe {
- SimpleRenderPipe outpipe;
- ShapeDrawPipe fillpipe;
- boolean doTx;
-
- public ShapeToPolyConverter(SimpleRenderPipe var1, boolean var2) {
- this.outpipe = var1;
- this.doTx = var2;
- }
-
- public ShapeToPolyConverter(SimpleRenderPipe var1, ShapeDrawPipe var2, boolean var3) {
- this.outpipe = var1;
- this.fillpipe = var2;
- this.doTx = var3;
- }
-
- public void draw(SunGraphics2D var1, Shape var2) {
- this.doDraw(var1, var2, false);
- }
-
- public void fill(SunGraphics2D var1, Shape var2) {
- if (this.fillpipe != null) {
- this.fillpipe.fill(var1, var2);
- } else {
- this.doDraw(var1, var2, true);
- }
-
- }
-
- private int[] sendPoly(SunGraphics2D var1, Polygon var2, boolean var3, boolean var4, int[] var5, boolean var6) {
- int var7 = var5[0];
- int var8 = var7 == 0 ? 0 : var5[var7];
- int var9 = var2.npoints - var8;
- if (var9 < 2) {
- var2.npoints = var8;
- } else {
- ++var7;
- if (var7 >= var5.length) {
- int[] var10 = new int[var5.length + 10];
- System.arraycopy(var5, 0, var10, 0, var5.length);
- var5 = var10;
- }
-
- var5[var7] = var2.npoints;
- var5[0] = var7;
- }
-
- if (var6) {
- var8 = 0;
-
- for(int var13 = 1; var13 <= var7; ++var13) {
- var9 = var5[var13];
- var5[var13 - 1] = var9 - var8;
- var8 = var9;
- }
-
- if (var3) {
- this.outpipe.fillPolys(var1, var2.xpoints, var2.ypoints, var5, var7, var4);
- } else {
- this.outpipe.drawPolys(var1, var2.xpoints, var2.ypoints, var5, var7, false);
- }
- }
-
- return var5;
- }
-
- private void doDraw(SunGraphics2D var1, Shape var2, boolean var3) {
- PathIterator var4 = var2.getPathIterator(this.doTx ? var1.transform : null, (double)1.0F);
- boolean var5 = var4.getWindingRule() == 0;
- Polygon var6 = new Polygon();
- float[] var7 = new float[6];
- int[] var8 = new int[10];
-
- for(int var9 = 0; !var4.isDone(); var4.next()) {
- switch (var4.currentSegment(var7)) {
- case 0:
- var8 = this.sendPoly(var1, var6, var3, var5, var8, false);
- var9 = var6.npoints;
- case 1:
- var6.addPoint((int)Math.floor((double)var7[0]), (int)Math.floor((double)var7[1]));
- case 2:
- case 3:
- default:
- break;
- case 4:
- if (var6.npoints > 0) {
- var6.addPoint(var6.xpoints[var9], var6.ypoints[var9]);
- }
- }
- }
-
- this.sendPoly(var1, var6, var3, var5, var8, true);
- }
- }
-