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 / sun / java2d / pipe / DuctusShapeRenderer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.5 KB  |  93 lines

  1. package sun.java2d.pipe;
  2.  
  3. import java.awt.BasicStroke;
  4. import java.awt.Rectangle;
  5. import java.awt.Shape;
  6. import java.awt.geom.PathIterator;
  7. import sun.dc.pr.PRException;
  8. import sun.dc.pr.Rasterizer;
  9. import sun.java2d.SunGraphics2D;
  10.  
  11. public class DuctusShapeRenderer extends DuctusRenderer implements ShapeDrawPipe {
  12.    CompositePipe outpipe;
  13.  
  14.    public DuctusShapeRenderer(CompositePipe var1) {
  15.       this.outpipe = var1;
  16.    }
  17.  
  18.    public void draw(SunGraphics2D var1, Shape var2) {
  19.       BasicStroke var3;
  20.       if (var1.stroke instanceof BasicStroke) {
  21.          var3 = (BasicStroke)var1.stroke;
  22.       } else {
  23.          var2 = var1.stroke.createStrokedShape(var2);
  24.          var3 = null;
  25.       }
  26.  
  27.       this.renderPath(var1, var2, var3);
  28.    }
  29.  
  30.    public void fill(SunGraphics2D var1, Shape var2) {
  31.       this.renderPath(var1, var2, (BasicStroke)null);
  32.    }
  33.  
  34.    public void renderPath(SunGraphics2D var1, Shape var2, BasicStroke var3) {
  35.       PathIterator var4 = var2.getPathIterator(var1.transform);
  36.       boolean var5 = var3 != null && var1.strokeHint != 2;
  37.       Rasterizer var6 = DuctusRenderer.createShapeRasterizer(var4, var1.transform, var3, var5, 0.5F);
  38.       Object var7 = null;
  39.  
  40.       try {
  41.          int[] var8 = new int[4];
  42.          var6.getAlphaBox(var8);
  43.          Rectangle var9 = new Rectangle(var8[0], var8[1], var8[2] - var8[0], var8[3] - var8[1]);
  44.          Rectangle var10 = var1.getCompBounds();
  45.          var8[0] = Math.max(var8[0], var10.x);
  46.          var8[1] = Math.max(var8[1], var10.y);
  47.          var8[2] = Math.min(var8[2], var10.x + var10.width);
  48.          var8[3] = Math.min(var8[3], var10.y + var10.height);
  49.          if (var8[0] < var8[2] && var8[1] < var8[3]) {
  50.             var6.setOutputArea((float)var8[0], (float)var8[1], var8[2] - var8[0], var8[3] - var8[1]);
  51.             var7 = this.outpipe.startSequence(var1, var2, var9, var8);
  52.             int var11 = Rasterizer.TILE_SIZE;
  53.             byte[] var12 = new byte[var11 * var11];
  54.  
  55.             for(int var14 = var8[1]; var14 < var8[3]; var14 += var11) {
  56.                for(int var15 = var8[0]; var15 < var8[2]; var15 += var11) {
  57.                   int var16 = Math.min(var11, var8[2] - var15);
  58.                   int var17 = Math.min(var11, var8[3] - var14);
  59.                   int var18 = var6.getTileState();
  60.                   if (var18 != 0 && this.outpipe.needTile(var7, var15, var14, var16, var17)) {
  61.                      byte[] var13;
  62.                      if (var18 == 2) {
  63.                         var13 = var12;
  64.                         DuctusRenderer.getAlpha(var6, var12, 1, var11, 0);
  65.                      } else {
  66.                         var13 = null;
  67.                         var6.nextTile();
  68.                      }
  69.  
  70.                      this.outpipe.renderPathTile(var7, var13, 0, var11, var15, var14, var16, var17);
  71.                   } else {
  72.                      var6.nextTile();
  73.                      this.outpipe.skipTile(var7, var15, var14);
  74.                   }
  75.                }
  76.             }
  77.  
  78.             return;
  79.          }
  80.       } catch (PRException var23) {
  81.          ((Throwable)var23).printStackTrace();
  82.          return;
  83.       } finally {
  84.          DuctusRenderer.dropRasterizer(var6);
  85.          if (var7 != null) {
  86.             this.outpipe.endSequence(var7);
  87.          }
  88.  
  89.       }
  90.  
  91.    }
  92. }
  93.