home *** CD-ROM | disk | FTP | other *** search
Wrap
package sun.awt.image; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.FontMetrics; import java.awt.GraphicsConfiguration; import java.awt.Image; import java.awt.Paint; import java.awt.Rectangle; import java.awt.Shape; import java.awt.font.FontRenderContext; import java.awt.font.GlyphVector; import java.awt.geom.AffineTransform; import java.awt.geom.Arc2D; import java.awt.geom.Ellipse2D; import java.awt.geom.PathIterator; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.ImageObserver; import java.awt.image.IndexColorModel; import java.awt.image.WritableRaster; import sun.awt.font.NativeFontWrapper; import sun.dc.path.PathConsumer; import sun.dc.path.PathException; import sun.java2d.OutputManager; import sun.java2d.SunGraphics2D; import sun.java2d.loops.DrawBytes; import sun.java2d.loops.DrawBytesRasterContext; import sun.java2d.loops.DrawChars; import sun.java2d.loops.DrawCharsRasterContext; import sun.java2d.loops.DrawGlyphVector; import sun.java2d.loops.DrawGlyphVectorRasterContext; import sun.java2d.loops.DrawLine; import sun.java2d.loops.DrawLineRasterContext; import sun.java2d.loops.DrawPolygons; import sun.java2d.loops.DrawPolygonsRasterContext; import sun.java2d.loops.DrawRect; import sun.java2d.loops.DrawRectRasterContext; import sun.java2d.loops.DrawString; import sun.java2d.loops.DrawStringRasterContext; import sun.java2d.loops.FillPolygons; import sun.java2d.loops.FillPolygonsRasterContext; import sun.java2d.loops.FillRect; import sun.java2d.loops.FillRectRasterContext; import sun.java2d.loops.FillSpans; import sun.java2d.loops.GraphicsPrimitive; import sun.java2d.loops.GraphicsPrimitiveMgr; import sun.java2d.loops.ImageData; import sun.java2d.loops.LockableRaster; import sun.java2d.loops.RasterLockingException; import sun.java2d.loops.RasterOutputManager; import sun.java2d.pipe.DuctusRenderer; import sun.java2d.pipe.PixelDrawPipe; import sun.java2d.pipe.PixelFillPipe; import sun.java2d.pipe.ShapeDrawPipe; import sun.java2d.pipe.ShapeSpanIterator; import sun.java2d.pipe.SimpleRenderPipe; import sun.java2d.pipe.SpanIterator; import sun.java2d.pipe.TextPipe; import sun.java2d.pipe.TranslateablePipe; public class BufferedImageGraphics2D extends SunGraphics2D implements SimpleRenderPipe, PixelDrawPipe, PixelFillPipe, ShapeDrawPipe, TranslateablePipe, TextPipe { public BufferedImage bufImg; Component component; WritableRaster raster; private ImageData cachedID; private int primtype; Object drawLineState; DrawLineRasterContext dlrc; Object fillRectState; FillRectRasterContext frrc; FillSpanCachedState fillSpanState; Object drawRectState; DrawRectRasterContext drrc; Object drawPolysState; Object drawPolygonState; Object drawPolylineState; DrawPolygonsRasterContext dprc; Object fillPolysState; Object fillPolygonState; FillPolygonsRasterContext fprc; Object drawStringState; DrawStringRasterContext dsrc; Object drawGlyphVectorState; DrawGlyphVectorRasterContext gvrc; Object drawCharsState; DrawCharsRasterContext dcrc; Object drawBytesState; DrawBytesRasterContext dbrc; Font lastGlyphVectorFont; FillRectRasterContext crrc; private int clipX; private int clipY; private int clipW; private int clipH; private int xOrigin; private int yOrigin; private Font cachedFont; private AffineTransform cachedTextTransform; private boolean textIsAntiAliased; private boolean textUsesFractionalMetrics; private boolean useFastTextClip; private float fastClipMinY; private float fastClipMaxY; private int cachedFontRotate; private int lastGlyphVectorFontRotate; private static final int slowTextTransformMask = 120; public BufferedImageGraphics2D(BufferedImage var1, Component var2) { this.bufImg = var1; this.raster = var1.getRaster(); this.component = var2; ((SunGraphics2D)this).setDevClip(0, 0, var1.getWidth(), var1.getHeight()); if (this.component != null) { ((SunGraphics2D)this).setColor(this.component.getForeground()); this.setBackground(this.component.getBackground()); this.setFont(this.component.getFont()); } else { ((SunGraphics2D)this).setColor(Color.white); this.setBackground(Color.black); this.setFont(new Font("Dialog", 0, 12)); } this.primtype = var1.getType(); if (this.primtype == 13 && var1.getColorModel() instanceof IndexColorModel) { IndexColorModel var5 = (IndexColorModel)var1.getColorModel(); if (ImageData.isAllOpaqueGrayICM(var5) && ((ColorModel)var5).getPixelSize() == 8) { this.primtype = -17; } } else if (this.primtype == 0 && var1.getColorModel() instanceof IndexColorModel && this.raster.getNumBands() == 1 && this.raster instanceof ShortComponentRaster) { IndexColorModel var3 = (IndexColorModel)var1.getColorModel(); ShortComponentRaster var4 = (ShortComponentRaster)this.raster; if (var4.getPixelStride() == 1 && ((ColorModel)var3).getPixelSize() == 12 && ImageData.isAllOpaqueGrayICM(var3)) { this.primtype = -18; } } this.invalidateCachedState(); } protected void invalidatePipe() { super.invalidatePipe(); this.invalidateCachedState(); } private void invalidateFontState() { this.drawStringState = null; this.dsrc = null; this.drawGlyphVectorState = null; this.gvrc = null; this.drawCharsState = null; this.dcrc = null; this.drawBytesState = null; this.dbrc = null; this.lastGlyphVectorFont = null; this.cachedFont = null; this.useFastTextClip = false; } private void invalidateCachedState() { this.drawLineState = null; this.dlrc = null; this.fillRectState = null; this.frrc = null; this.fillSpanState = null; this.drawRectState = null; this.drrc = null; this.drawPolysState = null; this.drawPolygonState = null; this.drawPolylineState = null; this.dprc = null; this.fillPolysState = null; this.fillPolygonState = null; this.fprc = null; this.crrc = null; Rectangle var1 = ((SunGraphics2D)this).getCompBounds(); if (var1 != null) { this.clipX = var1.x; this.clipY = var1.y; this.clipW = var1.width; this.clipH = var1.height; } else if (super.devClip != null) { this.clipX = super.devClip.x; this.clipY = super.devClip.y; this.clipW = super.devClip.width; this.clipH = super.devClip.height; } this.cachedID = null; this.invalidateFontState(); } private void computeFontOptimizations(Font var1) { if (this.cachedFont != var1) { this.cachedFont = var1; float var2 = var1.getSize2D(); FontRenderContext var3 = ((SunGraphics2D)this).getFontRenderContext(); this.cachedTextTransform = var3.getTransform(); this.cachedTextTransform.scale((double)var2, (double)var2); this.cachedTextTransform.preConcatenate(var1.getTransform()); int var4 = this.cachedTextTransform.getType(); this.cachedTextTransform.preConcatenate(super.transform); this.cachedFontRotate = -1; this.textIsAntiAliased = var3.isAntiAliased(); this.textUsesFractionalMetrics = var3.usesFractionalMetrics(); this.useFastTextClip = false; if (0 == (var4 & 120)) { FontMetrics var5 = ((SunGraphics2D)this).getFontMetrics(var1); int var6 = var5.getHeight(); Rectangle var7 = ((SunGraphics2D)this).getClipBounds(); if (var7 != null) { this.fastClipMinY = (float)(var7.y - var6); this.fastClipMaxY = (float)(var7.y + var7.height + var6); } else { this.fastClipMinY = (float)(super.devClip.y - this.yOrigin - var6); this.fastClipMaxY = (float)(super.devClip.y - this.yOrigin + super.devClip.height + var6); } this.useFastTextClip = true; } } } private boolean isRotated(AffineTransform var1, double[] var2) { var1.getMatrix(var2); return var2[0] != var2[3] || var2[1] != (double)0.0F || var2[2] != (double)0.0F || !(var2[0] > (double)0.0F); } public void setOrigin(int var1, int var2) { this.xOrigin = var1; this.yOrigin = var2; } public void setFont(Font var1) { if (this.cachedFont != var1) { super.setFont(var1); this.invalidateFontState(); } } public ColorModel getDeviceColorModel() { return this.bufImg.getColorModel(); } public GraphicsConfiguration getDeviceConfiguration() { if (this.component != null) { GraphicsConfiguration var1 = this.component.getGraphicsConfiguration(); if (var1 != null) { return var1; } } return BufferedImageGraphicsConfig.getConfig(this.bufImg); } public OutputManager getOutputManager() { return BufferedImageGraphicsConfig.getOutputManager(this.bufImg); } public void dispose() { } public void finalize() { } public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, ImageObserver var6) { if (var4 != 0 && var5 != 0) { if (var1 instanceof BufferedImage) { BufferedImage var9 = (BufferedImage)var1; super.drawImage(var9, var2, var3, var4, var5, (Color)null, var6); return true; } else { sun.awt.image.Image var7 = (sun.awt.image.Image)var1; if (var7.hasError()) { if (var6 != null) { var6.imageUpdate(var1, 192, -1, -1, -1, -1); } return false; } else { ImageRepresentation var8 = var7.getImageRep(); return var8.drawToBufImage(this, var7, var2, var3, var4, var5, (Color)null, var6); } } } else { return true; } } public boolean drawImage(Image var1, int var2, int var3, Color var4, ImageObserver var5) { if (var1 instanceof BufferedImage) { super.drawImage((BufferedImage)var1, var2, var3, var4, var5); return true; } else { sun.awt.image.Image var6 = (sun.awt.image.Image)var1; if (var6.hasError()) { if (var5 != null) { var5.imageUpdate(var1, 192, -1, -1, -1, -1); } return false; } else { ImageRepresentation var7 = var6.getImageRep(); return var7.drawToBufImage(this, var6, var2, var3, var4, var5); } } } public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, Color var6, ImageObserver var7) { if (var4 != 0 && var5 != 0) { if (var1 instanceof BufferedImage) { super.drawImage((BufferedImage)var1, var2, var3, var4, var5, var6, var7); return true; } else { sun.awt.image.Image var8 = (sun.awt.image.Image)var1; if (var8.hasError()) { if (var7 != null) { var7.imageUpdate(var1, 192, -1, -1, -1, -1); } return false; } else { ImageRepresentation var9 = var8.getImageRep(); return var9.drawToBufImage(this, var8, var2, var3, var4, var5, var6, var7); } } } else { return true; } } public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, ImageObserver var10) { return this.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, (Color)null, var10); } public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, Color var10, ImageObserver var11) { if (var2 != var4 && var3 != var5) { if (var6 != var8 && var7 != var9) { if (var1 instanceof BufferedImage) { super.drawImage((BufferedImage)var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); return true; } else { sun.awt.image.Image var12 = (sun.awt.image.Image)var1; if (var12.hasError()) { if (var11 != null) { var11.imageUpdate(var1, 192, -1, -1, -1, -1); } return false; } else { ImageRepresentation var13 = var12.getImageRep(); return var13.drawToBufImage(this, var12, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); } } } else { return true; } } else { return true; } } public boolean drawImage(Image var1, AffineTransform var2, ImageObserver var3) { if (var1 instanceof BufferedImage) { super.drawImage((BufferedImage)var1, var2, 0, 0, (Color)null, var3); return true; } else { sun.awt.image.Image var4 = (sun.awt.image.Image)var1; if (var4.hasError()) { if (var3 != null) { var3.imageUpdate(var1, 192, -1, -1, -1, -1); } return false; } else { ImageRepresentation var5 = var4.getImageRep(); return var5.drawToBufImage(this, var4, var2, var3); } } } public boolean drawImage(Image var1, int var2, int var3, ImageObserver var4) { if (var1 instanceof BufferedImage) { return super.drawImage((BufferedImage)var1, var2, var3, (Color)null, var4); } else { sun.awt.image.Image var5 = (sun.awt.image.Image)var1; if (var5.hasError()) { if (var4 != null) { var4.imageUpdate(var1, 192, -1, -1, -1, -1); } return false; } else { ImageRepresentation var6 = var5.getImageRep(); return var6.drawToBufImage(this, var5, var2, var3, (Color)null, var4); } } } protected void checkCustomComposite() { } public void setPaint(Paint var1) { super.setPaint(var1); this.invalidateCachedState(); } public void setBackground(Color var1) { if (super.backgroundColor != var1) { this.crrc = null; super.setBackground(var1); } } public void setClip(int var1, int var2, int var3, int var4) { super.setClip(var1, var2, var3, var4); this.invalidateCachedState(); } public void setClip(Shape var1) { super.setClip(var1); this.invalidateCachedState(); } public void clipRect(int var1, int var2, int var3, int var4) { super.clipRect(var1, var2, var3, var4); this.invalidateCachedState(); } public void clip(Shape var1) { super.clip(var1); this.invalidateCachedState(); } public void drawLine(SunGraphics2D var1, int var2, int var3, int var4, int var5) { var2 += this.xOrigin; var3 += this.yOrigin; var4 += this.xOrigin; var5 += this.yOrigin; if (this.dlrc == null) { LockableRaster var6 = new LockableRaster(var1); int[] var7 = new int[]{var6.type}; GraphicsPrimitive var8 = GraphicsPrimitiveMgr.locate(DrawLine.getMethodSignature(), var7, var6.devID); if (var8 != null) { DrawLine var9 = (DrawLine)var8; this.dlrc = var9.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.dlrc != null) { this.dlrc.invoke(var2, var3, var4, var5); } else { this.drawLineState = RasterOutputManager.getManager().drawLine(var1, var2, var3, var4, var5, this.drawLineState); } } public void fillRect(SunGraphics2D var1, int var2, int var3, int var4, int var5) { var2 += this.xOrigin; var3 += this.yOrigin; if (this.frrc == null) { LockableRaster var6 = new LockableRaster(var1); int[] var7 = new int[]{var6.type}; GraphicsPrimitive var8 = GraphicsPrimitiveMgr.locate(FillRect.getMethodSignature(), var7, var6.devID); if (var8 != null) { FillRect var9 = (FillRect)var8; this.frrc = var9.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.frrc != null) { this.frrc.invoke(var2, var3, var4, var5); } else { this.fillRectState = RasterOutputManager.getManager().fillRect(var1, var2, var3, var4, var5, this.fillRectState); } } public void draw(SunGraphics2D var1, Shape var2) { ShapeSpanIterator var3 = new ShapeSpanIterator(); try { var3.setOutputArea(var1.getCompBounds()); var3.setRule(1); BasicStroke var4 = (BasicStroke)var1.stroke; AffineTransform var5 = var1.transformState == 2 ? var1.transform : null; PathConsumer var6 = DuctusRenderer.createStroker(var3, var4, var5); var5 = var1.transformState == 0 ? null : var1.transform; PathIterator var7 = var2.getPathIterator(var5); try { boolean var8 = var1.strokeHint != 2; DuctusRenderer.feedConsumer(var7, var6, var8, 0.25F); } catch (PathException var13) { throw new InternalError("Unable to Stroke shape (" + ((Throwable)var13).getMessage() + ")"); } this.fillSpans(var1, var3); } finally { var3.dispose(); } } public void fill(SunGraphics2D var1, Shape var2) { ShapeSpanIterator var3 = new ShapeSpanIterator(); try { var3.setOutputArea(var1.getCompBounds()); AffineTransform var4 = var1.transformState == 0 ? null : var1.transform; var3.appendPath(var2.getPathIterator(var4)); this.fillSpans(var1, var3); } finally { var3.dispose(); } } public void fillSpans(SunGraphics2D var1, SpanIterator var2) { FillSpans var3 = null; Object var4 = null; LockableRaster var14; if (this.fillSpanState != null) { var3 = this.fillSpanState.fillSpanObj; var14 = this.fillSpanState.lrDst; } else { var14 = new LockableRaster(var1); int[] var5 = new int[]{var14.type}; GraphicsPrimitive var6 = GraphicsPrimitiveMgr.locate(FillSpans.getMethodSignature(), var5, var14.devID); if (var6 != null) { this.fillSpanState = new FillSpanCachedState((1)null); this.fillSpanState.fillSpanObj = var3 = (FillSpans)var6; this.fillSpanState.lrDst = var14; } else if (this.frrc == null) { var6 = GraphicsPrimitiveMgr.locate(FillRect.getMethodSignature(), var5, var14.devID); if (var6 != null) { FillRect var7 = (FillRect)var6; this.frrc = var7.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } } int[] var15 = new int[4]; if (var3 != null) { var2.getPathBox(var15); try { var14.lock(((GraphicsPrimitive)var3).getLockFlags()[0], var15[0], var15[1], var15[2] - var15[0], var15[3] - var15[1]); var3.FillSpans(var14.id, var1.getColor(), var2); } catch (RasterLockingException var12) { } finally { var14.unlock(); } } else { RasterOutputManager var17 = RasterOutputManager.getManager(); while(var2.nextSpan(var15)) { if (this.frrc != null) { this.frrc.invoke(var15[0], var15[1], var15[2] - var15[0], var15[3] - var15[1]); } else { this.fillRectState = var17.fillRect(var1, var15[0], var15[1], var15[2] - var15[0], var15[3] - var15[1], this.fillRectState); } } } } private void translatePolys(int[][] var1, int[] var2, int var3) { int var5 = 0; if (var2 == null) { var5 = var3; } else { for(int var4 = 0; var4 < var3; ++var4) { var5 += var2[var4]; } } if (this.xOrigin != 0) { int[] var7 = new int[var5]; int[] var6 = var1[0]; for(int var8 = 0; var8 < var5; ++var8) { var7[var8] = var6[var8] + this.xOrigin; } var1[0] = var7; } if (this.yOrigin != 0) { int[] var11 = new int[var5]; int[] var10 = var1[1]; for(int var9 = 0; var9 < var5; ++var9) { var11[var9] = var10[var9] + this.yOrigin; } var1[1] = var11; } } public void drawPolys(SunGraphics2D var1, int[] var2, int[] var3, int[] var4, int var5, boolean var6) { if (this.xOrigin != 0 || this.yOrigin != 0) { int[][] var7 = new int[][]{var2, var3}; this.translatePolys(var7, var4, var5); var2 = var7[0]; var3 = var7[1]; } if (this.dprc == null) { LockableRaster var11 = new LockableRaster(var1); int[] var8 = new int[]{var11.type}; GraphicsPrimitive var9 = GraphicsPrimitiveMgr.locate(DrawPolygons.getMethodSignature(), var8, var11.devID); if (var9 != null) { DrawPolygons var10 = (DrawPolygons)var9; this.dprc = var10.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.dprc != null) { this.dprc.invoke(var2, var3, var4, var5, var6); } else { this.drawPolysState = RasterOutputManager.getManager().drawPolys(var1, var2, var3, var4, var5, var6, this.drawPolysState); } } public void fillPolys(SunGraphics2D var1, int[] var2, int[] var3, int[] var4, int var5, boolean var6) { if (this.xOrigin != 0 || this.yOrigin != 0) { int[][] var7 = new int[][]{var2, var3}; this.translatePolys(var7, var4, var5); var2 = var7[0]; var3 = var7[1]; } if (this.fprc == null) { LockableRaster var11 = new LockableRaster(var1); int[] var8 = new int[]{var11.type}; GraphicsPrimitive var9 = GraphicsPrimitiveMgr.locate(FillPolygons.getMethodSignature(), var8, var11.devID); if (var9 != null) { FillPolygons var10 = (FillPolygons)var9; this.fprc = var10.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.fprc != null) { this.fprc.invoke(var2, var3, var4, var5, var6); } else { this.fillPolysState = RasterOutputManager.getManager().fillPolys(var1, var2, var3, var4, var5, var6, this.fillPolysState); } } public void drawRect(SunGraphics2D var1, int var2, int var3, int var4, int var5) { var2 += this.xOrigin; var3 += this.yOrigin; if (this.drrc == null) { LockableRaster var6 = new LockableRaster(var1); int[] var7 = new int[]{var6.type}; GraphicsPrimitive var8 = GraphicsPrimitiveMgr.locate(DrawRect.getMethodSignature(), var7, var6.devID); if (var8 != null) { DrawRect var9 = (DrawRect)var8; this.drrc = var9.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.drrc != null) { this.drrc.invoke(var2, var3, var4, var5); } else { this.drawRectState = RasterOutputManager.getManager().drawRect(var1, var2, var3, var4, var5, this.drawRectState); } } public void drawRoundRect(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) { var1.shapepipe.draw(var1, new RoundRectangle2D.Float((float)var2, (float)var3, (float)var4, (float)var5, (float)var6, (float)var7)); } public void drawOval(SunGraphics2D var1, int var2, int var3, int var4, int var5) { var1.shapepipe.draw(var1, new Ellipse2D.Float((float)var2, (float)var3, (float)var4, (float)var5)); } public void drawArc(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) { var1.shapepipe.draw(var1, new Arc2D.Float((float)var2, (float)var3, (float)var4, (float)var5, (float)var6, (float)var7, 0)); } public void drawPolyline(SunGraphics2D var1, int[] var2, int[] var3, int var4) { if (this.xOrigin != 0 || this.yOrigin != 0) { int[][] var5 = new int[][]{var2, var3}; this.translatePolys(var5, (int[])null, var4); var2 = var5[0]; var3 = var5[1]; } if (this.dprc == null) { LockableRaster var9 = new LockableRaster(var1); int[] var6 = new int[]{var9.type}; GraphicsPrimitive var7 = GraphicsPrimitiveMgr.locate(DrawPolygons.getMethodSignature(), var6, var9.devID); if (var7 != null) { DrawPolygons var8 = (DrawPolygons)var7; this.dprc = var8.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.dprc != null) { int[] var10 = new int[]{var4}; this.dprc.invoke(var2, var3, var10, 1, false); } else { this.drawPolylineState = RasterOutputManager.getManager().drawPolyline(var1, var2, var3, var4, this.drawPolylineState); } } public void drawPolygon(SunGraphics2D var1, int[] var2, int[] var3, int var4) { if (this.xOrigin != 0 || this.yOrigin != 0) { int[][] var5 = new int[][]{var2, var3}; this.translatePolys(var5, (int[])null, var4); var2 = var5[0]; var3 = var5[1]; } if (this.dprc == null) { LockableRaster var9 = new LockableRaster(var1); int[] var6 = new int[]{var9.type}; GraphicsPrimitive var7 = GraphicsPrimitiveMgr.locate(DrawPolygons.getMethodSignature(), var6, var9.devID); if (var7 != null) { DrawPolygons var8 = (DrawPolygons)var7; this.dprc = var8.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.dprc != null) { int[] var10 = new int[]{var4}; this.dprc.invoke(var2, var3, var10, 1, true); } else { this.drawPolygonState = RasterOutputManager.getManager().drawPolygon(var1, var2, var3, var4, this.drawPolygonState); } } public void fillRoundRect(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) { var1.shapepipe.fill(var1, new RoundRectangle2D.Float((float)var2, (float)var3, (float)var4, (float)var5, (float)var6, (float)var7)); } public void fillOval(SunGraphics2D var1, int var2, int var3, int var4, int var5) { var1.shapepipe.fill(var1, new Ellipse2D.Float((float)var2, (float)var3, (float)var4, (float)var5)); } public void fillArc(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) { var1.shapepipe.fill(var1, new Arc2D.Float((float)var2, (float)var3, (float)var4, (float)var5, (float)var6, (float)var7, 2)); } public void fillPolygon(SunGraphics2D var1, int[] var2, int[] var3, int var4) { if (this.xOrigin != 0 || this.yOrigin != 0) { int[][] var5 = new int[][]{var2, var3}; this.translatePolys(var5, (int[])null, var4); var2 = var5[0]; var3 = var5[1]; } if (this.fprc == null) { LockableRaster var9 = new LockableRaster(var1); int[] var6 = new int[]{var9.type}; GraphicsPrimitive var7 = GraphicsPrimitiveMgr.locate(FillPolygons.getMethodSignature(), var6, var9.devID); if (var7 != null) { FillPolygons var8 = (FillPolygons)var7; this.fprc = var8.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.fprc != null) { int[] var10 = new int[]{var4}; this.fprc.invoke(var2, var3, var10, 1, true); } else { this.fillPolygonState = RasterOutputManager.getManager().fillPolygon(var1, var2, var3, var4, this.fillPolygonState); } } public void clearRect(int var1, int var2, int var3, int var4) { if (super.fillpipe != this) { super.clearRect(var1, var2, var3, var4); } else { if (this.crrc == null && super.clipState != 2) { LockableRaster var5 = new LockableRaster(this); int[] var6 = new int[]{var5.type}; GraphicsPrimitive var7 = GraphicsPrimitiveMgr.locate(FillRect.getMethodSignature(), var6, var5.devID); if (var7 != null) { FillRect var8 = (FillRect)var7; this.crrc = var8.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getBackground(), this.clipX, this.clipY, this.clipW, this.clipH); } } if (this.crrc != null) { var1 += this.xOrigin; var2 += this.yOrigin; this.crrc.invoke(var1, var2, var3, var4); } else { super.clearRect(var1, var2, var3, var4); } } } public Object drawString(SunGraphics2D var1, String var2, float var3, float var4, Object var5) { if (this.dsrc == null) { LockableRaster var6 = new LockableRaster(this); int[] var7 = new int[]{var6.type}; GraphicsPrimitive var8 = GraphicsPrimitiveMgr.locate(DrawString.getMethodSignature(), var7, var6.devID); if (var8 != null) { if (this.cachedFont == null) { this.computeFontOptimizations(((SunGraphics2D)this).getFont()); } boolean var9 = true; double[] var10 = new double[6]; if (this.isRotated(this.cachedTextTransform, var10)) { if (this.cachedFontRotate == -1) { this.cachedFontRotate = NativeFontWrapper.fontCanRotate(this.cachedFont); } if (this.cachedFontRotate != 1) { var9 = false; FontRenderContext var11 = var1.getFontRenderContext(); if (this.cachedFontRotate == 2 && NativeFontWrapper.fontCanRotateText(var1.getFont(), var2, var10, var11.isAntiAliased(), var11.usesFractionalMetrics())) { var9 = true; } } } if (var9) { DrawString var13 = (DrawString)var8; this.dsrc = var13.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.cachedFont, this.cachedTextTransform, this.textIsAntiAliased, this.textUsesFractionalMetrics, this.clipX, this.clipY, this.clipW, this.clipH); } } } if (!this.useFastTextClip || !(var4 < this.fastClipMinY) && !(var4 > this.fastClipMaxY)) { if (this.dsrc != null) { if (var1.transformState == 2) { double[] var12 = new double[]{(double)var3, (double)var4}; var1.transform.deltaTransform(var12, 0, var12, 0, 1); var3 = (float)var12[0]; var4 = (float)var12[1]; } this.dsrc.invoke(var2, var3, var4); } else { this.drawStringState = RasterOutputManager.getManager().drawString(var1, var2, var3, var4, this.drawStringState); } return null; } else { return null; } } public Object drawGlyphVector(SunGraphics2D var1, GlyphVector var2, float var3, float var4, Object var5) { Font var6 = var2.getFont(); if (var6 != this.lastGlyphVectorFont) { this.drawGlyphVectorState = null; this.gvrc = null; this.lastGlyphVectorFont = var6; this.lastGlyphVectorFontRotate = -1; } if (this.gvrc == null) { LockableRaster var7 = new LockableRaster(this); int[] var8 = new int[]{var7.type}; GraphicsPrimitive var9 = GraphicsPrimitiveMgr.locate(DrawGlyphVector.getMethodSignature(), var8, var7.devID); if (var9 != null) { float var10 = var6.getSize2D(); FontRenderContext var11 = var2.getFontRenderContext(); AffineTransform var12 = var11.getTransform(); var12.scale((double)var10, (double)var10); var12.preConcatenate(var6.getTransform()); var12.preConcatenate(super.transform); boolean var13 = true; double[] var14 = new double[6]; if (this.isRotated(var12, var14)) { if (this.lastGlyphVectorFontRotate == -1) { this.lastGlyphVectorFontRotate = NativeFontWrapper.fontCanRotate(var6); } if (this.lastGlyphVectorFontRotate != 1) { var13 = false; if (this.lastGlyphVectorFontRotate == 2 && NativeFontWrapper.fontCanRotateGlyphVector(var6, var2.getGlyphCodes(0, var2.getNumGlyphs(), (int[])null), var14, var11.isAntiAliased(), var11.usesFractionalMetrics())) { var13 = true; } } } if (var13) { DrawGlyphVector var15 = (DrawGlyphVector)var9; this.gvrc = var15.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), var6, var12, super.transform, var11.isAntiAliased(), var11.usesFractionalMetrics(), this.clipX, this.clipY, this.clipW, this.clipH); } } } if (this.gvrc != null) { if (var1.transformState == 2) { double[] var16 = new double[]{(double)var3, (double)var4}; var1.transform.deltaTransform(var16, 0, var16, 0, 1); var3 = (float)var16[0]; var4 = (float)var16[1]; } this.gvrc.invoke(var2, var3, var4); } else { this.drawGlyphVectorState = RasterOutputManager.getManager().drawGlyphVector(var1, var2, var3, var4, this.drawGlyphVectorState); } return null; } public Object drawChars(SunGraphics2D var1, char[] var2, int var3, int var4, int var5, int var6, Object var7) { if (this.dcrc == null) { LockableRaster var8 = new LockableRaster(this); int[] var9 = new int[]{var8.type}; GraphicsPrimitive var10 = GraphicsPrimitiveMgr.locate(DrawChars.getMethodSignature(), var9, var8.devID); if (var10 != null) { if (this.cachedFont == null) { this.computeFontOptimizations(((SunGraphics2D)this).getFont()); } boolean var11 = true; double[] var12 = new double[6]; if (this.isRotated(this.cachedTextTransform, var12)) { if (this.cachedFontRotate == -1) { this.cachedFontRotate = NativeFontWrapper.fontCanRotate(this.cachedFont); } if (this.cachedFontRotate != 1) { var11 = false; FontRenderContext var13 = var1.getFontRenderContext(); if (this.cachedFontRotate == 2 && NativeFontWrapper.fontCanRotateText(var1.getFont(), new String(var2, var3, var4), var12, var13.isAntiAliased(), var13.usesFractionalMetrics())) { var11 = true; } } } if (var11) { DrawChars var17 = (DrawChars)var10; this.dcrc = var17.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.cachedFont, this.cachedTextTransform, this.textIsAntiAliased, this.textUsesFractionalMetrics, this.clipX, this.clipY, this.clipW, this.clipH); } } } if (!this.useFastTextClip || !((float)var6 < this.fastClipMinY) && !((float)var6 > this.fastClipMaxY)) { if (this.dcrc != null) { float var14; float var15; if (var1.transformState == 2) { double[] var16 = new double[]{(double)var5, (double)var6}; var1.transform.deltaTransform(var16, 0, var16, 0, 1); var14 = (float)var16[0]; var15 = (float)var16[1]; } else { var14 = (float)var5; var15 = (float)var6; } this.dcrc.invoke(var2, var3, var4, var14, var15); } else { this.drawCharsState = RasterOutputManager.getManager().drawChars(var1, var2, var3, var4, var5, var6, this.drawCharsState); } return null; } else { return null; } } public Object drawBytes(SunGraphics2D var1, byte[] var2, int var3, int var4, int var5, int var6, Object var7) { if (this.dbrc == null) { LockableRaster var8 = new LockableRaster(this); int[] var9 = new int[]{var8.type}; GraphicsPrimitive var10 = GraphicsPrimitiveMgr.locate(DrawBytes.getMethodSignature(), var9, var8.devID); if (var10 != null) { if (this.cachedFont == null) { this.computeFontOptimizations(((SunGraphics2D)this).getFont()); } boolean var11 = true; double[] var12 = new double[6]; if (this.isRotated(this.cachedTextTransform, var12)) { if (this.cachedFontRotate == -1) { this.cachedFontRotate = NativeFontWrapper.fontCanRotate(this.cachedFont); } if (this.cachedFontRotate != 1) { var11 = false; FontRenderContext var13 = var1.getFontRenderContext(); if (this.cachedFontRotate == 2 && NativeFontWrapper.fontCanRotateText(var1.getFont(), new String(var2, 0, var3, var4), var12, var13.isAntiAliased(), var13.usesFractionalMetrics())) { var11 = true; } } } if (var11) { DrawBytes var17 = (DrawBytes)var10; this.dbrc = var17.createCachedContext(this.raster, this.bufImg.getColorModel(), ((SunGraphics2D)this).getColor(), this.cachedFont, this.cachedTextTransform, this.textIsAntiAliased, this.textUsesFractionalMetrics, this.clipX, this.clipY, this.clipW, this.clipH); } } } if (!this.useFastTextClip || !((float)var6 < this.fastClipMinY) && !((float)var6 > this.fastClipMaxY)) { if (this.dbrc != null) { float var14; float var15; if (var1.transformState == 2) { double[] var16 = new double[]{(double)var5, (double)var6}; var1.transform.deltaTransform(var16, 0, var16, 0, 1); var14 = (float)var16[0]; var15 = (float)var16[1]; } else { var14 = (float)var5; var15 = (float)var6; } this.dbrc.invoke(var2, var3, var4, var14, var15); } else { this.drawBytesState = RasterOutputManager.getManager().drawBytes(var1, var2, var3, var4, var5, var6, this.drawBytesState); } return null; } else { return null; } } public ImageData lock(int var1, int var2, int var3, int var4, int var5) { ImageData var6 = this.cachedID; if (null == var6 || var6.amILocked()) { var6 = new ImageData(); } var6.setViewArea(var1, var2, var3, var4); var6.setLockMethod(var5); if (1 == this.lock(var6)) { this.cachedID = var6; return var6; } else { return null; } } private int lock(ImageData var1) { if (null != var1) { if (var1.amILocked()) { return 7; } if (!var1.equals(this.cachedID) && !LockableRaster.prepareImageData(var1, this.raster, this.bufImg.getColorModel(), this.primtype)) { return 5; } if (LockableRaster.prepareRasterBounds(var1, this.clipX, this.clipY, this.clipW, this.clipH)) { var1.incLockCount(); this.cachedID = var1; return 1; } } return 5; } public int unlock(ImageData var1) { byte var2 = 5; WritableRaster var3 = this.raster; var2 = 6; if (null != var1 && var1.amILocked()) { var1.decLockCount(); } return var2; } public String toString() { String var1 = "BufferedImageGraphics2D["; var1 = var1 + "BufferedImage[" + this.bufImg + "]"; var1 = var1 + " Component[" + this.component + "]"; return var1; } }