home *** CD-ROM | disk | FTP | other *** search
- package sun.java2d.pipe;
-
- import java.awt.BasicStroke;
- import java.awt.Rectangle;
- import java.awt.Shape;
- import java.awt.geom.PathIterator;
- import sun.dc.pr.PRException;
- import sun.dc.pr.Rasterizer;
- import sun.java2d.SunGraphics2D;
-
- public class DuctusShapeRenderer extends DuctusRenderer implements ShapeDrawPipe {
- CompositePipe outpipe;
-
- public DuctusShapeRenderer(CompositePipe var1) {
- this.outpipe = var1;
- }
-
- public void draw(SunGraphics2D var1, Shape var2) {
- BasicStroke var3;
- if (var1.stroke instanceof BasicStroke) {
- var3 = (BasicStroke)var1.stroke;
- } else {
- var2 = var1.stroke.createStrokedShape(var2);
- var3 = null;
- }
-
- this.renderPath(var1, var2, var3);
- }
-
- public void fill(SunGraphics2D var1, Shape var2) {
- this.renderPath(var1, var2, (BasicStroke)null);
- }
-
- public void renderPath(SunGraphics2D var1, Shape var2, BasicStroke var3) {
- PathIterator var4 = var2.getPathIterator(var1.transform);
- boolean var5 = var3 != null && var1.strokeHint != 2;
- Rasterizer var6 = DuctusRenderer.createShapeRasterizer(var4, var1.transform, var3, var5, 0.5F);
- Object var7 = null;
-
- try {
- int[] var8 = new int[4];
- var6.getAlphaBox(var8);
- Rectangle var9 = new Rectangle(var8[0], var8[1], var8[2] - var8[0], var8[3] - var8[1]);
- Rectangle var10 = var1.getCompBounds();
- var8[0] = Math.max(var8[0], var10.x);
- var8[1] = Math.max(var8[1], var10.y);
- var8[2] = Math.min(var8[2], var10.x + var10.width);
- var8[3] = Math.min(var8[3], var10.y + var10.height);
- if (var8[0] < var8[2] && var8[1] < var8[3]) {
- var6.setOutputArea((float)var8[0], (float)var8[1], var8[2] - var8[0], var8[3] - var8[1]);
- var7 = this.outpipe.startSequence(var1, var2, var9, var8);
- int var11 = Rasterizer.TILE_SIZE;
- byte[] var12 = new byte[var11 * var11];
-
- for(int var14 = var8[1]; var14 < var8[3]; var14 += var11) {
- for(int var15 = var8[0]; var15 < var8[2]; var15 += var11) {
- int var16 = Math.min(var11, var8[2] - var15);
- int var17 = Math.min(var11, var8[3] - var14);
- int var18 = var6.getTileState();
- if (var18 != 0 && this.outpipe.needTile(var7, var15, var14, var16, var17)) {
- byte[] var13;
- if (var18 == 2) {
- var13 = var12;
- DuctusRenderer.getAlpha(var6, var12, 1, var11, 0);
- } else {
- var13 = null;
- var6.nextTile();
- }
-
- this.outpipe.renderPathTile(var7, var13, 0, var11, var15, var14, var16, var17);
- } else {
- var6.nextTile();
- this.outpipe.skipTile(var7, var15, var14);
- }
- }
- }
-
- return;
- }
- } catch (PRException var23) {
- ((Throwable)var23).printStackTrace();
- return;
- } finally {
- DuctusRenderer.dropRasterizer(var6);
- if (var7 != null) {
- this.outpipe.endSequence(var7);
- }
-
- }
-
- }
- }
-