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 / loops / RasterOutputManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  35.2 KB  |  2,391 lines

  1. package sun.java2d.loops;
  2.  
  3. import java.awt.AlphaComposite;
  4. import java.awt.Color;
  5. import java.awt.Composite;
  6. import java.awt.CompositeContext;
  7. import java.awt.Font;
  8. import java.awt.FontMetrics;
  9. import java.awt.Graphics;
  10. import java.awt.Rectangle;
  11. import java.awt.RenderingHints;
  12. import java.awt.font.FontRenderContext;
  13. import java.awt.font.GlyphVector;
  14. import java.awt.geom.AffineTransform;
  15. import java.awt.geom.Arc2D;
  16. import java.awt.geom.Ellipse2D;
  17. import java.awt.geom.GeneralPath;
  18. import java.awt.geom.Rectangle2D;
  19. import java.awt.geom.RectangularShape;
  20. import java.awt.geom.RoundRectangle2D;
  21. import java.awt.image.BufferedImage;
  22. import java.awt.image.ColorModel;
  23. import java.awt.image.DirectColorModel;
  24. import java.awt.image.IndexColorModel;
  25. import java.awt.image.Raster;
  26. import java.awt.image.WritableRaster;
  27. import java.security.AccessController;
  28. import sun.awt.font.NativeFontWrapper;
  29. import sun.awt.image.BufferedImageGraphics2D;
  30. import sun.awt.image.IntegerComponentRaster;
  31. import sun.java2d.DeviceClipping;
  32. import sun.java2d.HackWorkAround2DIndexed;
  33. import sun.java2d.SunGraphics2D;
  34. import sun.java2d.SunOutputManager;
  35. import sun.java2d.pipe.AlphaColorPipe;
  36. import sun.java2d.pipe.LineStylePipe;
  37. import sun.java2d.pipe.PixelDrawPipe;
  38. import sun.java2d.pipe.PixelFillPipe;
  39. import sun.java2d.pipe.PixelToShapeConverter;
  40. import sun.java2d.pipe.SimpleRenderPipe;
  41. import sun.java2d.pipe.SpanIterator;
  42. import sun.java2d.pipe.SpanShapeRenderer;
  43. import sun.java2d.pipe.TextPipe;
  44. import sun.java2d.pipe.TranslateablePipe;
  45. import sun.security.action.GetPropertyAction;
  46.  
  47. public class RasterOutputManager extends SunOutputManager implements SimpleRenderPipe, PixelDrawPipe, PixelFillPipe, TextPipe {
  48.    private static final boolean debug = false;
  49.    private static boolean debugTrace = false;
  50.    private static boolean debugLog = false;
  51.    private static boolean usePlatformFont = false;
  52.    private static RasterOutputManager manager = new RasterOutputManager();
  53.    static final int metaFormat = 2;
  54.    static final int defaultFormat = 0;
  55.    static final String ditherID = OpaqueDitheredBlit.getMethodSignature();
  56.    static final String copyID = OpaqueBlit.getMethodSignature();
  57.    public static final ColorModel XRGBModel = new DirectColorModel(24, 16711680, 65280, 255);
  58.    public static final ColorModel XBGRModel = new DirectColorModel(24, 255, 65280, 16711680);
  59.    public static final ColorModel model;
  60.    public static final ColorModel BitmaskARGBModel;
  61.    public static final ColorModel ARGBModel;
  62.    public static final ColorModel BitmaskABGRModel;
  63.    public static final ColorModel ABGRModel;
  64.    static final AlphaColorPipe ARGBcolorpipe;
  65.  
  66.    public static final RasterOutputManager getManager() {
  67.       return manager;
  68.    }
  69.  
  70.    public static boolean usesPlatformFont() {
  71.       return usePlatformFont;
  72.    }
  73.  
  74.    static native boolean getPlatformFontVar();
  75.  
  76.    private RasterOutputManager() {
  77.       GraphicsPrimitiveMgr.register(new CustomComponent(), (String)null);
  78.       GraphicsPrimitiveMgr.register(new GeneralRenderer(), (String)null);
  79.       GraphicsPrimitiveMgr.register(new DefaultComponent(), (String)null);
  80.       GraphicsPrimitiveMgr.register(new ShortCompositing(), (String)null);
  81.       GraphicsPrimitiveMgr.register(new IndexedCompositing(), (String)null);
  82.       GraphicsPrimitiveMgr.register(new GIFAcceleratorLoops(), (String)null);
  83.       GraphicsPrimitiveMgr.register(new XBGRLoops(), (String)null);
  84.       GraphicsPrimitiveMgr.register(new IntDiscreteRenderer(), (String)null);
  85.       GraphicsPrimitiveMgr.register(new ByteDiscreteRenderer(), (String)null);
  86.       GraphicsPrimitiveMgr.register(new ShortDiscreteRenderer(), (String)null);
  87.       GraphicsPrimitiveMgr.register(new ThreeByteRenderer(), (String)null);
  88.       GraphicsPrimitiveMgr.register(new Gray8Blters(), (String)null);
  89.       GraphicsPrimitiveMgr.register(new Gray16Blters(), (String)null);
  90.       GraphicsPrimitiveMgr.register(new TextRendering(), (String)null);
  91.       GraphicsPrimitiveMgr.register(new IndexGrayAccelerators(), (String)null);
  92.    }
  93.  
  94.    public void validatePipe(SunGraphics2D var1) {
  95.       var1.simpleText = false;
  96.       boolean var2 = var1.paintState == 0 && (var1.compositeState == 0 || var1.compositeState == 2) && (!(var1 instanceof BufferedImageGraphics2D) || var1.compositeState != 2);
  97.       boolean var3 = var1.clipState != 2;
  98.       if (var1.antialiasHint == 2 && var1.modeState != 1) {
  99.          if (var1 instanceof DeviceClipping) {
  100.             ((DeviceClipping)var1).removeClip();
  101.          }
  102.  
  103.          if (var1 instanceof TranslateablePipe) {
  104.             ((TranslateablePipe)var1).setOrigin(0, 0);
  105.          }
  106.  
  107.          super.validatePipe(var1);
  108.       } else {
  109.          Rectangle var4 = var1.getCompBounds();
  110.          SunOutputManager.constructAlphaPipe(var1);
  111.          if (var2) {
  112.             Object var5;
  113.             if (var1 instanceof SimpleRenderPipe) {
  114.                var5 = (SimpleRenderPipe)var1;
  115.             } else {
  116.                var5 = this;
  117.             }
  118.  
  119.             if (var3) {
  120.                if (var1.compositeState != 2) {
  121.                   var1.simpleText = true;
  122.                }
  123.  
  124.                SunOutputManager.constructAliasedPipe(var1, (SimpleRenderPipe)var5);
  125.             } else {
  126.                if (var5 instanceof TranslateablePipe) {
  127.                   ((TranslateablePipe)var1).setOrigin(0, 0);
  128.                }
  129.  
  130.                if (var5 instanceof LineStylePipe) {
  131.                   ((LineStylePipe)var5).setLineAttrs(0.0F, 0.0F, (float[])null, 0.0F, 0, 2);
  132.                }
  133.  
  134.                var1.shapepipe = new SpanShapeRenderer.Simple((SimpleRenderPipe)var5);
  135.                PixelToShapeConverter var6 = new PixelToShapeConverter(var1.shapepipe);
  136.                var1.drawpipe = var6;
  137.                var1.fillpipe = var6;
  138.             }
  139.          } else {
  140.             if (var1 instanceof TranslateablePipe) {
  141.                ((TranslateablePipe)var1).setOrigin(0, 0);
  142.             }
  143.  
  144.             var1.shapepipe = new SpanShapeRenderer.Composite(var1.alphapipe);
  145.             PixelToShapeConverter var7 = new PixelToShapeConverter(var1.shapepipe);
  146.             var1.drawpipe = var7;
  147.             var1.fillpipe = var7;
  148.          }
  149.  
  150.          if (var1 instanceof DeviceClipping) {
  151.             if (var1.clipState == 0 && var1.constrainClip == null) {
  152.                ((DeviceClipping)var1).removeClip();
  153.             } else {
  154.                ((DeviceClipping)var1).changeClip(var4.x, var4.y, var4.width, var4.height, true);
  155.             }
  156.          }
  157.       }
  158.  
  159.       if (var2 && var3) {
  160.          if (var1.compositeState != 2) {
  161.             var1.simpleText = true;
  162.          }
  163.  
  164.          if (var1 instanceof TextPipe) {
  165.             var1.textpipe = (TextPipe)var1;
  166.             if (var1 instanceof DeviceClipping && !usePlatformFont) {
  167.                var1.textpipe = this;
  168.             }
  169.          } else {
  170.             var1.textpipe = this;
  171.          }
  172.       } else {
  173.          var1.textpipe = this;
  174.       }
  175.  
  176.    }
  177.  
  178.    public Object renderImage(SunGraphics2D var1, BufferedImage var2, Color var3, int var4, int var5, int var6, int var7, byte[] var8, int var9, Object var10) {
  179.       Object var11 = null;
  180.       RenderImageCachedState var14;
  181.       if (null != var10) {
  182.          var14 = (RenderImageCachedState)var10;
  183.          if (!var14.validate(var1)) {
  184.             var14 = new RenderImageCachedState(this, var1);
  185.          }
  186.       } else {
  187.          var14 = new RenderImageCachedState(this, var1);
  188.       }
  189.  
  190.       LockableRaster var12 = var14.getDstLR();
  191.       LockableRaster var13 = var14.getSrcLR(var2);
  192.       var14.setOpState(var2, this.compositeSrcDst(var13, var12, var1.renderHint, var1.compositeState, var1.getComposite(), var8, 0, var9, 0, 0, var4, var5, var6, var7, var3, var14.getOpState(var2)));
  193.       return var14;
  194.    }
  195.  
  196.    public Object copyArea(SunGraphics2D var1, byte[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, Object var11) {
  197.       LockableRaster var12 = null;
  198.       LockableRaster var13 = null;
  199.       CopyAreaCachedState var14 = null;
  200.       if (null != var11) {
  201.          var14 = (CopyAreaCachedState)var11;
  202.          if (var14.validate(var1)) {
  203.             var12 = var14.lrSrc;
  204.             var13 = var14.lrDst;
  205.          } else {
  206.             var14 = null;
  207.          }
  208.       }
  209.  
  210.       if (null == var12) {
  211.          var12 = new LockableRaster(var1);
  212.       }
  213.  
  214.       if (null == var13) {
  215.          var13 = new LockableRaster(var1);
  216.       }
  217.  
  218.       if (var14 == null) {
  219.          var14 = new CopyAreaCachedState(this, var1, var12, var13);
  220.       }
  221.  
  222.       int var15 = var5;
  223.       int var16 = var6;
  224.       ColorModel var17 = var1.getDeviceConfiguration().getColorModel();
  225.       int var18 = var1.renderHint;
  226.       if (var1 instanceof BufferedImageGraphics2D && (var9 >= 0 && var9 <= var7 || var10 >= 0 && var10 <= var8) || "WGraphics".equals(var1.getDevID())) {
  227.          BufferedImage var19 = new BufferedImage(var7, var8, 2);
  228.          SunGraphics2D var20 = (SunGraphics2D)var19.createGraphics();
  229.  
  230.          try {
  231.             LockableRaster var21 = new LockableRaster(var20);
  232.             this.compositeSrcDst(var12, var21, var18, 0, AlphaComposite.Src, (byte[])null, var4, var3, var15, var16, 0, 0, var7, var8, (Color)null, (Object)null);
  233.             var15 = 0;
  234.             var16 = 0;
  235.             var17 = var19.getColorModel();
  236.             var12 = var21;
  237.          } finally {
  238.             ((Graphics)var20).dispose();
  239.          }
  240.       }
  241.  
  242.       int var27 = var5 + var9;
  243.       int var28 = var6 + var10;
  244.       if (var27 < 0) {
  245.          var15 -= var27;
  246.          var27 = 0;
  247.       }
  248.  
  249.       if (var28 < 0) {
  250.          var16 -= var28;
  251.          var28 = 0;
  252.       }
  253.  
  254.       var14.opState = this.compositeSrcDst(var12, var13, var18, var1.compositeState, var1.getComposite(), var2, var4, var3, var15, var16, var27, var28, var7, var8, (Color)null, var14.opState);
  255.       return var14;
  256.    }
  257.  
  258.    private Object compositeSrcDst(LockableRaster var1, LockableRaster var2, int var3, int var4, Composite var5, byte[] var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, Color var15, Object var16) {
  259.       boolean var17 = var5 instanceof AlphaComposite;
  260.       boolean var18 = var5 instanceof XORComposite;
  261.       if (null == var6 && 0 == var4 && !var1.isTranslucent()) {
  262.          if (var1.containsTransparentPixels()) {
  263.             return var15 == null ? this.performTransparentBlit(var1, var2, var9, var10, var11, var12, var13, var14, var16) : this.performOpaqueBlitBg(var1, var2, var15, var9, var10, var11, var12, var13, var14, var16);
  264.          } else {
  265.             return this.performOpaqueBlit(var1, var2, var9, var10, var11, var12, var13, var14, var16);
  266.          }
  267.       } else if (!var17 && !var18) {
  268.          BufferedImage var30 = new BufferedImage(var13, var14, 2);
  269.          LockableRaster var31 = new LockableRaster(var30);
  270.          this.compositeSrcDst(var1, var31, var3, 0, AlphaComposite.Src, (byte[])null, var7, var8, var9, var10, 0, 0, var13, var14, (Color)null, (Object)null);
  271.          WritableRaster var32 = var30.getRaster();
  272.          BufferedImage var34 = new BufferedImage(var13, var14, 2);
  273.          WritableRaster var23 = var34.getRaster();
  274.          LockableRaster var24 = new LockableRaster(var34);
  275.          this.compositeSrcDst(var2, var24, var3, 0, AlphaComposite.Src, (byte[])null, var7, var8, var11, var12, 0, 0, var13, var14, (Color)null, (Object)null);
  276.          var9 = 0;
  277.          var10 = 0;
  278.          RenderingHints var25 = new RenderingHints(RenderingHints.KEY_RENDERING, var3 == 1 ? RenderingHints.VALUE_RENDER_SPEED : RenderingHints.VALUE_RENDER_QUALITY);
  279.          CompositeContext var26 = var5.createContext(var30.getColorModel(), var34.getColorModel(), var25);
  280.          var26.compose(var32, var23, var23);
  281.          return this.compositeSrcDst(var24, var2, var3, 0, AlphaComposite.Src, var6, var7, var8, 0, 0, var11, var12, var13, var14, (Color)null, var16);
  282.       } else {
  283.          int var19 = 0;
  284.          float var20 = 1.0F;
  285.          Color var21 = Color.black;
  286.          if (var17) {
  287.             AlphaComposite var22 = (AlphaComposite)var5;
  288.             var19 = var22.getRule();
  289.             var20 = var22.getAlpha();
  290.          } else {
  291.             if (!var18) {
  292.                throw new InternalError("Unknown composite");
  293.             }
  294.  
  295.             XORComposite var33 = (XORComposite)var5;
  296.             var19 = 0;
  297.             var21 = var33.getXorColor();
  298.          }
  299.  
  300.          return null != var15 ? this.performBinaryCompositeBg(var1, var2, var9, var10, var11, var12, var13, var14, var6, var7, var8, var19, var20, var15, var21, var16) : this.performBinaryComposite(var1, var2, var9, var10, var11, var12, var13, var14, var6, var7, var8, var19, var20, var21, var16);
  301.       }
  302.    }
  303.  
  304.    public Object compositePaintLoop(SunGraphics2D var1, byte[] var2, int var3, int var4, int var5, int var6, int var7, int var8, ColorModel var9, Raster var10, Object var11) {
  305.       LockableRaster var12 = null;
  306.       LockableRaster var13 = null;
  307.       PaintLoopCachedState var14 = null;
  308.       if (null != var11) {
  309.          var14 = (PaintLoopCachedState)var11;
  310.          if (var14.validate(var1, var10, var9)) {
  311.             var12 = var14.lrSrc;
  312.             var13 = var14.lrDst;
  313.          } else {
  314.             var14 = null;
  315.          }
  316.       }
  317.  
  318.       if (null == var12) {
  319.          var12 = new LockableRaster(var10, var9);
  320.       }
  321.  
  322.       if (null == var13) {
  323.          var13 = new LockableRaster(var1);
  324.       }
  325.  
  326.       if (null != var13 && null != var12) {
  327.          if (var14 == null) {
  328.             var14 = new PaintLoopCachedState(this, var1, var10, var9, var12, var13);
  329.          }
  330.  
  331.          var14.opState = this.compositeSrcDst(var12, var13, var1.renderHint, var1.compositeState, var1.getComposite(), var2, var3, var4, 0, 0, var5, var6, var7, var8, (Color)null, var14.opState);
  332.          return var14;
  333.       } else {
  334.          throw new InternalError("Src=" + var12 + " Dst=" + var13);
  335.       }
  336.    }
  337.  
  338.    protected Object performOpaqueBlit(LockableRaster var1, LockableRaster var2, int var3, int var4, int var5, int var6, int var7, int var8, Object var9) {
  339.       PerformBinaryGraphicsPrimitive var10 = null;
  340.       if (null != var9) {
  341.          var10 = (PerformBinaryGraphicsPrimitive)var9;
  342.          if (!var10.id.equals(OpaqueBlit.getMethodSignature()) || var10.srcType != var1.type || var10.dstType != var2.type) {
  343.             var10 = null;
  344.          }
  345.       }
  346.  
  347.       if (null == var10) {
  348.          var10 = new PerformBinaryGraphicsPrimitive(this, OpaqueBlit.getMethodSignature(), var1.type, var2.type, var2.devID);
  349.       }
  350.  
  351.       if (null != var10 && null != var10.coreOp) {
  352.          LockableRaster var11 = var1;
  353.          LockableRaster var12 = var2;
  354.          int var13 = var3;
  355.          int var14 = var4;
  356.          int var15 = var5;
  357.          int var16 = var6;
  358.          if (null != var10.convertSrcOp) {
  359.             var11 = this.convertFrom(var10.convertSrcOp, var1, var3, var4, var7, var8);
  360.             var13 = 0;
  361.             var14 = 0;
  362.          }
  363.  
  364.          if (null != var10.readDstOp) {
  365.             var12 = this.convertFrom(var10.readDstOp, var2, var5, var6, var7, var8);
  366.             var15 = 0;
  367.             var16 = 0;
  368.          }
  369.  
  370.          try {
  371.             OpaqueBlit var17 = (OpaqueBlit)var10.coreOp;
  372.             int[] var18 = ((GraphicsPrimitive)var17).getLockFlags();
  373.             var11.lock(var18[0], var13, var14, var7, var8);
  374.             var12.lock(var18[1], var15, var16, var7, var8);
  375.             var17.OpaqueBlit(var11.id, var12.id, var7, var8);
  376.          } catch (RasterLockingException var23) {
  377.          } finally {
  378.             var12.unlock();
  379.             var11.unlock();
  380.          }
  381.  
  382.          if (null != var10.writeDstOp) {
  383.             this.convertTo(var10.writeDstOp, var2, var5, var6, var7, var8, var12);
  384.          }
  385.  
  386.          return var10;
  387.       } else {
  388.          return null;
  389.       }
  390.    }
  391.  
  392.    protected Object performOpaqueDitheredBlit(LockableRaster var1, LockableRaster var2, int var3, int var4, int var5, int var6, int var7, int var8, Object var9) {
  393.       PerformBinaryGraphicsPrimitive var10 = null;
  394.       if (null != var9) {
  395.          var10 = (PerformBinaryGraphicsPrimitive)var9;
  396.          if (!var10.id.equals(OpaqueDitheredBlit.getMethodSignature()) || var10.srcType != var1.type || var10.dstType != var2.type) {
  397.             var10 = null;
  398.          }
  399.       }
  400.  
  401.       if (null == var10) {
  402.          var10 = new PerformBinaryGraphicsPrimitive(this, OpaqueDitheredBlit.getMethodSignature(), var1.type, var2.type, var2.devID);
  403.       }
  404.  
  405.       if (null != var10 && null != var10.coreOp) {
  406.          LockableRaster var11 = var1;
  407.          LockableRaster var12 = var2;
  408.          int var13 = var3;
  409.          int var14 = var4;
  410.          int var15 = var5;
  411.          int var16 = var6;
  412.          if (null != var10.convertSrcOp) {
  413.             var11 = this.convertFrom(var10.convertSrcOp, var1, var3, var4, var7, var8);
  414.             var13 = 0;
  415.             var14 = 0;
  416.          }
  417.  
  418.          if (null != var10.readDstOp) {
  419.             var12 = this.convertFrom(var10.readDstOp, var2, var5, var6, var7, var8);
  420.             var15 = 0;
  421.             var16 = 0;
  422.          }
  423.  
  424.          try {
  425.             OpaqueDitheredBlit var17 = (OpaqueDitheredBlit)var10.coreOp;
  426.             int[] var18 = ((GraphicsPrimitive)var17).getLockFlags();
  427.             var11.lock(var18[0], var13, var14, var7, var8);
  428.             var12.lock(var18[1], var15, var16, var7, var8);
  429.             var17.OpaqueDitheredBlit(var11.id, var12.id, var7, var8);
  430.          } catch (RasterLockingException var23) {
  431.          } finally {
  432.             var12.unlock();
  433.             var11.unlock();
  434.          }
  435.  
  436.          if (null != var10.writeDstOp) {
  437.             this.convertTo(var10.writeDstOp, var2, var5, var6, var7, var8, var12);
  438.          }
  439.  
  440.          return var10;
  441.       } else {
  442.          return this.performOpaqueBlit(var1, var2, var3, var4, var5, var6, var7, var8, var9);
  443.       }
  444.    }
  445.  
  446.    protected Object performOpaqueBlitBg(LockableRaster var1, LockableRaster var2, Color var3, int var4, int var5, int var6, int var7, int var8, int var9, Object var10) {
  447.       PerformBinaryGraphicsPrimitive var11 = null;
  448.       if (null != var10) {
  449.          var11 = (PerformBinaryGraphicsPrimitive)var10;
  450.          if (!var11.id.equals(OpaqueBlitBg.getMethodSignature()) || var11.srcType != var1.type || var11.dstType != var2.type) {
  451.             var11 = null;
  452.          }
  453.       }
  454.  
  455.       if (null == var11) {
  456.          var11 = new PerformBinaryGraphicsPrimitive(this, OpaqueBlitBg.getMethodSignature(), var1.type, var2.type, var2.devID);
  457.       }
  458.  
  459.       if (null != var11 && null != var11.coreOp) {
  460.          LockableRaster var12 = var1;
  461.          LockableRaster var13 = var2;
  462.          int var14 = var4;
  463.          int var15 = var5;
  464.          int var16 = var6;
  465.          int var17 = var7;
  466.          if (null != var11.convertSrcOp) {
  467.             var12 = this.convertFrom(var11.convertSrcOp, var1, var4, var5, var8, var9);
  468.             var14 = 0;
  469.             var15 = 0;
  470.          }
  471.  
  472.          if (null != var11.readDstOp) {
  473.             var13 = this.convertFrom(var11.readDstOp, var2, var6, var7, var8, var9);
  474.             var16 = 0;
  475.             var17 = 0;
  476.          }
  477.  
  478.          try {
  479.             OpaqueBlitBg var18 = (OpaqueBlitBg)var11.coreOp;
  480.             int[] var19 = ((GraphicsPrimitive)var18).getLockFlags();
  481.             var12.lock(var19[0], var14, var15, var8, var9);
  482.             var13.lock(var19[1], var16, var17, var8, var9);
  483.             var18.OpaqueBlitBg(var12.id, var13.id, var8, var9, var3);
  484.          } catch (RasterLockingException var24) {
  485.          } finally {
  486.             var13.unlock();
  487.             var12.unlock();
  488.          }
  489.  
  490.          if (null != var11.writeDstOp) {
  491.             this.convertTo(var11.writeDstOp, var2, var6, var7, var8, var9, var13);
  492.          }
  493.  
  494.          return var11;
  495.       } else {
  496.          if (debugLog) {
  497.             System.err.println("---" + var1);
  498.             System.err.println("---" + var2);
  499.          }
  500.  
  501.          return null;
  502.       }
  503.    }
  504.  
  505.    protected Object performOpaqueDitheredBlitBg(LockableRaster var1, LockableRaster var2, Color var3, int var4, int var5, int var6, int var7, int var8, int var9, Object var10) {
  506.       PerformBinaryGraphicsPrimitive var11 = null;
  507.       if (null != var10) {
  508.          var11 = (PerformBinaryGraphicsPrimitive)var10;
  509.          if (!var11.id.equals(OpaqueDitheredBlitBg.getMethodSignature()) || var11.srcType != var1.type || var11.dstType != var2.type) {
  510.             var11 = null;
  511.          }
  512.       }
  513.  
  514.       if (null == var11) {
  515.          var11 = new PerformBinaryGraphicsPrimitive(this, OpaqueDitheredBlitBg.getMethodSignature(), var1.type, var2.type, var2.devID);
  516.       }
  517.  
  518.       if (null != var11 && null != var11.coreOp) {
  519.          LockableRaster var12 = var1;
  520.          LockableRaster var13 = var2;
  521.          int var14 = var4;
  522.          int var15 = var5;
  523.          int var16 = var6;
  524.          int var17 = var7;
  525.          if (null != var11.convertSrcOp) {
  526.             var12 = this.convertFrom(var11.convertSrcOp, var1, var4, var5, var8, var9);
  527.             var14 = 0;
  528.             var15 = 0;
  529.          }
  530.  
  531.          if (null != var11.readDstOp) {
  532.             var13 = this.convertFrom(var11.readDstOp, var2, var6, var7, var8, var9);
  533.             var16 = 0;
  534.             var17 = 0;
  535.          }
  536.  
  537.          try {
  538.             OpaqueDitheredBlitBg var18 = (OpaqueDitheredBlitBg)var11.coreOp;
  539.             int[] var19 = ((GraphicsPrimitive)var18).getLockFlags();
  540.             var12.lock(var19[0], var14, var15, var8, var9);
  541.             var13.lock(var19[1], var16, var17, var8, var9);
  542.             var18.OpaqueDitheredBlitBg(var12.id, var13.id, var8, var9, var3);
  543.          } catch (RasterLockingException var24) {
  544.          } finally {
  545.             var13.unlock();
  546.             var12.unlock();
  547.          }
  548.  
  549.          if (null != var11.writeDstOp) {
  550.             this.convertTo(var11.writeDstOp, var2, var6, var7, var8, var9, var13);
  551.          }
  552.  
  553.          return var11;
  554.       } else {
  555.          return this.performOpaqueBlit(var1, var2, var4, var5, var6, var7, var8, var9, var10);
  556.       }
  557.    }
  558.  
  559.    protected Object performTransparentBlit(LockableRaster var1, LockableRaster var2, int var3, int var4, int var5, int var6, int var7, int var8, Object var9) {
  560.       PerformBinaryGraphicsPrimitive var10 = null;
  561.       if (null != var9) {
  562.          var10 = (PerformBinaryGraphicsPrimitive)var9;
  563.          if (!var10.id.equals(TransparentBlit.getMethodSignature()) || var10.srcType != var1.type || var10.dstType != var2.type) {
  564.             var10 = null;
  565.          }
  566.       }
  567.  
  568.       if (null == var10) {
  569.          var10 = new PerformBinaryGraphicsPrimitive(this, TransparentBlit.getMethodSignature(), var1.type, var2.type, var2.devID);
  570.       }
  571.  
  572.       if (null != var10 && null != var10.coreOp) {
  573.          LockableRaster var11 = var1;
  574.          LockableRaster var12 = var2;
  575.          int var13 = var3;
  576.          int var14 = var4;
  577.          int var15 = var5;
  578.          int var16 = var6;
  579.          if (null != var10.convertSrcOp) {
  580.             var11 = this.convertFrom(var10.convertSrcOp, var1, var3, var4, var7, var8);
  581.             var13 = 0;
  582.             var14 = 0;
  583.          }
  584.  
  585.          if (null != var10.readDstOp) {
  586.             var12 = this.convertFrom(var10.readDstOp, var2, var5, var6, var7, var8);
  587.             var15 = 0;
  588.             var16 = 0;
  589.          }
  590.  
  591.          try {
  592.             TransparentBlit var17 = (TransparentBlit)var10.coreOp;
  593.             int[] var18 = ((GraphicsPrimitive)var17).getLockFlags();
  594.             var11.lock(var18[0], var13, var14, var7, var8);
  595.             var12.lock(var18[1], var15, var16, var7, var8);
  596.             var17.TransparentBlit(var11.id, var12.id, var7, var8);
  597.          } catch (RasterLockingException var23) {
  598.          } finally {
  599.             var12.unlock();
  600.             var11.unlock();
  601.          }
  602.  
  603.          if (null != var10.writeDstOp) {
  604.             this.convertTo(var10.writeDstOp, var2, var5, var6, var7, var8, var12);
  605.          }
  606.  
  607.          return var10;
  608.       } else {
  609.          if (debugLog) {
  610.             System.err.println("---" + var1);
  611.             System.err.println("---" + var2);
  612.          }
  613.  
  614.          return null;
  615.       }
  616.    }
  617.  
  618.    protected Object performTransparentDitheredBlit(LockableRaster var1, LockableRaster var2, int var3, int var4, int var5, int var6, int var7, int var8, Object var9) {
  619.       PerformBinaryGraphicsPrimitive var10 = null;
  620.       if (null != var9) {
  621.          var10 = (PerformBinaryGraphicsPrimitive)var9;
  622.          if (!var10.id.equals(TransparentDitheredBlit.getMethodSignature()) || var10.srcType != var1.type || var10.dstType != var2.type) {
  623.             var10 = null;
  624.          }
  625.       }
  626.  
  627.       if (null == var10) {
  628.          var10 = new PerformBinaryGraphicsPrimitive(this, TransparentDitheredBlit.getMethodSignature(), var1.type, var2.type, var2.devID);
  629.       }
  630.  
  631.       if (null != var10 && null != var10.coreOp) {
  632.          LockableRaster var11 = var1;
  633.          LockableRaster var12 = var2;
  634.          int var13 = var3;
  635.          int var14 = var4;
  636.          int var15 = var5;
  637.          int var16 = var6;
  638.          if (null != var10.convertSrcOp) {
  639.             var11 = this.convertFrom(var10.convertSrcOp, var1, var3, var4, var7, var8);
  640.             var13 = 0;
  641.             var14 = 0;
  642.          }
  643.  
  644.          if (null != var10.readDstOp) {
  645.             var12 = this.convertFrom(var10.readDstOp, var2, var5, var6, var7, var8);
  646.             var15 = 0;
  647.             var16 = 0;
  648.          }
  649.  
  650.          try {
  651.             TransparentDitheredBlit var17 = (TransparentDitheredBlit)var10.coreOp;
  652.             int[] var18 = ((GraphicsPrimitive)var17).getLockFlags();
  653.             var11.lock(var18[0], var13, var14, var7, var8);
  654.             var12.lock(var18[1], var15, var16, var7, var8);
  655.             var17.TransparentDitheredBlit(var11.id, var12.id, var7, var8);
  656.          } catch (RasterLockingException var23) {
  657.          } finally {
  658.             var12.unlock();
  659.             var11.unlock();
  660.          }
  661.  
  662.          if (null != var10.writeDstOp) {
  663.             this.convertTo(var10.writeDstOp, var2, var5, var6, var7, var8, var12);
  664.          }
  665.  
  666.          return var10;
  667.       } else {
  668.          return this.performOpaqueBlit(var1, var2, var3, var4, var5, var6, var7, var8, var9);
  669.       }
  670.    }
  671.  
  672.    protected Object performBinaryComposite(LockableRaster var1, LockableRaster var2, int var3, int var4, int var5, int var6, int var7, int var8, byte[] var9, int var10, int var11, int var12, float var13, Color var14, Object var15) {
  673.       PerformBinaryGraphicsPrimitive var16 = null;
  674.       if (null != var15) {
  675.          var16 = (PerformBinaryGraphicsPrimitive)var15;
  676.          if (!var16.id.equals(BinaryComposite.getMethodSignature()) || var16.srcType != var1.type || var16.dstType != var2.type) {
  677.             var16 = null;
  678.          }
  679.       }
  680.  
  681.       if (null == var16) {
  682.          var16 = new PerformBinaryGraphicsPrimitive(this, BinaryComposite.getMethodSignature(), var1.type, var2.type, var2.devID);
  683.       }
  684.  
  685.       if (null != var16 && null != var16.coreOp) {
  686.          LockableRaster var17 = var1;
  687.          LockableRaster var18 = var2;
  688.          int var19 = var3;
  689.          int var20 = var4;
  690.          int var21 = var5;
  691.          int var22 = var6;
  692.          if (null != var16.convertSrcOp) {
  693.             var17 = this.convertFrom(var16.convertSrcOp, var1, var3, var4, var7, var8);
  694.             var19 = 0;
  695.             var20 = 0;
  696.          }
  697.  
  698.          if (null != var16.readDstOp) {
  699.             var18 = this.convertFrom(var16.readDstOp, var2, var5, var6, var7, var8);
  700.             var21 = 0;
  701.             var22 = 0;
  702.          }
  703.  
  704.          try {
  705.             BinaryComposite var23 = (BinaryComposite)var16.coreOp;
  706.             int[] var24 = ((GraphicsPrimitive)var23).getLockFlags();
  707.             var17.lock(var24[0], var19, var20, var7, var8);
  708.             var18.lock(var24[1], var21, var22, var7, var8);
  709.             var23.BinaryComposite(var17.id, var18.id, var7, var8, var12, var9, var10, var11, var13, var14);
  710.          } catch (RasterLockingException var29) {
  711.          } finally {
  712.             var18.unlock();
  713.             var17.unlock();
  714.          }
  715.  
  716.          if (null != var16.writeDstOp) {
  717.             this.convertTo(var16.writeDstOp, var2, var5, var6, var7, var8, var18);
  718.          }
  719.  
  720.          return var16;
  721.       } else {
  722.          return null;
  723.       }
  724.    }
  725.  
  726.    protected Object performBinaryCompositeBg(LockableRaster var1, LockableRaster var2, int var3, int var4, int var5, int var6, int var7, int var8, byte[] var9, int var10, int var11, int var12, float var13, Color var14, Color var15, Object var16) {
  727.       PerformBinaryGraphicsPrimitive var17 = null;
  728.       if (null != var16) {
  729.          var17 = (PerformBinaryGraphicsPrimitive)var16;
  730.          if (!var17.id.equals(BinaryCompositeBg.getMethodSignature()) || var17.srcType != var1.type || var17.dstType != var2.type) {
  731.             var17 = null;
  732.          }
  733.       }
  734.  
  735.       if (null == var17) {
  736.          var17 = new PerformBinaryGraphicsPrimitive(this, BinaryCompositeBg.getMethodSignature(), var1.type, var2.type, var2.devID);
  737.       }
  738.  
  739.       if (null != var17 && null != var17.coreOp) {
  740.          LockableRaster var18 = var1;
  741.          LockableRaster var19 = var2;
  742.          int var20 = var3;
  743.          int var21 = var4;
  744.          int var22 = var5;
  745.          int var23 = var6;
  746.          if (null != var17.convertSrcOp) {
  747.             var18 = this.convertFrom(var17.convertSrcOp, var1, var3, var4, var7, var8);
  748.             var20 = 0;
  749.             var21 = 0;
  750.          }
  751.  
  752.          if (null != var17.readDstOp) {
  753.             var19 = this.convertFrom(var17.readDstOp, var2, var5, var6, var7, var8);
  754.             var22 = 0;
  755.             var23 = 0;
  756.          }
  757.  
  758.          try {
  759.             BinaryCompositeBg var24 = (BinaryCompositeBg)var17.coreOp;
  760.             int[] var25 = ((GraphicsPrimitive)var24).getLockFlags();
  761.             var18.lock(var25[0], var20, var21, var7, var8);
  762.             var19.lock(var25[1], var22, var23, var7, var8);
  763.             var24.BinaryCompositeBg(var18.id, var19.id, var7, var8, var12, var9, var10, var11, var13, var14, var15);
  764.          } catch (RasterLockingException var30) {
  765.          } finally {
  766.             var19.unlock();
  767.             var18.unlock();
  768.          }
  769.  
  770.          if (null != var17.writeDstOp) {
  771.             this.convertTo(var17.writeDstOp, var2, var5, var6, var7, var8, var19);
  772.          }
  773.  
  774.          return var17;
  775.       } else {
  776.          return null;
  777.       }
  778.    }
  779.  
  780.    protected LockableRaster convertFrom(OpaqueBlit var1, LockableRaster var2, int var3, int var4, int var5, int var6) {
  781.       LockableRaster var7 = new LockableRaster(var5, var6);
  782.  
  783.       try {
  784.          int[] var8 = ((GraphicsPrimitive)var1).getLockFlags();
  785.          var2.lock(var8[0], var3, var4, var5, var6);
  786.          var7.lock(var8[1], 0, 0, var5, var6);
  787.          var1.OpaqueBlit(var2.id, var7.id, var5, var6);
  788.       } catch (RasterLockingException var13) {
  789.       } finally {
  790.          var7.unlock();
  791.          var2.unlock();
  792.       }
  793.  
  794.       return var7;
  795.    }
  796.  
  797.    protected void convertTo(OpaqueBlit var1, LockableRaster var2, int var3, int var4, int var5, int var6, LockableRaster var7) {
  798.       try {
  799.          int[] var8 = ((GraphicsPrimitive)var1).getLockFlags();
  800.          var7.lock(var8[0], 0, 0, var5, var6);
  801.          var2.lock(var8[1], var3, var4, var5, var6);
  802.          var1.OpaqueBlit(var7.id, var2.id, var5, var6);
  803.       } catch (RasterLockingException var13) {
  804.       } finally {
  805.          var2.unlock();
  806.          var7.unlock();
  807.       }
  808.  
  809.    }
  810.  
  811.    public Object compositeColorLoop(SunGraphics2D var1, int var2, float var3, byte[] var4, int var5, int var6, int var7, int var8, int var9, int var10, Color var11, Object var12) {
  812.       LockableRaster var13 = null;
  813.       PerformUnaryGraphicsPrimitive var14 = null;
  814.       UnaryCachedState var15 = null;
  815.       if (null != var12) {
  816.          var15 = (UnaryCachedState)var12;
  817.          if (var15.the2D == var1) {
  818.             var13 = var15.theLR;
  819.             var14 = var15.ugp;
  820.             if (!var14.id.equals(ColorPaint.getMethodSignature()) || var14.dstType != var13.type) {
  821.                var14 = null;
  822.             }
  823.          }
  824.       }
  825.  
  826.       if (null == var13) {
  827.          var13 = new LockableRaster(var1);
  828.       }
  829.  
  830.       if (null == var14) {
  831.          var14 = new PerformUnaryGraphicsPrimitive(this, ColorPaint.getMethodSignature(), var13.type, var13.devID);
  832.       }
  833.  
  834.       if (null != var14 && null != var14.coreOp) {
  835.          if (var15 == null) {
  836.             var15 = new UnaryCachedState(this, var1, var13, var14);
  837.          }
  838.  
  839.          LockableRaster var16 = var13;
  840.          int var17 = var7;
  841.          int var18 = var8;
  842.          if (null != var14.readDstOp) {
  843.             var16 = this.convertFrom(var14.readDstOp, var13, var7, var8, var9, var10);
  844.             var17 = 0;
  845.             var18 = 0;
  846.          }
  847.  
  848.          try {
  849.             ColorPaint var19 = (ColorPaint)var14.coreOp;
  850.             var16.lock(((GraphicsPrimitive)var19).getLockFlags()[0], var17, var18, var9, var10);
  851.             var19.ColorPaint(var16.id, var2, var4, var5, var6, var3, var11);
  852.          } catch (RasterLockingException var24) {
  853.          } finally {
  854.             var16.unlock();
  855.          }
  856.  
  857.          if (null != var14.writeDstOp) {
  858.             this.convertTo(var14.writeDstOp, var13, var7, var8, var9, var10, var16);
  859.          }
  860.  
  861.          return var15;
  862.       } else {
  863.          (new Exception()).printStackTrace();
  864.          return null;
  865.       }
  866.    }
  867.  
  868.    private Rectangle myIntersectRect(Rectangle var1, Rectangle var2) {
  869.       int var3 = var1.x;
  870.       int var4 = var1.x + var1.width;
  871.       int var5 = var1.y;
  872.       int var6 = var1.y + var1.height;
  873.       int var7 = var2.x;
  874.       int var8 = var2.x + var2.width;
  875.       int var9 = var2.y;
  876.       int var10 = var2.y + var2.height;
  877.       var7 = var3 > var7 ? var3 : var7;
  878.       var8 = var4 < var8 ? var4 : var8;
  879.       var9 = var5 > var9 ? var5 : var9;
  880.       var10 = var6 < var10 ? var6 : var10;
  881.       var8 = var7 > var8 ? var7 : var8;
  882.       var10 = var9 > var10 ? var9 : var10;
  883.       return new Rectangle(var7, var9, var8 - var7, var10 - var9);
  884.    }
  885.  
  886.    public void drawLine(SunGraphics2D var1, int var2, int var3, int var4, int var5) {
  887.       LockableRaster var6 = new LockableRaster(var1);
  888.       Object var7 = null;
  889.       PerformUnaryGraphicsPrimitive var22 = new PerformUnaryGraphicsPrimitive(this, DrawLine.getMethodSignature(), var6.type, var6.devID);
  890.       if (null != var22 && null != var22.coreOp) {
  891.          LockableRaster var8 = var6;
  892.          int var9 = var2 > var4 ? var4 : var2;
  893.          int var10 = var3 > var5 ? var5 : var3;
  894.          int var11 = var2 > var4 ? var2 - var4 + 1 : var4 - var2 + 1;
  895.          int var12 = var3 > var5 ? var3 - var5 + 1 : var5 - var3 + 1;
  896.          int var13 = var9;
  897.          int var14 = var10;
  898.          if (null != var22.readDstOp) {
  899.             var8 = this.convertFrom(var22.readDstOp, var6, var9, var10, var11, var12);
  900.             var9 = 0;
  901.             var10 = 0;
  902.          }
  903.  
  904.          try {
  905.             DrawLine var15 = (DrawLine)var22.coreOp;
  906.             var8.lock(((GraphicsPrimitive)var15).getLockFlags()[0], var9, var10, var11, var12);
  907.             var15.DrawLine(var8.id, var1.getColor(), var2, var3, var4, var5);
  908.          } catch (RasterLockingException var20) {
  909.          } finally {
  910.             var8.unlock();
  911.          }
  912.  
  913.          if (null != var22.writeDstOp) {
  914.             this.convertTo(var22.writeDstOp, var6, var13, var14, var11, var12, var8);
  915.          }
  916.  
  917.       } else {
  918.          (new Exception()).printStackTrace();
  919.       }
  920.    }
  921.  
  922.    public void fillRect(SunGraphics2D var1, int var2, int var3, int var4, int var5) {
  923.       LockableRaster var6 = new LockableRaster(var1);
  924.       Object var7 = null;
  925.       PerformUnaryGraphicsPrimitive var18 = new PerformUnaryGraphicsPrimitive(this, FillRect.getMethodSignature(), var6.type, var6.devID);
  926.       if (null != var18 && null != var18.coreOp) {
  927.          LockableRaster var8 = var6;
  928.          int var9 = var2;
  929.          int var10 = var3;
  930.          if (null != var18.readDstOp) {
  931.             var8 = this.convertFrom(var18.readDstOp, var6, var2, var3, var4, var5);
  932.             var2 = 0;
  933.             var3 = 0;
  934.          }
  935.  
  936.          try {
  937.             FillRect var11 = (FillRect)var18.coreOp;
  938.             var8.lock(((GraphicsPrimitive)var11).getLockFlags()[0], var2, var3, var4, var5);
  939.             var11.FillRect(var8.id, var1.getColor(), var2, var3, var4, var5);
  940.          } catch (RasterLockingException var16) {
  941.          } finally {
  942.             var8.unlock();
  943.          }
  944.  
  945.          if (null != var18.writeDstOp) {
  946.             this.convertTo(var18.writeDstOp, var6, var9, var10, var4, var5, var8);
  947.          }
  948.  
  949.       } else {
  950.          (new Exception()).printStackTrace();
  951.       }
  952.    }
  953.  
  954.    public void drawPolys(SunGraphics2D var1, int[] var2, int[] var3, int[] var4, int var5, boolean var6) {
  955.       LockableRaster var7 = new LockableRaster(var1);
  956.       Object var8 = null;
  957.       PerformUnaryGraphicsPrimitive var24 = new PerformUnaryGraphicsPrimitive(this, DrawPolygons.getMethodSignature(), var7.type, var7.devID);
  958.       if (null != var24 && null != var24.coreOp) {
  959.          LockableRaster var9 = var7;
  960.          Rectangle var10 = var1.getCompBounds();
  961.          int var11 = var10.x;
  962.          int var12 = var10.y;
  963.          int var13 = var10.width;
  964.          int var14 = var10.height;
  965.          int var15 = var11;
  966.          int var16 = var12;
  967.          if (null != var24.readDstOp) {
  968.             var9 = this.convertFrom(var24.readDstOp, var7, var11, var12, var13, var14);
  969.             var11 = 0;
  970.             var12 = 0;
  971.          }
  972.  
  973.          try {
  974.             DrawPolygons var17 = (DrawPolygons)var24.coreOp;
  975.             var9.lock(((GraphicsPrimitive)var17).getLockFlags()[0], var11, var12, var13, var14);
  976.             var17.DrawPolygons(var9.id, var1.getColor(), var2, var3, var4, var5, var6);
  977.          } catch (RasterLockingException var22) {
  978.          } finally {
  979.             var9.unlock();
  980.          }
  981.  
  982.          if (null != var24.writeDstOp) {
  983.             this.convertTo(var24.writeDstOp, var7, var15, var16, var13, var14, var9);
  984.          }
  985.  
  986.       } else {
  987.          (new Exception()).printStackTrace();
  988.       }
  989.    }
  990.  
  991.    public void fillPolys(SunGraphics2D var1, int[] var2, int[] var3, int[] var4, int var5, boolean var6) {
  992.       LockableRaster var7 = new LockableRaster(var1);
  993.       Object var8 = null;
  994.       PerformUnaryGraphicsPrimitive var24 = new PerformUnaryGraphicsPrimitive(this, FillPolygons.getMethodSignature(), var7.type, var7.devID);
  995.       if (null != var24 && null != var24.coreOp) {
  996.          LockableRaster var9 = var7;
  997.          Rectangle var10 = var1.getCompBounds();
  998.          int var11 = var10.x;
  999.          int var12 = var10.y;
  1000.          int var13 = var10.width;
  1001.          int var14 = var10.height;
  1002.          int var15 = var11;
  1003.          int var16 = var12;
  1004.          if (null != var24.readDstOp) {
  1005.             var9 = this.convertFrom(var24.readDstOp, var7, var11, var12, var13, var14);
  1006.             var11 = 0;
  1007.             var12 = 0;
  1008.          }
  1009.  
  1010.          try {
  1011.             FillPolygons var17 = (FillPolygons)var24.coreOp;
  1012.             var9.lock(((GraphicsPrimitive)var17).getLockFlags()[0], var11, var12, var13, var14);
  1013.             var17.FillPolygons(var9.id, var1.getColor(), var2, var3, var4, var5, var6);
  1014.          } catch (RasterLockingException var22) {
  1015.          } finally {
  1016.             var9.unlock();
  1017.          }
  1018.  
  1019.          if (null != var24.writeDstOp) {
  1020.             this.convertTo(var24.writeDstOp, var7, var15, var16, var13, var14, var9);
  1021.          }
  1022.  
  1023.       } else {
  1024.          (new Exception()).printStackTrace();
  1025.       }
  1026.    }
  1027.  
  1028.    public void fillSpans(SunGraphics2D var1, SpanIterator var2) {
  1029.       int[] var3 = new int[4];
  1030.       var2.getPathBox(var3);
  1031.       int var4 = var3[0];
  1032.       int var5 = var3[1];
  1033.       int var6 = var3[2] - var4;
  1034.       int var7 = var3[3] - var5;
  1035.       LockableRaster var8 = new LockableRaster(var1);
  1036.       int[] var9 = new int[]{var8.type};
  1037.       GraphicsPrimitive var10 = GraphicsPrimitiveMgr.locate(FillSpans.getMethodSignature(), var9, var8.devID);
  1038.       if (var10 != null) {
  1039.          try {
  1040.             FillSpans var11 = (FillSpans)var10;
  1041.             var8.lock(((GraphicsPrimitive)var11).getLockFlags()[0], var4, var5, var6, var7);
  1042.             var11.FillSpans(var8.id, var1.getColor(), var2);
  1043.          } catch (RasterLockingException var25) {
  1044.          } finally {
  1045.             var8.unlock();
  1046.          }
  1047.       } else {
  1048.          Object var29 = null;
  1049.          PerformUnaryGraphicsPrimitive var30 = new PerformUnaryGraphicsPrimitive(this, FillRect.getMethodSignature(), var8.type, var8.devID);
  1050.          if (null == var30 || null == var30.coreOp || null != var30.readDstOp || null != var30.writeDstOp) {
  1051.             (new Exception()).printStackTrace();
  1052.             return;
  1053.          }
  1054.  
  1055.          FillRect var12 = (FillRect)var30.coreOp;
  1056.          Color var13 = var1.getColor();
  1057.  
  1058.          try {
  1059.             var8.lock(((GraphicsPrimitive)var12).getLockFlags()[0], var4, var5, var6, var7);
  1060.             ImageData var14 = var8.id;
  1061.  
  1062.             while(var2.nextSpan(var3)) {
  1063.                var12.FillRect(var14, var13, var3[0], var3[1], var3[2] - var3[0], var3[3] - var3[1]);
  1064.             }
  1065.          } catch (RasterLockingException var27) {
  1066.          } finally {
  1067.             var8.unlock();
  1068.          }
  1069.       }
  1070.  
  1071.    }
  1072.  
  1073.    public void drawRect(SunGraphics2D var1, int var2, int var3, int var4, int var5) {
  1074.       LockableRaster var6 = new LockableRaster(var1);
  1075.       Object var7 = null;
  1076.       PerformUnaryGraphicsPrimitive var18 = new PerformUnaryGraphicsPrimitive(this, DrawRect.getMethodSignature(), var6.type, var6.devID);
  1077.       if (null != var18 && null != var18.coreOp) {
  1078.          LockableRaster var8 = var6;
  1079.          int var9 = var2;
  1080.          int var10 = var3;
  1081.          if (null != var18.readDstOp) {
  1082.             var8 = this.convertFrom(var18.readDstOp, var6, var2, var3, var4, var5);
  1083.             var2 = 0;
  1084.             var3 = 0;
  1085.          }
  1086.  
  1087.          try {
  1088.             DrawRect var11 = (DrawRect)var18.coreOp;
  1089.             var8.lock(((GraphicsPrimitive)var11).getLockFlags()[0], var2, var3, var4 + 1, var5 + 1);
  1090.             var11.DrawRect(var8.id, var1.getColor(), var2, var3, var4, var5);
  1091.          } catch (RasterLockingException var16) {
  1092.          } finally {
  1093.             var8.unlock();
  1094.          }
  1095.  
  1096.          if (null != var18.writeDstOp) {
  1097.             this.convertTo(var18.writeDstOp, var6, var9, var10, var4, var5, var8);
  1098.          }
  1099.  
  1100.       } else {
  1101.          (new Exception()).printStackTrace();
  1102.       }
  1103.    }
  1104.  
  1105.    public void drawRoundRect(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  1106.       var1.shapepipe.draw(var1, new RoundRectangle2D.Float((float)var2, (float)var3, (float)var4, (float)var5, (float)var6, (float)var7));
  1107.    }
  1108.  
  1109.    public void drawOval(SunGraphics2D var1, int var2, int var3, int var4, int var5) {
  1110.       var1.shapepipe.draw(var1, new Ellipse2D.Float((float)var2, (float)var3, (float)var4, (float)var5));
  1111.    }
  1112.  
  1113.    public void drawArc(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  1114.       var1.shapepipe.draw(var1, new Arc2D.Float((float)var2, (float)var3, (float)var4, (float)var5, (float)var6, (float)var7, 0));
  1115.    }
  1116.  
  1117.    public void drawPolyline(SunGraphics2D var1, int[] var2, int[] var3, int var4) {
  1118.       LockableRaster var5 = new LockableRaster(var1);
  1119.       Object var6 = null;
  1120.       PerformUnaryGraphicsPrimitive var23 = new PerformUnaryGraphicsPrimitive(this, DrawPolygons.getMethodSignature(), var5.type, var5.devID);
  1121.       if (null != var23 && null != var23.coreOp) {
  1122.          LockableRaster var7 = var5;
  1123.          Rectangle var8 = var1.getCompBounds();
  1124.          int var9 = var8.x;
  1125.          int var10 = var8.y;
  1126.          int var11 = var8.width;
  1127.          int var12 = var8.height;
  1128.          int var13 = var9;
  1129.          int var14 = var10;
  1130.          if (null != var23.readDstOp) {
  1131.             var7 = this.convertFrom(var23.readDstOp, var5, var9, var10, var11, var12);
  1132.             var9 = 0;
  1133.             var10 = 0;
  1134.          }
  1135.  
  1136.          try {
  1137.             int[] var15 = new int[]{var4};
  1138.             DrawPolygons var16 = (DrawPolygons)var23.coreOp;
  1139.             var7.lock(((GraphicsPrimitive)var16).getLockFlags()[0], var9, var10, var11, var12);
  1140.             var16.DrawPolygons(var7.id, var1.getColor(), var2, var3, var15, 1, false);
  1141.          } catch (RasterLockingException var21) {
  1142.          } finally {
  1143.             var7.unlock();
  1144.          }
  1145.  
  1146.          if (null != var23.writeDstOp) {
  1147.             this.convertTo(var23.writeDstOp, var5, var13, var14, var11, var12, var7);
  1148.          }
  1149.  
  1150.       } else {
  1151.          (new Exception()).printStackTrace();
  1152.       }
  1153.    }
  1154.  
  1155.    public void drawPolygon(SunGraphics2D var1, int[] var2, int[] var3, int var4) {
  1156.       LockableRaster var5 = new LockableRaster(var1);
  1157.       Object var6 = null;
  1158.       PerformUnaryGraphicsPrimitive var23 = new PerformUnaryGraphicsPrimitive(this, DrawPolygons.getMethodSignature(), var5.type, var5.devID);
  1159.       if (null != var23 && null != var23.coreOp) {
  1160.          LockableRaster var7 = var5;
  1161.          Rectangle var8 = var1.getCompBounds();
  1162.          int var9 = var8.x;
  1163.          int var10 = var8.y;
  1164.          int var11 = var8.width;
  1165.          int var12 = var8.height;
  1166.          int var13 = var9;
  1167.          int var14 = var10;
  1168.          if (null != var23.readDstOp) {
  1169.             var7 = this.convertFrom(var23.readDstOp, var5, var9, var10, var11, var12);
  1170.             var9 = 0;
  1171.             var10 = 0;
  1172.          }
  1173.  
  1174.          try {
  1175.             int[] var15 = new int[]{var4};
  1176.             DrawPolygons var16 = (DrawPolygons)var23.coreOp;
  1177.             var7.lock(((GraphicsPrimitive)var16).getLockFlags()[0], var9, var10, var11, var12);
  1178.             var16.DrawPolygons(var7.id, var1.getColor(), var2, var3, var15, 1, true);
  1179.          } catch (RasterLockingException var21) {
  1180.          } finally {
  1181.             var7.unlock();
  1182.          }
  1183.  
  1184.          if (null != var23.writeDstOp) {
  1185.             this.convertTo(var23.writeDstOp, var5, var13, var14, var11, var12, var7);
  1186.          }
  1187.  
  1188.       } else {
  1189.          (new Exception()).printStackTrace();
  1190.       }
  1191.    }
  1192.  
  1193.    public void fillRoundRect(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  1194.       var1.shapepipe.fill(var1, new RoundRectangle2D.Float((float)var2, (float)var3, (float)var4, (float)var5, (float)var6, (float)var7));
  1195.    }
  1196.  
  1197.    public void fillOval(SunGraphics2D var1, int var2, int var3, int var4, int var5) {
  1198.       var1.shapepipe.fill(var1, new Ellipse2D.Float((float)var2, (float)var3, (float)var4, (float)var5));
  1199.    }
  1200.  
  1201.    public void fillArc(SunGraphics2D var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  1202.       var1.shapepipe.fill(var1, new Arc2D.Float((float)var2, (float)var3, (float)var4, (float)var5, (float)var6, (float)var7, 2));
  1203.    }
  1204.  
  1205.    public void fillPolygon(SunGraphics2D var1, int[] var2, int[] var3, int var4) {
  1206.       LockableRaster var5 = new LockableRaster(var1);
  1207.       Object var6 = null;
  1208.       PerformUnaryGraphicsPrimitive var23 = new PerformUnaryGraphicsPrimitive(this, FillPolygons.getMethodSignature(), var5.type, var5.devID);
  1209.       if (null != var23 && null != var23.coreOp) {
  1210.          LockableRaster var7 = var5;
  1211.          Rectangle var8 = var1.getCompBounds();
  1212.          int var9 = var8.x;
  1213.          int var10 = var8.y;
  1214.          int var11 = var8.width;
  1215.          int var12 = var8.height;
  1216.          int var13 = var9;
  1217.          int var14 = var10;
  1218.          if (null != var23.readDstOp) {
  1219.             var7 = this.convertFrom(var23.readDstOp, var5, var9, var10, var11, var12);
  1220.             var9 = 0;
  1221.             var10 = 0;
  1222.          }
  1223.  
  1224.          try {
  1225.             int[] var15 = new int[]{var4};
  1226.             FillPolygons var16 = (FillPolygons)var23.coreOp;
  1227.             var7.lock(((GraphicsPrimitive)var16).getLockFlags()[0], var9, var10, var11, var12);
  1228.             var16.FillPolygons(var7.id, var1.getColor(), var2, var3, var15, 1, true);
  1229.          } catch (RasterLockingException var21) {
  1230.          } finally {
  1231.             var7.unlock();
  1232.          }
  1233.  
  1234.          if (null != var23.writeDstOp) {
  1235.             this.convertTo(var23.writeDstOp, var5, var13, var14, var11, var12, var7);
  1236.          }
  1237.  
  1238.       } else {
  1239.          (new Exception()).printStackTrace();
  1240.       }
  1241.    }
  1242.  
  1243.    public Object drawLine(SunGraphics2D var1, int var2, int var3, int var4, int var5, Object var6) {
  1244.       LockableRaster var7 = null;
  1245.       PerformUnaryGraphicsPrimitive var8 = null;
  1246.       UnaryCachedState var9 = null;
  1247.       if (null != var6) {
  1248.          var9 = (UnaryCachedState)var6;
  1249.          if (var9.the2D == var1) {
  1250.             var7 = var9.theLR;
  1251.             var8 = var9.ugp;
  1252.             if (!var8.id.equals(DrawLine.getMethodSignature()) || var8.dstType != var7.type) {
  1253.                var8 = null;
  1254.             }
  1255.          }
  1256.       }
  1257.  
  1258.       if (null == var7) {
  1259.          var7 = new LockableRaster(var1);
  1260.       }
  1261.  
  1262.       if (null == var8) {
  1263.          var8 = new PerformUnaryGraphicsPrimitive(this, DrawLine.getMethodSignature(), var7.type, var7.devID);
  1264.       }
  1265.  
  1266.       if (null != var8 && null != var8.coreOp) {
  1267.          if (var9 == null) {
  1268.             var9 = new UnaryCachedState(this, var1, var7, var8);
  1269.          }
  1270.  
  1271.          LockableRaster var10 = var7;
  1272.          int var11 = var2 > var4 ? var4 : var2;
  1273.          int var12 = var3 > var5 ? var5 : var3;
  1274.          int var13 = var2 > var4 ? var2 - var4 + 1 : var4 - var2 + 1;
  1275.          int var14 = var3 > var5 ? var3 - var5 + 1 : var5 - var3 + 1;
  1276.          int var15 = var11;
  1277.          int var16 = var12;
  1278.          if (null != var8.readDstOp) {
  1279.             var10 = this.convertFrom(var8.readDstOp, var7, var11, var12, var13, var14);
  1280.             var11 = 0;
  1281.             var12 = 0;
  1282.          }
  1283.  
  1284.          try {
  1285.             DrawLine var17 = (DrawLine)var8.coreOp;
  1286.             var10.lock(((GraphicsPrimitive)var17).getLockFlags()[0], var11, var12, var13, var14);
  1287.             var17.DrawLine(var10.id, var1.getColor(), var2, var3, var4, var5);
  1288.          } catch (RasterLockingException var22) {
  1289.          } finally {
  1290.             var10.unlock();
  1291.          }
  1292.  
  1293.          if (null != var8.writeDstOp) {
  1294.             this.convertTo(var8.writeDstOp, var7, var15, var16, var13, var14, var10);
  1295.          }
  1296.  
  1297.          return var9;
  1298.       } else {
  1299.          (new Exception()).printStackTrace();
  1300.          return null;
  1301.       }
  1302.    }
  1303.  
  1304.    public Object fillRect(SunGraphics2D var1, int var2, int var3, int var4, int var5, Object var6) {
  1305.       LockableRaster var7 = null;
  1306.       PerformUnaryGraphicsPrimitive var8 = null;
  1307.       UnaryCachedState var9 = null;
  1308.       if (null != var6) {
  1309.          var9 = (UnaryCachedState)var6;
  1310.          if (var9.the2D == var1) {
  1311.             var7 = var9.theLR;
  1312.             var8 = var9.ugp;
  1313.             if (!var8.id.equals(FillRect.getMethodSignature()) || var8.dstType != var7.type) {
  1314.                var8 = null;
  1315.             }
  1316.          }
  1317.       }
  1318.  
  1319.       if (null == var7) {
  1320.          var7 = new LockableRaster(var1);
  1321.       }
  1322.  
  1323.       if (null == var8) {
  1324.          var8 = new PerformUnaryGraphicsPrimitive(this, FillRect.getMethodSignature(), var7.type, var7.devID);
  1325.       }
  1326.  
  1327.       if (null != var8 && null != var8.coreOp) {
  1328.          if (var9 == null) {
  1329.             var9 = new UnaryCachedState(this, var1, var7, var8);
  1330.          }
  1331.  
  1332.          LockableRaster var10 = var7;
  1333.          int var11 = var2;
  1334.          int var12 = var3;
  1335.          if (null != var8.readDstOp) {
  1336.             var10 = this.convertFrom(var8.readDstOp, var7, var2, var3, var4, var5);
  1337.             var2 = 0;
  1338.             var3 = 0;
  1339.          }
  1340.  
  1341.          try {
  1342.             FillRect var13 = (FillRect)var8.coreOp;
  1343.             var10.lock(((GraphicsPrimitive)var13).getLockFlags()[0], var2, var3, var4, var5);
  1344.             var13.FillRect(var10.id, var1.getColor(), var2, var3, var4, var5);
  1345.          } catch (RasterLockingException var18) {
  1346.          } finally {
  1347.             var10.unlock();
  1348.          }
  1349.  
  1350.          if (null != var8.writeDstOp) {
  1351.             this.convertTo(var8.writeDstOp, var7, var11, var12, var4, var5, var10);
  1352.          }
  1353.  
  1354.          return var9;
  1355.       } else {
  1356.          (new Exception()).printStackTrace();
  1357.          return null;
  1358.       }
  1359.    }
  1360.  
  1361.    public Object drawPolys(SunGraphics2D var1, int[] var2, int[] var3, int[] var4, int var5, boolean var6, Object var7) {
  1362.       LockableRaster var8 = null;
  1363.       PerformUnaryGraphicsPrimitive var9 = null;
  1364.       UnaryCachedState var10 = null;
  1365.       if (null != var7) {
  1366.          var10 = (UnaryCachedState)var7;
  1367.          if (var10.the2D == var1) {
  1368.             var8 = var10.theLR;
  1369.             var9 = var10.ugp;
  1370.             if (!var9.id.equals(DrawPolygons.getMethodSignature()) || var9.dstType != var8.type) {
  1371.                var9 = null;
  1372.             }
  1373.          }
  1374.       }
  1375.  
  1376.       if (null == var8) {
  1377.          var8 = new LockableRaster(var1);
  1378.       }
  1379.  
  1380.       if (null == var9) {
  1381.          var9 = new PerformUnaryGraphicsPrimitive(this, DrawPolygons.getMethodSignature(), var8.type, var8.devID);
  1382.       }
  1383.  
  1384.       if (null != var9 && null != var9.coreOp) {
  1385.          if (var10 == null) {
  1386.             var10 = new UnaryCachedState(this, var1, var8, var9);
  1387.          }
  1388.  
  1389.          LockableRaster var11 = var8;
  1390.          Rectangle var12 = var1.getCompBounds();
  1391.          int var13 = var12.x;
  1392.          int var14 = var12.y;
  1393.          int var15 = var12.width;
  1394.          int var16 = var12.height;
  1395.          int var17 = var13;
  1396.          int var18 = var14;
  1397.          if (null != var9.readDstOp) {
  1398.             var11 = this.convertFrom(var9.readDstOp, var8, var13, var14, var15, var16);
  1399.             var13 = 0;
  1400.             var14 = 0;
  1401.          }
  1402.  
  1403.          try {
  1404.             DrawPolygons var19 = (DrawPolygons)var9.coreOp;
  1405.             var11.lock(((GraphicsPrimitive)var19).getLockFlags()[0], var13, var14, var15, var16);
  1406.             var19.DrawPolygons(var11.id, var1.getColor(), var2, var3, var4, var5, var6);
  1407.          } catch (RasterLockingException var24) {
  1408.          } finally {
  1409.             var11.unlock();
  1410.          }
  1411.  
  1412.          if (null != var9.writeDstOp) {
  1413.             this.convertTo(var9.writeDstOp, var8, var17, var18, var15, var16, var11);
  1414.          }
  1415.  
  1416.          return var10;
  1417.       } else {
  1418.          (new Exception()).printStackTrace();
  1419.          return null;
  1420.       }
  1421.    }
  1422.  
  1423.    public Object fillPolys(SunGraphics2D var1, int[] var2, int[] var3, int[] var4, int var5, boolean var6, Object var7) {
  1424.       LockableRaster var8 = null;
  1425.       PerformUnaryGraphicsPrimitive var9 = null;
  1426.       UnaryCachedState var10 = null;
  1427.       if (null != var7) {
  1428.          var10 = (UnaryCachedState)var7;
  1429.          if (var10.the2D == var1) {
  1430.             var8 = var10.theLR;
  1431.             var9 = var10.ugp;
  1432.             if (!var9.id.equals(FillPolygons.getMethodSignature()) || var9.dstType != var8.type) {
  1433.                var9 = null;
  1434.             }
  1435.          }
  1436.       }
  1437.  
  1438.       if (null == var8) {
  1439.          var8 = new LockableRaster(var1);
  1440.       }
  1441.  
  1442.       if (null == var9) {
  1443.          var9 = new PerformUnaryGraphicsPrimitive(this, FillPolygons.getMethodSignature(), var8.type, var8.devID);
  1444.       }
  1445.  
  1446.       if (null != var9 && null != var9.coreOp) {
  1447.          if (var10 == null) {
  1448.             var10 = new UnaryCachedState(this, var1, var8, var9);
  1449.          }
  1450.  
  1451.          LockableRaster var11 = var8;
  1452.          Rectangle var12 = var1.getCompBounds();
  1453.          int var13 = var12.x;
  1454.          int var14 = var12.y;
  1455.          int var15 = var12.width;
  1456.          int var16 = var12.height;
  1457.          int var17 = var13;
  1458.          int var18 = var14;
  1459.          if (null != var9.readDstOp) {
  1460.             var11 = this.convertFrom(var9.readDstOp, var8, var13, var14, var15, var16);
  1461.             var13 = 0;
  1462.             var14 = 0;
  1463.          }
  1464.  
  1465.          try {
  1466.             FillPolygons var19 = (FillPolygons)var9.coreOp;
  1467.             var11.lock(((GraphicsPrimitive)var19).getLockFlags()[0], var13, var14, var15, var16);
  1468.             var19.FillPolygons(var11.id, var1.getColor(), var2, var3, var4, var5, var6);
  1469.          } catch (RasterLockingException var24) {
  1470.          } finally {
  1471.             var11.unlock();
  1472.          }
  1473.  
  1474.          if (null != var9.writeDstOp) {
  1475.             this.convertTo(var9.writeDstOp, var8, var17, var18, var15, var16, var11);
  1476.          }
  1477.  
  1478.          return var10;
  1479.       } else {
  1480.          (new Exception()).printStackTrace();
  1481.          return null;
  1482.       }
  1483.    }
  1484.  
  1485.    public Object drawRect(SunGraphics2D var1, int var2, int var3, int var4, int var5, Object var6) {
  1486.       LockableRaster var7 = null;
  1487.       PerformUnaryGraphicsPrimitive var8 = null;
  1488.       UnaryCachedState var9 = null;
  1489.       if (null != var6) {
  1490.          var9 = (UnaryCachedState)var6;
  1491.          if (var9.the2D == var1) {
  1492.             var7 = var9.theLR;
  1493.             var8 = var9.ugp;
  1494.             if (!var8.id.equals(DrawRect.getMethodSignature()) || var8.dstType != var7.type) {
  1495.                var8 = null;
  1496.             }
  1497.          }
  1498.       }
  1499.  
  1500.       if (null == var7) {
  1501.          var7 = new LockableRaster(var1);
  1502.       }
  1503.  
  1504.       if (null == var8) {
  1505.          var8 = new PerformUnaryGraphicsPrimitive(this, DrawRect.getMethodSignature(), var7.type, var7.devID);
  1506.       }
  1507.  
  1508.       if (null != var8 && null != var8.coreOp) {
  1509.          if (var9 == null) {
  1510.             var9 = new UnaryCachedState(this, var1, var7, var8);
  1511.          }
  1512.  
  1513.          LockableRaster var10 = var7;
  1514.          int var11 = var2;
  1515.          int var12 = var3;
  1516.          if (null != var8.readDstOp) {
  1517.             var10 = this.convertFrom(var8.readDstOp, var7, var2, var3, var4, var5);
  1518.             var2 = 0;
  1519.             var3 = 0;
  1520.          }
  1521.  
  1522.          try {
  1523.             DrawRect var13 = (DrawRect)var8.coreOp;
  1524.             var10.lock(((GraphicsPrimitive)var13).getLockFlags()[0], var2, var3, var4 + 1, var5 + 1);
  1525.             var13.DrawRect(var10.id, var1.getColor(), var2, var3, var4, var5);
  1526.          } catch (RasterLockingException var18) {
  1527.          } finally {
  1528.             var10.unlock();
  1529.          }
  1530.  
  1531.          if (null != var8.writeDstOp) {
  1532.             this.convertTo(var8.writeDstOp, var7, var11, var12, var4, var5, var10);
  1533.          }
  1534.  
  1535.          return var9;
  1536.       } else {
  1537.          (new Exception()).printStackTrace();
  1538.          return null;
  1539.       }
  1540.    }
  1541.  
  1542.    public Object drawPolyline(SunGraphics2D var1, int[] var2, int[] var3, int var4, Object var5) {
  1543.       LockableRaster var6 = null;
  1544.       PerformUnaryGraphicsPrimitive var7 = null;
  1545.       UnaryCachedState var8 = null;
  1546.       if (null != var5) {
  1547.          var8 = (UnaryCachedState)var5;
  1548.          if (var8.the2D == var1) {
  1549.             var6 = var8.theLR;
  1550.             var7 = var8.ugp;
  1551.             if (!var7.id.equals(DrawPolygons.getMethodSignature()) || var7.dstType != var6.type) {
  1552.                var7 = null;
  1553.             }
  1554.          }
  1555.       }
  1556.  
  1557.       if (null == var6) {
  1558.          var6 = new LockableRaster(var1);
  1559.       }
  1560.  
  1561.       if (null == var7) {
  1562.          var7 = new PerformUnaryGraphicsPrimitive(this, DrawPolygons.getMethodSignature(), var6.type, var6.devID);
  1563.       }
  1564.  
  1565.       if (null != var7 && null != var7.coreOp) {
  1566.          if (var8 == null) {
  1567.             var8 = new UnaryCachedState(this, var1, var6, var7);
  1568.          }
  1569.  
  1570.          LockableRaster var9 = var6;
  1571.          Rectangle var10 = var1.getCompBounds();
  1572.          int var11 = var10.x;
  1573.          int var12 = var10.y;
  1574.          int var13 = var10.width;
  1575.          int var14 = var10.height;
  1576.          int var15 = var11;
  1577.          int var16 = var12;
  1578.          if (null != var7.readDstOp) {
  1579.             var9 = this.convertFrom(var7.readDstOp, var6, var11, var12, var13, var14);
  1580.             var11 = 0;
  1581.             var12 = 0;
  1582.          }
  1583.  
  1584.          try {
  1585.             int[] var17 = new int[]{var4};
  1586.             DrawPolygons var18 = (DrawPolygons)var7.coreOp;
  1587.             var9.lock(((GraphicsPrimitive)var18).getLockFlags()[0], var11, var12, var13, var14);
  1588.             var18.DrawPolygons(var9.id, var1.getColor(), var2, var3, var17, 1, false);
  1589.          } catch (RasterLockingException var23) {
  1590.          } finally {
  1591.             var9.unlock();
  1592.          }
  1593.  
  1594.          if (null != var7.writeDstOp) {
  1595.             this.convertTo(var7.writeDstOp, var6, var15, var16, var13, var14, var9);
  1596.          }
  1597.  
  1598.          return var8;
  1599.       } else {
  1600.          (new Exception()).printStackTrace();
  1601.          return null;
  1602.       }
  1603.    }
  1604.  
  1605.    public Object drawPolygon(SunGraphics2D var1, int[] var2, int[] var3, int var4, Object var5) {
  1606.       LockableRaster var6 = null;
  1607.       PerformUnaryGraphicsPrimitive var7 = null;
  1608.       UnaryCachedState var8 = null;
  1609.       if (null != var5) {
  1610.          var8 = (UnaryCachedState)var5;
  1611.          if (var8.the2D == var1) {
  1612.             var6 = var8.theLR;
  1613.             var7 = var8.ugp;
  1614.             if (!var7.id.equals(DrawPolygons.getMethodSignature()) || var7.dstType != var6.type) {
  1615.                var7 = null;
  1616.             }
  1617.          }
  1618.       }
  1619.  
  1620.       if (null == var6) {
  1621.          var6 = new LockableRaster(var1);
  1622.       }
  1623.  
  1624.       if (null == var7) {
  1625.          var7 = new PerformUnaryGraphicsPrimitive(this, DrawPolygons.getMethodSignature(), var6.type, var6.devID);
  1626.       }
  1627.  
  1628.       if (null != var7 && null != var7.coreOp) {
  1629.          if (var8 == null) {
  1630.             var8 = new UnaryCachedState(this, var1, var6, var7);
  1631.          }
  1632.  
  1633.          LockableRaster var9 = var6;
  1634.          Rectangle var10 = var1.getCompBounds();
  1635.          int var11 = var10.x;
  1636.          int var12 = var10.y;
  1637.          int var13 = var10.width;
  1638.          int var14 = var10.height;
  1639.          int var15 = var11;
  1640.          int var16 = var12;
  1641.          if (null != var7.readDstOp) {
  1642.             var9 = this.convertFrom(var7.readDstOp, var6, var11, var12, var13, var14);
  1643.             var11 = 0;
  1644.             var12 = 0;
  1645.          }
  1646.  
  1647.          try {
  1648.             int[] var17 = new int[]{var4};
  1649.             DrawPolygons var18 = (DrawPolygons)var7.coreOp;
  1650.             var9.lock(((GraphicsPrimitive)var18).getLockFlags()[0], var11, var12, var13, var14);
  1651.             var18.DrawPolygons(var9.id, var1.getColor(), var2, var3, var17, 1, true);
  1652.          } catch (RasterLockingException var23) {
  1653.          } finally {
  1654.             var9.unlock();
  1655.          }
  1656.  
  1657.          if (null != var7.writeDstOp) {
  1658.             this.convertTo(var7.writeDstOp, var6, var15, var16, var13, var14, var9);
  1659.          }
  1660.  
  1661.          return var8;
  1662.       } else {
  1663.          (new Exception()).printStackTrace();
  1664.          return null;
  1665.       }
  1666.    }
  1667.  
  1668.    public Object fillPolygon(SunGraphics2D var1, int[] var2, int[] var3, int var4, Object var5) {
  1669.       LockableRaster var6 = null;
  1670.       PerformUnaryGraphicsPrimitive var7 = null;
  1671.       UnaryCachedState var8 = null;
  1672.       if (null != var5) {
  1673.          var8 = (UnaryCachedState)var5;
  1674.          if (var8.the2D == var1) {
  1675.             var6 = var8.theLR;
  1676.             var7 = var8.ugp;
  1677.             if (!var7.id.equals(FillPolygons.getMethodSignature()) || var7.dstType != var6.type) {
  1678.                var7 = null;
  1679.             }
  1680.          }
  1681.       }
  1682.  
  1683.       if (null == var6) {
  1684.          var6 = new LockableRaster(var1);
  1685.       }
  1686.  
  1687.       if (null == var7) {
  1688.          var7 = new PerformUnaryGraphicsPrimitive(this, FillPolygons.getMethodSignature(), var6.type, var6.devID);
  1689.       }
  1690.  
  1691.       if (null != var7 && null != var7.coreOp) {
  1692.          if (var8 == null) {
  1693.             var8 = new UnaryCachedState(this, var1, var6, var7);
  1694.          }
  1695.  
  1696.          LockableRaster var9 = var6;
  1697.          Rectangle var10 = var1.getCompBounds();
  1698.          int var11 = var10.x;
  1699.          int var12 = var10.y;
  1700.          int var13 = var10.width;
  1701.          int var14 = var10.height;
  1702.          int var15 = var11;
  1703.          int var16 = var12;
  1704.          if (null != var7.readDstOp) {
  1705.             var9 = this.convertFrom(var7.readDstOp, var6, var11, var12, var13, var14);
  1706.             var11 = 0;
  1707.             var12 = 0;
  1708.          }
  1709.  
  1710.          try {
  1711.             int[] var17 = new int[]{var4};
  1712.             FillPolygons var18 = (FillPolygons)var7.coreOp;
  1713.             var9.lock(((GraphicsPrimitive)var18).getLockFlags()[0], var11, var12, var13, var14);
  1714.             var18.FillPolygons(var9.id, var1.getColor(), var2, var3, var17, 1, true);
  1715.          } catch (RasterLockingException var23) {
  1716.          } finally {
  1717.             var9.unlock();
  1718.          }
  1719.  
  1720.          if (null != var7.writeDstOp) {
  1721.             this.convertTo(var7.writeDstOp, var6, var15, var16, var13, var14, var9);
  1722.          }
  1723.  
  1724.          return var8;
  1725.       } else {
  1726.          (new Exception()).printStackTrace();
  1727.          return null;
  1728.       }
  1729.    }
  1730.  
  1731.    private void drawTextOutline(SunGraphics2D var1, String var2, float var3, float var4) {
  1732.       Font var5 = var1.getFont();
  1733.       float var6 = var5.getSize2D();
  1734.       FontRenderContext var7 = var1.getFontRenderContext();
  1735.       AffineTransform var8 = var7.getTransform();
  1736.       var8.scale((double)var6, (double)var6);
  1737.       var8.preConcatenate(var5.getTransform());
  1738.       double[] var9 = new double[]{var8.getScaleX(), var8.getShearY(), var8.getShearX(), var8.getScaleY()};
  1739.       var3 += (float)var8.getTranslateX();
  1740.       var4 += (float)var8.getTranslateY();
  1741.       GeneralPath var10 = new GeneralPath(1);
  1742.       var10 = (GeneralPath)NativeFontWrapper.drawStringOutline(var2, var3, var4, var5, var9, var7.isAntiAliased(), var7.usesFractionalMetrics(), var10);
  1743.       var1.shapepipe.fill(var1, var10);
  1744.    }
  1745.  
  1746.    private void drawGlyphVectorOutline(SunGraphics2D var1, GlyphVector var2, float var3, float var4) {
  1747.       Font var5 = var2.getFont();
  1748.       float var6 = var5.getSize2D();
  1749.       FontRenderContext var7 = var2.getFontRenderContext();
  1750.       AffineTransform var8 = var7.getTransform();
  1751.       var8.scale((double)var6, (double)var6);
  1752.       var8.preConcatenate(var5.getTransform());
  1753.       double[] var9 = new double[]{var8.getScaleX(), var8.getShearY(), var8.getShearX(), var8.getScaleY()};
  1754.       var3 += (float)var8.getTranslateX();
  1755.       var4 += (float)var8.getTranslateY();
  1756.       GeneralPath var10 = new GeneralPath(1);
  1757.       var10 = (GeneralPath)NativeFontWrapper.getGlyphVectorOutline(var2, var5, var9, var7.isAntiAliased(), var7.usesFractionalMetrics(), var3, var4, var10);
  1758.       var1.shapepipe.fill(var1, var10);
  1759.    }
  1760.  
  1761.    private boolean isRotated(TextCachedState var1, SunGraphics2D var2, double[] var3) {
  1762.       if (var1 != null && var1.matrix != null) {
  1763.          System.arraycopy(var1.matrix, 0, var3, 0, 6);
  1764.       } else {
  1765.          Font var4 = var2.getFont();
  1766.          float var5 = var4.getSize2D();
  1767.          FontRenderContext var6 = var2.getFontRenderContext();
  1768.          AffineTransform var7 = var6.getTransform();
  1769.          var7.scale((double)var5, (double)var5);
  1770.          var7.preConcatenate(var4.getTransform());
  1771.          var7.preConcatenate(var2.transform);
  1772.          var7.getMatrix(var3);
  1773.       }
  1774.  
  1775.       return var3[0] != var3[3] || var3[1] != (double)0.0F || var3[2] != (double)0.0F || !(var3[0] > (double)0.0F);
  1776.    }
  1777.  
  1778.    public boolean fontCanRotateText(SunGraphics2D var1, String var2) {
  1779.       Font var3 = var1.getFont();
  1780.       float var4 = var3.getSize2D();
  1781.       FontRenderContext var5 = var1.getFontRenderContext();
  1782.       AffineTransform var6 = var5.getTransform();
  1783.       var6.scale((double)var4, (double)var4);
  1784.       var6.preConcatenate(var3.getTransform());
  1785.       var6.preConcatenate(var1.transform);
  1786.       double[] var7 = new double[6];
  1787.       var6.getMatrix(var7);
  1788.       if (var7[0] == var7[3] && var7[1] == (double)0.0F && var7[2] == (double)0.0F && var7[0] > (double)0.0F) {
  1789.          return true;
  1790.       } else {
  1791.          boolean var8 = NativeFontWrapper.fontCanRotateText(var1.getFont(), var2, var7, var5.isAntiAliased(), var5.usesFractionalMetrics());
  1792.          return var8;
  1793.       }
  1794.    }
  1795.  
  1796.    public boolean fontCanRotateGlyphVector(SunGraphics2D var1, GlyphVector var2) {
  1797.       Font var3 = var1.getFont();
  1798.       float var4 = var3.getSize2D();
  1799.       FontRenderContext var5 = var1.getFontRenderContext();
  1800.       AffineTransform var6 = var5.getTransform();
  1801.       var6.scale((double)var4, (double)var4);
  1802.       var6.preConcatenate(var3.getTransform());
  1803.       var6.preConcatenate(var1.transform);
  1804.       double[] var7 = new double[6];
  1805.       var6.getMatrix(var7);
  1806.       if (var7[0] == var7[3] && var7[1] == (double)0.0F && var7[2] == (double)0.0F && var7[0] > (double)0.0F) {
  1807.          return true;
  1808.       } else {
  1809.          boolean var8 = NativeFontWrapper.fontCanRotateGlyphVector(var1.getFont(), var2.getGlyphCodes(0, var2.getNumGlyphs(), (int[])null), var7, var5.isAntiAliased(), var5.usesFractionalMetrics());
  1810.          return var8;
  1811.       }
  1812.    }
  1813.  
  1814.    public Object drawString(SunGraphics2D var1, String var2, float var3, float var4, Object var5) {
  1815.       if (!var1.simpleText) {
  1816.          this.drawTextOutline(var1, var2, var3, var4);
  1817.          return null;
  1818.       } else {
  1819.          LockableRaster var6 = null;
  1820.          PerformUnaryGraphicsPrimitive var7 = null;
  1821.          TextCachedState var8 = null;
  1822.          int var9 = -1;
  1823.          if (null != var5 && var5 instanceof TextCachedState) {
  1824.             var8 = (TextCachedState)var5;
  1825.             var6 = var8.theLR;
  1826.             var7 = var8.ugp;
  1827.             if (var7 != null && (!var7.id.equals(DrawString.getMethodSignature()) || var7.dstType != var6.type)) {
  1828.                var7 = null;
  1829.             }
  1830.          }
  1831.  
  1832.          Rectangle var10 = var1.getCompBounds();
  1833.          int var11 = var10.width;
  1834.          int var12 = var10.height;
  1835.          if (var11 != 0 && var12 != 0) {
  1836.             double[] var13 = new double[6];
  1837.             if (this.isRotated(var8, var1, var13)) {
  1838.                if (var8 != null) {
  1839.                   var9 = var8.rotate;
  1840.                }
  1841.  
  1842.                if (var9 == -1) {
  1843.                   var9 = NativeFontWrapper.fontCanRotate(var1.getFont());
  1844.                }
  1845.  
  1846.                if (var9 != 1) {
  1847.                   boolean var14 = true;
  1848.                   FontRenderContext var15 = var1.getFontRenderContext();
  1849.                   if (var9 == 2 && NativeFontWrapper.fontCanRotateText(var1.getFont(), var2, var13, var15.isAntiAliased(), var15.usesFractionalMetrics())) {
  1850.                      var14 = false;
  1851.                   }
  1852.  
  1853.                   if (var14) {
  1854.                      if (var8 == null) {
  1855.                         var8 = new TextCachedState(this, var1, (LockableRaster)null, (PerformUnaryGraphicsPrimitive)null, var9);
  1856.                      }
  1857.  
  1858.                      this.drawTextOutline(var1, var2, var3, var4);
  1859.                      return var8;
  1860.                   }
  1861.                }
  1862.             }
  1863.  
  1864.             if (null == var6) {
  1865.                var6 = new LockableRaster(var1);
  1866.             }
  1867.  
  1868.             if (var6.type == 13 && var1 instanceof HackWorkAround2DIndexed) {
  1869.                this.drawTextOutline(var1, var2, var3, var4);
  1870.                return null;
  1871.             } else {
  1872.                if (null == var7) {
  1873.                   var7 = new PerformUnaryGraphicsPrimitive(this, DrawString.getMethodSignature(), var6.type, var6.devID);
  1874.                }
  1875.  
  1876.                if (null != var7 && null != var7.coreOp && null == var7.readDstOp && null == var7.writeDstOp) {
  1877.                   if (var8 == null) {
  1878.                      var8 = new TextCachedState(this, var1, var6, var7, var9);
  1879.                   }
  1880.  
  1881.                   LockableRaster var30 = var6;
  1882.                   int var31 = var10.x;
  1883.                   int var16 = var10.y;
  1884.  
  1885.                   try {
  1886.                      try {
  1887.                         DrawString var17 = (DrawString)var7.coreOp;
  1888.                         boolean var18 = var30.lock(((GraphicsPrimitive)var17).getLockFlags()[0] | 8, var31, var16, var11, var12);
  1889.                         if (!var18) {
  1890.                            if (var1.drawStringClass != null && !var8.frc.isAntiAliased() && !var8.frc.usesFractionalMetrics()) {
  1891.                               Object var33 = var1.drawString(var1, var2, var3, var4, !(var5 instanceof TextCachedState) ? var5 : null);
  1892.                               return var33;
  1893.                            }
  1894.  
  1895.                            FontMetrics var19 = var1.getFontMetrics(var8.theFont);
  1896.                            Rectangle2D var20 = var19.getStringBounds(var2, var1);
  1897.                            Rectangle var21 = this.getBoundingRect(var1, var3, var4, var20, var10);
  1898.                            var30.lock(((GraphicsPrimitive)var17).getLockFlags()[0], var21.x, var21.y, var21.width, var21.height);
  1899.                         }
  1900.  
  1901.                         double[] var32 = var8.getOrigin(var3, var4);
  1902.                         var3 = (float)var32[0];
  1903.                         var4 = (float)var32[1];
  1904.                         var17.DrawString(var30.id, var2, var3, var4, var8.theColor, var8.theFont, var8.matrix, var8.frc.isAntiAliased(), var8.frc.usesFractionalMetrics());
  1905.                      } catch (RasterLockingException var26) {
  1906.                      }
  1907.  
  1908.                      return var8;
  1909.                   } finally {
  1910.                      var6.unlock();
  1911.                   }
  1912.                } else {
  1913.                   this.drawTextOutline(var1, var2, var3, var4);
  1914.                   return null;
  1915.                }
  1916.             }
  1917.          } else {
  1918.             return var8;
  1919.          }
  1920.       }
  1921.    }
  1922.  
  1923.    public Object drawGlyphVector(SunGraphics2D var1, GlyphVector var2, float var3, float var4, Object var5) {
  1924.       if (!var1.simpleText) {
  1925.          this.drawGlyphVectorOutline(var1, var2, var3, var4);
  1926.          return null;
  1927.       } else {
  1928.          LockableRaster var6 = null;
  1929.          PerformUnaryGraphicsPrimitive var7 = null;
  1930.          TextCachedState var8 = null;
  1931.          if (null != var5) {
  1932.             var8 = (TextCachedState)var5;
  1933.             var6 = var8.theLR;
  1934.             var7 = var8.ugp;
  1935.             if (!var7.id.equals(DrawGlyphVector.getMethodSignature()) || var7.dstType != var6.type) {
  1936.                var7 = null;
  1937.             }
  1938.          }
  1939.  
  1940.          Rectangle var9 = var1.getCompBounds();
  1941.          int var10 = var9.width;
  1942.          int var11 = var9.height;
  1943.          if (var10 != 0 && var11 != 0) {
  1944.             Font var12 = var2.getFont();
  1945.             FontRenderContext var13 = var2.getFontRenderContext();
  1946.             float var14 = var12.getSize2D();
  1947.             AffineTransform var15 = var13.getTransform();
  1948.             var15.scale((double)var14, (double)var14);
  1949.             var15.preConcatenate(var12.getTransform());
  1950.             var15.preConcatenate(var1.transform);
  1951.             double[] var16 = new double[6];
  1952.             var15.getMatrix(var16);
  1953.             if (var16[0] != var16[3] || var16[1] != (double)0.0F || var16[2] != (double)0.0F || !(var16[0] > (double)0.0F)) {
  1954.                int var17 = NativeFontWrapper.fontCanRotate(var12);
  1955.                if (var17 != 1) {
  1956.                   boolean var18 = true;
  1957.                   if (var17 == 2 && NativeFontWrapper.fontCanRotateGlyphVector(var12, var2.getGlyphCodes(0, var2.getNumGlyphs(), (int[])null), var16, var13.isAntiAliased(), var13.usesFractionalMetrics())) {
  1958.                      var18 = false;
  1959.                   }
  1960.  
  1961.                   if (var18) {
  1962.                      this.drawGlyphVectorOutline(var1, var2, var3, var4);
  1963.                      return var8;
  1964.                   }
  1965.                }
  1966.             }
  1967.  
  1968.             if (null == var6) {
  1969.                var6 = new LockableRaster(var1);
  1970.             }
  1971.  
  1972.             if (var6.type == 13 && var1 instanceof HackWorkAround2DIndexed) {
  1973.                this.drawGlyphVectorOutline(var1, var2, var3, var4);
  1974.                return null;
  1975.             } else {
  1976.                if (null == var7) {
  1977.                   var7 = new PerformUnaryGraphicsPrimitive(this, DrawGlyphVector.getMethodSignature(), var6.type, var6.devID);
  1978.                }
  1979.  
  1980.                if (null != var7 && null != var7.coreOp && null == var7.readDstOp && null == var7.writeDstOp) {
  1981.                   if (var8 == null) {
  1982.                      var8 = new TextCachedState(this, var1, var6, var7, -1);
  1983.                   }
  1984.  
  1985.                   LockableRaster var32 = var6;
  1986.                   int var33 = var9.x;
  1987.                   int var19 = var9.y;
  1988.  
  1989.                   try {
  1990.                      DrawGlyphVector var20 = (DrawGlyphVector)var7.coreOp;
  1991.                      boolean var21 = var32.lock(((GraphicsPrimitive)var20).getLockFlags()[0] | 8, var33, var19, var10, var11);
  1992.                      if (!var21) {
  1993.                         Rectangle2D var22 = var2.getVisualBounds();
  1994.                         Rectangle var23 = this.getBoundingRect(var1, var3, var4, var22, var9);
  1995.                         var32.lock(((GraphicsPrimitive)var20).getLockFlags()[0], var23.x, var23.y, var23.width, var23.height);
  1996.                      }
  1997.  
  1998.                      double[] var34 = var8.getOrigin(var3, var4);
  1999.                      var3 = (float)var34[0];
  2000.                      var4 = (float)var34[1];
  2001.                      var20.DrawGlyphVector(var32.id, var2, var3, var4, var8.theColor, var12, var16, var8.devTX, var13.isAntiAliased(), var13.usesFractionalMetrics());
  2002.                   } catch (RasterLockingException var28) {
  2003.                   } finally {
  2004.                      var6.unlock();
  2005.                   }
  2006.  
  2007.                   return var8;
  2008.                } else {
  2009.                   this.drawGlyphVectorOutline(var1, var2, var3, var4);
  2010.                   return null;
  2011.                }
  2012.             }
  2013.          } else {
  2014.             return var8;
  2015.          }
  2016.       }
  2017.    }
  2018.  
  2019.    public Object drawChars(SunGraphics2D var1, char[] var2, int var3, int var4, int var5, int var6, Object var7) {
  2020.       if (!var1.simpleText) {
  2021.          this.drawTextOutline(var1, new String(var2, var3, var4), (float)var5, (float)var6);
  2022.          return null;
  2023.       } else {
  2024.          LockableRaster var8 = null;
  2025.          PerformUnaryGraphicsPrimitive var9 = null;
  2026.          TextCachedState var10 = null;
  2027.          int var11 = -1;
  2028.          if (null != var7 && var7 instanceof TextCachedState) {
  2029.             var10 = (TextCachedState)var7;
  2030.             var8 = var10.theLR;
  2031.             var9 = var10.ugp;
  2032.             if (var9 != null && (!var9.id.equals(DrawChars.getMethodSignature()) || var9.dstType != var8.type)) {
  2033.                var9 = null;
  2034.             }
  2035.          }
  2036.  
  2037.          Rectangle var12 = var1.getCompBounds();
  2038.          int var13 = var12.width;
  2039.          int var14 = var12.height;
  2040.          if (var13 != 0 && var14 != 0) {
  2041.             double[] var15 = new double[6];
  2042.             if (this.isRotated(var10, var1, var15)) {
  2043.                if (var10 != null) {
  2044.                   var11 = var10.rotate;
  2045.                }
  2046.  
  2047.                if (var11 == -1) {
  2048.                   var11 = NativeFontWrapper.fontCanRotate(var1.getFont());
  2049.                }
  2050.  
  2051.                if (var11 != 1) {
  2052.                   boolean var16 = true;
  2053.                   FontRenderContext var17 = var1.getFontRenderContext();
  2054.                   if (var11 == 2 && NativeFontWrapper.fontCanRotateText(var1.getFont(), new String(var2, var3, var4), var15, var17.isAntiAliased(), var17.usesFractionalMetrics())) {
  2055.                      var16 = false;
  2056.                   }
  2057.  
  2058.                   if (var16) {
  2059.                      if (var10 == null) {
  2060.                         var10 = new TextCachedState(this, var1, (LockableRaster)null, (PerformUnaryGraphicsPrimitive)null, var11);
  2061.                      }
  2062.  
  2063.                      this.drawTextOutline(var1, new String(var2, var3, var4), (float)var5, (float)var6);
  2064.                      return var10;
  2065.                   }
  2066.                }
  2067.             }
  2068.  
  2069.             if (null == var8) {
  2070.                var8 = new LockableRaster(var1);
  2071.             }
  2072.  
  2073.             if (var8.type == 13 && var1 instanceof HackWorkAround2DIndexed) {
  2074.                this.drawTextOutline(var1, new String(var2, var3, var4), (float)var5, (float)var6);
  2075.                return null;
  2076.             } else {
  2077.                if (null == var9) {
  2078.                   var9 = new PerformUnaryGraphicsPrimitive(this, DrawChars.getMethodSignature(), var8.type, var8.devID);
  2079.                }
  2080.  
  2081.                if (null != var9 && null != var9.coreOp && null == var9.readDstOp && null == var9.writeDstOp) {
  2082.                   if (var10 == null) {
  2083.                      var10 = new TextCachedState(this, var1, var8, var9, var11);
  2084.                   }
  2085.  
  2086.                   LockableRaster var31 = var8;
  2087.                   int var32 = var12.x;
  2088.                   int var18 = var12.y;
  2089.  
  2090.                   try {
  2091.                      try {
  2092.                         DrawChars var19 = (DrawChars)var9.coreOp;
  2093.                         boolean var20 = var31.lock(((GraphicsPrimitive)var19).getLockFlags()[0] | 8, var32, var18, var13, var14);
  2094.                         if (!var20) {
  2095.                            if (var1.drawStringClass != null && !var10.frc.isAntiAliased() && !var10.frc.usesFractionalMetrics()) {
  2096.                               Object var34 = var1.drawChars(var1, var2, var3, var4, var5, var6, !(var7 instanceof TextCachedState) ? var7 : null);
  2097.                               return var34;
  2098.                            }
  2099.  
  2100.                            String var21 = new String(var2, var3, var4);
  2101.                            FontMetrics var22 = var1.getFontMetrics(var10.theFont);
  2102.                            Rectangle2D var23 = var22.getStringBounds(var21, var1);
  2103.                            Rectangle var24 = this.getBoundingRect(var1, (float)var5, (float)var6, var23, var12);
  2104.                            var31.lock(((GraphicsPrimitive)var19).getLockFlags()[0], var24.x, var24.y, var24.width, var24.height);
  2105.                         }
  2106.  
  2107.                         double[] var33 = var10.getOrigin((float)var5, (float)var6);
  2108.                         int var35 = (int)var33[0];
  2109.                         int var36 = (int)var33[1];
  2110.                         var19.DrawChars(var31.id, var2, var3, var4, (float)var35, (float)var36, var10.theColor, var10.theFont, var10.matrix, var10.frc.isAntiAliased(), var10.frc.usesFractionalMetrics());
  2111.                      } catch (RasterLockingException var29) {
  2112.                      }
  2113.  
  2114.                      return var10;
  2115.                   } finally {
  2116.                      var8.unlock();
  2117.                   }
  2118.                } else {
  2119.                   this.drawTextOutline(var1, new String(var2, var3, var4), (float)var5, (float)var6);
  2120.                   return null;
  2121.                }
  2122.             }
  2123.          } else {
  2124.             return var10;
  2125.          }
  2126.       }
  2127.    }
  2128.  
  2129.    public Object drawBytes(SunGraphics2D var1, byte[] var2, int var3, int var4, int var5, int var6, Object var7) {
  2130.       if (!var1.simpleText) {
  2131.          this.drawTextOutline(var1, new String(var2, 0, var3, var4), (float)var5, (float)var6);
  2132.          return null;
  2133.       } else {
  2134.          LockableRaster var8 = null;
  2135.          PerformUnaryGraphicsPrimitive var9 = null;
  2136.          TextCachedState var10 = null;
  2137.          int var11 = -1;
  2138.          if (null != var7 && var7 instanceof TextCachedState) {
  2139.             var10 = (TextCachedState)var7;
  2140.             var8 = var10.theLR;
  2141.             var9 = var10.ugp;
  2142.             if (var9 != null && (!var9.id.equals(DrawBytes.getMethodSignature()) || var9.dstType != var8.type)) {
  2143.                var9 = null;
  2144.             }
  2145.          }
  2146.  
  2147.          Rectangle var12 = var1.getCompBounds();
  2148.          int var13 = var12.width;
  2149.          int var14 = var12.height;
  2150.          if (var13 != 0 && var14 != 0) {
  2151.             double[] var15 = new double[6];
  2152.             if (this.isRotated(var10, var1, var15)) {
  2153.                if (var10 != null) {
  2154.                   var11 = var10.rotate;
  2155.                }
  2156.  
  2157.                if (var11 == -1) {
  2158.                   var11 = NativeFontWrapper.fontCanRotate(var1.getFont());
  2159.                }
  2160.  
  2161.                if (var11 != 1) {
  2162.                   boolean var16 = true;
  2163.                   FontRenderContext var17 = var1.getFontRenderContext();
  2164.                   if (var11 == 2 && NativeFontWrapper.fontCanRotateText(var1.getFont(), new String(var2, 0, var3, var4), var15, var17.isAntiAliased(), var17.usesFractionalMetrics())) {
  2165.                      var16 = false;
  2166.                   }
  2167.  
  2168.                   if (var16) {
  2169.                      if (var10 == null) {
  2170.                         var10 = new TextCachedState(this, var1, (LockableRaster)null, (PerformUnaryGraphicsPrimitive)null, var11);
  2171.                      }
  2172.  
  2173.                      this.drawTextOutline(var1, new String(var2, 0, var3, var4), (float)var5, (float)var6);
  2174.                      return var10;
  2175.                   }
  2176.                }
  2177.             }
  2178.  
  2179.             if (null == var8) {
  2180.                var8 = new LockableRaster(var1);
  2181.             }
  2182.  
  2183.             if (var8.type == 13 && var1 instanceof HackWorkAround2DIndexed) {
  2184.                this.drawTextOutline(var1, new String(var2, 0, var3, var4), (float)var5, (float)var6);
  2185.                return null;
  2186.             } else {
  2187.                if (null == var9) {
  2188.                   var9 = new PerformUnaryGraphicsPrimitive(this, DrawBytes.getMethodSignature(), var8.type, var8.devID);
  2189.                }
  2190.  
  2191.                if (null != var9 && null != var9.coreOp && null == var9.readDstOp && null == var9.writeDstOp) {
  2192.                   if (var10 == null) {
  2193.                      var10 = new TextCachedState(this, var1, var8, var9, var11);
  2194.                   }
  2195.  
  2196.                   LockableRaster var31 = var8;
  2197.                   int var32 = var12.x;
  2198.                   int var18 = var12.y;
  2199.  
  2200.                   try {
  2201.                      try {
  2202.                         DrawBytes var19 = (DrawBytes)var9.coreOp;
  2203.                         boolean var20 = var31.lock(((GraphicsPrimitive)var19).getLockFlags()[0] | 8, var32, var18, var13, var14);
  2204.                         if (!var20) {
  2205.                            if (var1.drawStringClass != null && !var10.frc.isAntiAliased() && !var10.frc.usesFractionalMetrics()) {
  2206.                               Object var34 = var1.drawBytes(var1, var2, var3, var4, var5, var6, !(var7 instanceof TextCachedState) ? var7 : null);
  2207.                               return var34;
  2208.                            }
  2209.  
  2210.                            String var21 = new String(var2, var3, var4);
  2211.                            FontMetrics var22 = var1.getFontMetrics(var10.theFont);
  2212.                            Rectangle2D var23 = var22.getStringBounds(var21, var1);
  2213.                            Rectangle var24 = this.getBoundingRect(var1, (float)var5, (float)var6, var23, var12);
  2214.                            var31.lock(((GraphicsPrimitive)var19).getLockFlags()[0], var24.x, var24.y, var24.width, var24.height);
  2215.                         }
  2216.  
  2217.                         double[] var33 = var10.getOrigin((float)var5, (float)var6);
  2218.                         int var35 = (int)var33[0];
  2219.                         int var36 = (int)var33[1];
  2220.                         var19.DrawBytes(var31.id, var2, var3, var4, (float)var35, (float)var36, var10.theColor, var10.theFont, var10.matrix, var10.frc.isAntiAliased(), var10.frc.usesFractionalMetrics());
  2221.                      } catch (RasterLockingException var29) {
  2222.                      }
  2223.  
  2224.                      return var10;
  2225.                   } finally {
  2226.                      var8.unlock();
  2227.                   }
  2228.                } else {
  2229.                   this.drawTextOutline(var1, new String(var2, 0, var3, var4), (float)var5, (float)var6);
  2230.                   return null;
  2231.                }
  2232.             }
  2233.          } else {
  2234.             return var10;
  2235.          }
  2236.       }
  2237.    }
  2238.  
  2239.    public AlphaColorPipe getColorPipe() {
  2240.       return ARGBcolorpipe;
  2241.    }
  2242.  
  2243.    public ColorModel getPreferredModel(ColorModel var1, Raster var2, AlphaComposite var3, Color var4, boolean var5) {
  2244.       if (!var5 && var1 instanceof IndexColorModel && var1.getColorSpace().isCS_sRGB()) {
  2245.          int var6 = var3.getRule();
  2246.          float var7 = var3.getAlpha();
  2247.          int var8 = var1.getTransparency();
  2248.          if (var7 >= 1.0F) {
  2249.             if (var6 == 2) {
  2250.                return var1;
  2251.             }
  2252.  
  2253.             if (var6 == 3 && var8 == 1) {
  2254.                return var1;
  2255.             }
  2256.  
  2257.             if (var6 == 3 && var8 == 2) {
  2258.                if (var4 == null) {
  2259.                   return var1;
  2260.                }
  2261.  
  2262.                int var9 = var4.getTransparency();
  2263.                if (var9 == 1 || var9 == 2) {
  2264.                   return var1;
  2265.                }
  2266.             }
  2267.          }
  2268.       }
  2269.  
  2270.       if (var1.getTransparency() == 1) {
  2271.          return XRGBModel;
  2272.       } else {
  2273.          return ARGBModel;
  2274.       }
  2275.    }
  2276.  
  2277.    public static void ARGBpaintARGB(IntegerComponentRaster var0, boolean var1, IntegerComponentRaster var2, int var3, float var4, byte[] var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14) {
  2278.       Color var15 = new Color(var14, true);
  2279.       LockableRaster var16 = new LockableRaster(var0, ARGBModel);
  2280.       LockableRaster var17 = new LockableRaster(var2, ARGBModel);
  2281.       manager.performBinaryComposite(var16, var17, var8, var9, var10, var11, var12, var13, var5, var6, var7, var3, var4, var15, (Object)null);
  2282.    }
  2283.  
  2284.    private Rectangle getBoundingRect(SunGraphics2D var1, float var2, float var3, Rectangle2D var4, Rectangle var5) {
  2285.       double var7 = ((RectangularShape)var4).getWidth();
  2286.       double var9 = ((RectangularShape)var4).getHeight();
  2287.       double var11 = (double)var2 + ((RectangularShape)var4).getX();
  2288.       double var13 = (double)var3 + ((RectangularShape)var4).getY();
  2289.       Rectangle var6;
  2290.       if (var1.transformState != 0) {
  2291.          double[] var15 = new double[]{var11, var13, var11 + var7, var13, var11, var13 + var9, var11 + var7, var13 + var9};
  2292.          double[] var16 = new double[8];
  2293.          var1.transform.transform(var15, 0, var16, 0, 4);
  2294.          int var17 = (int)var16[0];
  2295.          int var18 = (int)var16[0];
  2296.          int var19 = (int)var16[1];
  2297.          int var20 = (int)var16[1];
  2298.  
  2299.          for(int var21 = 2; var21 < 8; var21 += 2) {
  2300.             if (var16[var21] < (double)var17) {
  2301.                var17 = (int)var16[var21];
  2302.             }
  2303.  
  2304.             if (var16[var21] > (double)var18) {
  2305.                var18 = (int)var16[var21];
  2306.             }
  2307.  
  2308.             if (var16[var21 + 1] < (double)var19) {
  2309.                var19 = (int)var16[var21 + 1];
  2310.             }
  2311.  
  2312.             if (var16[var21 + 1] > (double)var20) {
  2313.                var20 = (int)var16[var21 + 1];
  2314.             }
  2315.          }
  2316.  
  2317.          var6 = new Rectangle(var17, var19, var18 - var17, var20 - var19);
  2318.       } else {
  2319.          var6 = new Rectangle((int)var11, (int)var13, (int)var7, (int)var9);
  2320.       }
  2321.  
  2322.       return var6.intersection(var5);
  2323.    }
  2324.  
  2325.    // $FF: synthetic method
  2326.    static boolean access$000() {
  2327.       return debugLog;
  2328.    }
  2329.  
  2330.    // $FF: synthetic method
  2331.    static boolean access$100() {
  2332.       return debugTrace;
  2333.    }
  2334.  
  2335.    static {
  2336.       String var0 = (String)AccessController.doPrivileged(new GetPropertyAction("java2d.newarch.trace"));
  2337.       if ("true".equals(var0)) {
  2338.          System.out.println("Enabling new 2d architecture trace");
  2339.          debugTrace = true;
  2340.       } else if ("false".equals(var0)) {
  2341.          System.out.println("Disabling new 2d architecture trace");
  2342.          debugTrace = false;
  2343.       } else if (var0 != null) {
  2344.          System.out.println("Unrecognized flag for new 2d architecture: " + var0);
  2345.       }
  2346.  
  2347.       var0 = (String)AccessController.doPrivileged(new GetPropertyAction("java2d.newarch.log"));
  2348.       if ("true".equals(var0)) {
  2349.          System.out.println("Enabling new 2d architecture logging");
  2350.          debugLog = true;
  2351.       } else if ("false".equals(var0)) {
  2352.          System.out.println("Disabling new 2d architecture logging");
  2353.          debugLog = false;
  2354.       } else if (var0 != null) {
  2355.          System.out.println("Unrecognized flag for new 2d architecture: " + var0);
  2356.       }
  2357.  
  2358.       var0 = (String)AccessController.doPrivileged(new GetPropertyAction("java2d.font.usePlatformFont"));
  2359.       if (var0 == null) {
  2360.          usePlatformFont = getPlatformFontVar();
  2361.       }
  2362.  
  2363.       if (!"true".equals(var0) && !usePlatformFont) {
  2364.          if (!"false".equals(var0) && usePlatformFont) {
  2365.             if (var0 != null) {
  2366.                System.out.println("Unrecognized flag for platform fonts: " + var0);
  2367.             }
  2368.          } else {
  2369.             usePlatformFont = false;
  2370.          }
  2371.       } else {
  2372.          usePlatformFont = true;
  2373.       }
  2374.  
  2375.       if (var0 != null || usePlatformFont) {
  2376.          if (usePlatformFont) {
  2377.             System.out.println("Enabling platform fonts. NOTE: usePlatformFont is now deprecated and will be removed in the next build.");
  2378.          } else {
  2379.             System.out.println("Disabling platform fonts");
  2380.          }
  2381.       }
  2382.  
  2383.       model = ColorModel.getRGBdefault();
  2384.       BitmaskARGBModel = new DirectColorModel(25, 16711680, 65280, 255, 16777216);
  2385.       ARGBModel = ColorModel.getRGBdefault();
  2386.       BitmaskABGRModel = new DirectColorModel(25, 255, 65280, 16711680, 16777216);
  2387.       ABGRModel = new DirectColorModel(32, 255, 65280, 16711680, -16777216);
  2388.       ARGBcolorpipe = new AlphaColorPipe();
  2389.    }
  2390. }
  2391.