home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / DebugGraphics.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  16.6 KB  |  915 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Font;
  6. import java.awt.FontMetrics;
  7. import java.awt.Graphics;
  8. import java.awt.Image;
  9. import java.awt.Point;
  10. import java.awt.Rectangle;
  11. import java.awt.Shape;
  12. import java.awt.Toolkit;
  13. import java.awt.Window;
  14. import java.awt.image.FilteredImageSource;
  15. import java.awt.image.ImageObserver;
  16. import java.awt.image.ImageProducer;
  17. import java.io.PrintStream;
  18.  
  19. public class DebugGraphics extends Graphics {
  20.    Graphics graphics;
  21.    Image buffer;
  22.    int debugOptions;
  23.    int graphicsID;
  24.    int xOffset;
  25.    int yOffset;
  26.    private static int graphicsCount = 0;
  27.    public static final int LOG_OPTION = 1;
  28.    public static final int FLASH_OPTION = 2;
  29.    public static final int BUFFERED_OPTION = 4;
  30.    public static final int NONE_OPTION = -1;
  31.    private static final Class debugGraphicsInfoKey;
  32.    // $FF: synthetic field
  33.    static Class class$javax$swing$DebugGraphicsInfo;
  34.  
  35.    static {
  36.       debugGraphicsInfoKey = class$javax$swing$DebugGraphicsInfo != null ? class$javax$swing$DebugGraphicsInfo : (class$javax$swing$DebugGraphicsInfo = class$("javax.swing.DebugGraphicsInfo"));
  37.       if (SwingUtilities.is1dot2) {
  38.          System.err.println("warning: running 1.1 version of DebugGraphics");
  39.       }
  40.  
  41.    }
  42.  
  43.    public DebugGraphics() {
  44.       this.graphicsID = graphicsCount++;
  45.       this.buffer = null;
  46.       this.xOffset = this.yOffset = 0;
  47.    }
  48.  
  49.    public DebugGraphics(Graphics var1) {
  50.       this();
  51.       this.graphics = var1;
  52.    }
  53.  
  54.    public DebugGraphics(Graphics var1, JComponent var2) {
  55.       this(var1);
  56.       this.setDebugOptions(var2.shouldDebugGraphics());
  57.    }
  58.  
  59.    // $FF: synthetic method
  60.    static Class class$(String var0) {
  61.       try {
  62.          return Class.forName(var0);
  63.       } catch (ClassNotFoundException var2) {
  64.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  65.       }
  66.    }
  67.  
  68.    public void clearRect(int var1, int var2, int var3, int var4) {
  69.       DebugGraphicsInfo var5 = info();
  70.       if (this.debugLog()) {
  71.          info().log(this.toShortString() + " Clearing rect: " + new Rectangle(var1, var2, var3, var4));
  72.       }
  73.  
  74.       if (this.isDrawingBuffer()) {
  75.          if (this.debugBuffered()) {
  76.             Graphics var6 = this.debugGraphics();
  77.             var6.clearRect(var1, var2, var3, var4);
  78.             var6.dispose();
  79.          }
  80.       } else if (this.debugFlash()) {
  81.          Color var9 = this.getColor();
  82.          int var8 = var5.flashCount * 2 - 1;
  83.  
  84.          for(int var7 = 0; var7 < var8; ++var7) {
  85.             this.graphics.setColor(var7 % 2 == 0 ? var5.flashColor : var9);
  86.             this.graphics.clearRect(var1, var2, var3, var4);
  87.             Toolkit.getDefaultToolkit().sync();
  88.             this.sleep(var5.flashTime);
  89.          }
  90.  
  91.          this.graphics.setColor(var9);
  92.       }
  93.  
  94.       this.graphics.clearRect(var1, var2, var3, var4);
  95.    }
  96.  
  97.    public void clipRect(int var1, int var2, int var3, int var4) {
  98.       this.graphics.clipRect(var1, var2, var3, var4);
  99.       if (this.debugLog()) {
  100.          info().log(this.toShortString() + " Setting clipRect: " + new Rectangle(var1, var2, var3, var4) + " New clipRect: " + this.graphics.getClip());
  101.       }
  102.  
  103.    }
  104.  
  105.    public void copyArea(int var1, int var2, int var3, int var4, int var5, int var6) {
  106.       if (this.debugLog()) {
  107.          info().log(this.toShortString() + " Copying area from: " + new Rectangle(var1, var2, var3, var4) + " to: " + new Point(var5, var6));
  108.       }
  109.  
  110.       this.graphics.copyArea(var1, var2, var3, var4, var5, var6);
  111.    }
  112.  
  113.    public Graphics create() {
  114.       DebugGraphics var1 = new DebugGraphics();
  115.       var1.graphics = this.graphics.create();
  116.       var1.debugOptions = this.debugOptions;
  117.       var1.buffer = this.buffer;
  118.       return var1;
  119.    }
  120.  
  121.    public Graphics create(int var1, int var2, int var3, int var4) {
  122.       DebugGraphics var5 = new DebugGraphics();
  123.       var5.graphics = this.graphics.create(var1, var2, var3, var4);
  124.       var5.debugOptions = this.debugOptions;
  125.       var5.buffer = this.buffer;
  126.       var5.xOffset = this.xOffset + var1;
  127.       var5.yOffset = this.yOffset + var2;
  128.       return var5;
  129.    }
  130.  
  131.    boolean debugBuffered() {
  132.       return (this.debugOptions & 4) == 4;
  133.    }
  134.  
  135.    static int debugComponentCount() {
  136.       DebugGraphicsInfo var0 = info();
  137.       return var0 != null && var0.componentToDebug != null ? var0.componentToDebug.size() : 0;
  138.    }
  139.  
  140.    boolean debugFlash() {
  141.       return (this.debugOptions & 2) == 2;
  142.    }
  143.  
  144.    private Graphics debugGraphics() {
  145.       DebugGraphicsInfo var2 = info();
  146.       if (var2.debugFrame == null) {
  147.          var2.debugFrame = new JFrame();
  148.          var2.debugFrame.setSize(500, 500);
  149.       }
  150.  
  151.       JFrame var3 = var2.debugFrame;
  152.       ((Window)var3).show();
  153.       DebugGraphics var1 = new DebugGraphics(((Component)var3).getGraphics());
  154.       var1.setFont(this.getFont());
  155.       var1.setColor(this.getColor());
  156.       var1.translate(this.xOffset, this.yOffset);
  157.       var1.setClip(this.getClipBounds());
  158.       if (this.debugFlash()) {
  159.          var1.setDebugOptions(2);
  160.       }
  161.  
  162.       return var1;
  163.    }
  164.  
  165.    boolean debugLog() {
  166.       return (this.debugOptions & 1) == 1;
  167.    }
  168.  
  169.    public void dispose() {
  170.       this.graphics.dispose();
  171.       this.graphics = null;
  172.    }
  173.  
  174.    public void draw3DRect(int var1, int var2, int var3, int var4, boolean var5) {
  175.       DebugGraphicsInfo var6 = info();
  176.       if (this.debugLog()) {
  177.          info().log(this.toShortString() + " Drawing 3D rect: " + new Rectangle(var1, var2, var3, var4) + " Raised bezel: " + var5);
  178.       }
  179.  
  180.       if (this.isDrawingBuffer()) {
  181.          if (this.debugBuffered()) {
  182.             Graphics var7 = this.debugGraphics();
  183.             var7.draw3DRect(var1, var2, var3, var4, var5);
  184.             var7.dispose();
  185.          }
  186.       } else if (this.debugFlash()) {
  187.          Color var10 = this.getColor();
  188.          int var9 = var6.flashCount * 2 - 1;
  189.  
  190.          for(int var8 = 0; var8 < var9; ++var8) {
  191.             this.graphics.setColor(var8 % 2 == 0 ? var6.flashColor : var10);
  192.             this.graphics.draw3DRect(var1, var2, var3, var4, var5);
  193.             Toolkit.getDefaultToolkit().sync();
  194.             this.sleep(var6.flashTime);
  195.          }
  196.  
  197.          this.graphics.setColor(var10);
  198.       }
  199.  
  200.       this.graphics.draw3DRect(var1, var2, var3, var4, var5);
  201.    }
  202.  
  203.    public void drawArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  204.       DebugGraphicsInfo var7 = info();
  205.       if (this.debugLog()) {
  206.          info().log(this.toShortString() + " Drawing arc: " + new Rectangle(var1, var2, var3, var4) + " startAngle: " + var5 + " arcAngle: " + var6);
  207.       }
  208.  
  209.       if (this.isDrawingBuffer()) {
  210.          if (this.debugBuffered()) {
  211.             Graphics var8 = this.debugGraphics();
  212.             var8.drawArc(var1, var2, var3, var4, var5, var6);
  213.             var8.dispose();
  214.          }
  215.       } else if (this.debugFlash()) {
  216.          Color var11 = this.getColor();
  217.          int var10 = var7.flashCount * 2 - 1;
  218.  
  219.          for(int var9 = 0; var9 < var10; ++var9) {
  220.             this.graphics.setColor(var9 % 2 == 0 ? var7.flashColor : var11);
  221.             this.graphics.drawArc(var1, var2, var3, var4, var5, var6);
  222.             Toolkit.getDefaultToolkit().sync();
  223.             this.sleep(var7.flashTime);
  224.          }
  225.  
  226.          this.graphics.setColor(var11);
  227.       }
  228.  
  229.       this.graphics.drawArc(var1, var2, var3, var4, var5, var6);
  230.    }
  231.  
  232.    public void drawBytes(byte[] var1, int var2, int var3, int var4, int var5) {
  233.       DebugGraphicsInfo var6 = info();
  234.       Font var7 = this.graphics.getFont();
  235.       if (this.debugLog()) {
  236.          info().log(this.toShortString() + " Drawing bytes at: " + new Point(var4, var5));
  237.       }
  238.  
  239.       if (this.isDrawingBuffer()) {
  240.          if (this.debugBuffered()) {
  241.             Graphics var8 = this.debugGraphics();
  242.             var8.drawBytes(var1, var2, var3, var4, var5);
  243.             var8.dispose();
  244.          }
  245.       } else if (this.debugFlash()) {
  246.          Color var11 = this.getColor();
  247.          int var10 = var6.flashCount * 2 - 1;
  248.  
  249.          for(int var9 = 0; var9 < var10; ++var9) {
  250.             this.graphics.setColor(var9 % 2 == 0 ? var6.flashColor : var11);
  251.             this.graphics.drawBytes(var1, var2, var3, var4, var5);
  252.             Toolkit.getDefaultToolkit().sync();
  253.             this.sleep(var6.flashTime);
  254.          }
  255.  
  256.          this.graphics.setColor(var11);
  257.       }
  258.  
  259.       this.graphics.drawBytes(var1, var2, var3, var4, var5);
  260.    }
  261.  
  262.    public void drawChars(char[] var1, int var2, int var3, int var4, int var5) {
  263.       DebugGraphicsInfo var6 = info();
  264.       Font var7 = this.graphics.getFont();
  265.       if (this.debugLog()) {
  266.          info().log(this.toShortString() + " Drawing chars at " + new Point(var4, var5));
  267.       }
  268.  
  269.       if (this.isDrawingBuffer()) {
  270.          if (this.debugBuffered()) {
  271.             Graphics var8 = this.debugGraphics();
  272.             var8.drawChars(var1, var2, var3, var4, var5);
  273.             var8.dispose();
  274.          }
  275.       } else if (this.debugFlash()) {
  276.          Color var11 = this.getColor();
  277.          int var10 = var6.flashCount * 2 - 1;
  278.  
  279.          for(int var9 = 0; var9 < var10; ++var9) {
  280.             this.graphics.setColor(var9 % 2 == 0 ? var6.flashColor : var11);
  281.             this.graphics.drawChars(var1, var2, var3, var4, var5);
  282.             Toolkit.getDefaultToolkit().sync();
  283.             this.sleep(var6.flashTime);
  284.          }
  285.  
  286.          this.graphics.setColor(var11);
  287.       }
  288.  
  289.       this.graphics.drawChars(var1, var2, var3, var4, var5);
  290.    }
  291.  
  292.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, Color var10, ImageObserver var11) {
  293.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11);
  294.    }
  295.  
  296.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, ImageObserver var10) {
  297.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10);
  298.    }
  299.  
  300.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, Color var6, ImageObserver var7) {
  301.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7);
  302.    }
  303.  
  304.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, ImageObserver var6) {
  305.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6);
  306.    }
  307.  
  308.    public boolean drawImage(Image var1, int var2, int var3, Color var4, ImageObserver var5) {
  309.       return this.graphics.drawImage(var1, var2, var3, var4, var5);
  310.    }
  311.  
  312.    public boolean drawImage(Image var1, int var2, int var3, ImageObserver var4) {
  313.       DebugGraphicsInfo var5 = info();
  314.       if (this.debugLog()) {
  315.          info().log(this.toShortString() + " Drawing image: " + var1 + " at: " + new Point(var2, var3));
  316.       }
  317.  
  318.       if (this.isDrawingBuffer()) {
  319.          if (this.debugBuffered()) {
  320.             Graphics var6 = this.debugGraphics();
  321.             var6.drawImage(var1, var2, var3, var4);
  322.             var6.dispose();
  323.          }
  324.       } else if (this.debugFlash()) {
  325.          int var7 = var5.flashCount * 2 - 1;
  326.          ImageProducer var8 = var1.getSource();
  327.          FilteredImageSource var9 = new FilteredImageSource(var8, new DebugGraphicsFilter(var5.flashColor));
  328.          Image var10 = Toolkit.getDefaultToolkit().createImage(var9);
  329.          DebugGraphicsObserver var11 = new DebugGraphicsObserver();
  330.  
  331.          for(int var12 = 0; var12 < var7; ++var12) {
  332.             this.graphics.drawImage(var12 % 2 == 0 ? var10 : var1, var2, var3, var11);
  333.             Toolkit.getDefaultToolkit().sync();
  334.  
  335.             while(!var11.allBitsPresent() && !var11.imageHasProblem()) {
  336.                this.sleep(10);
  337.             }
  338.  
  339.             this.sleep(var5.flashTime);
  340.          }
  341.       }
  342.  
  343.       return this.graphics.drawImage(var1, var2, var3, var4);
  344.    }
  345.  
  346.    public void drawLine(int var1, int var2, int var3, int var4) {
  347.       DebugGraphicsInfo var5 = info();
  348.       if (this.debugLog()) {
  349.          info().log(this.toShortString() + " Drawing line: from " + this.pointToString(var1, var2) + " to " + this.pointToString(var3, var4));
  350.       }
  351.  
  352.       if (this.isDrawingBuffer()) {
  353.          if (this.debugBuffered()) {
  354.             Graphics var6 = this.debugGraphics();
  355.             var6.drawLine(var1, var2, var3, var4);
  356.             var6.dispose();
  357.          }
  358.       } else if (this.debugFlash()) {
  359.          Color var9 = this.getColor();
  360.          int var8 = var5.flashCount * 2 - 1;
  361.  
  362.          for(int var7 = 0; var7 < var8; ++var7) {
  363.             this.graphics.setColor(var7 % 2 == 0 ? var5.flashColor : var9);
  364.             this.graphics.drawLine(var1, var2, var3, var4);
  365.             Toolkit.getDefaultToolkit().sync();
  366.             this.sleep(var5.flashTime);
  367.          }
  368.  
  369.          this.graphics.setColor(var9);
  370.       }
  371.  
  372.       this.graphics.drawLine(var1, var2, var3, var4);
  373.    }
  374.  
  375.    public void drawOval(int var1, int var2, int var3, int var4) {
  376.       DebugGraphicsInfo var5 = info();
  377.       if (this.debugLog()) {
  378.          info().log(this.toShortString() + " Drawing oval: " + new Rectangle(var1, var2, var3, var4));
  379.       }
  380.  
  381.       if (this.isDrawingBuffer()) {
  382.          if (this.debugBuffered()) {
  383.             Graphics var6 = this.debugGraphics();
  384.             var6.drawOval(var1, var2, var3, var4);
  385.             var6.dispose();
  386.          }
  387.       } else if (this.debugFlash()) {
  388.          Color var9 = this.getColor();
  389.          int var8 = var5.flashCount * 2 - 1;
  390.  
  391.          for(int var7 = 0; var7 < var8; ++var7) {
  392.             this.graphics.setColor(var7 % 2 == 0 ? var5.flashColor : var9);
  393.             this.graphics.drawOval(var1, var2, var3, var4);
  394.             Toolkit.getDefaultToolkit().sync();
  395.             this.sleep(var5.flashTime);
  396.          }
  397.  
  398.          this.graphics.setColor(var9);
  399.       }
  400.  
  401.       this.graphics.drawOval(var1, var2, var3, var4);
  402.    }
  403.  
  404.    public void drawPolygon(int[] var1, int[] var2, int var3) {
  405.       DebugGraphicsInfo var4 = info();
  406.       if (this.debugLog()) {
  407.          info().log(this.toShortString() + " Drawing polygon: " + " nPoints: " + var3 + " X's: " + var1 + " Y's: " + var2);
  408.       }
  409.  
  410.       if (this.isDrawingBuffer()) {
  411.          if (this.debugBuffered()) {
  412.             Graphics var5 = this.debugGraphics();
  413.             var5.drawPolygon(var1, var2, var3);
  414.             var5.dispose();
  415.          }
  416.       } else if (this.debugFlash()) {
  417.          Color var8 = this.getColor();
  418.          int var7 = var4.flashCount * 2 - 1;
  419.  
  420.          for(int var6 = 0; var6 < var7; ++var6) {
  421.             this.graphics.setColor(var6 % 2 == 0 ? var4.flashColor : var8);
  422.             this.graphics.drawPolygon(var1, var2, var3);
  423.             Toolkit.getDefaultToolkit().sync();
  424.             this.sleep(var4.flashTime);
  425.          }
  426.  
  427.          this.graphics.setColor(var8);
  428.       }
  429.  
  430.       this.graphics.drawPolygon(var1, var2, var3);
  431.    }
  432.  
  433.    public void drawPolyline(int[] var1, int[] var2, int var3) {
  434.       DebugGraphicsInfo var4 = info();
  435.       if (this.debugLog()) {
  436.          info().log(this.toShortString() + " Drawing polyline: " + " nPoints: " + var3 + " X's: " + var1 + " Y's: " + var2);
  437.       }
  438.  
  439.       if (this.isDrawingBuffer()) {
  440.          if (this.debugBuffered()) {
  441.             Graphics var5 = this.debugGraphics();
  442.             var5.drawPolyline(var1, var2, var3);
  443.             var5.dispose();
  444.          }
  445.       } else if (this.debugFlash()) {
  446.          Color var8 = this.getColor();
  447.          int var7 = var4.flashCount * 2 - 1;
  448.  
  449.          for(int var6 = 0; var6 < var7; ++var6) {
  450.             this.graphics.setColor(var6 % 2 == 0 ? var4.flashColor : var8);
  451.             this.graphics.drawPolyline(var1, var2, var3);
  452.             Toolkit.getDefaultToolkit().sync();
  453.             this.sleep(var4.flashTime);
  454.          }
  455.  
  456.          this.graphics.setColor(var8);
  457.       }
  458.  
  459.       this.graphics.drawPolyline(var1, var2, var3);
  460.    }
  461.  
  462.    public void drawRect(int var1, int var2, int var3, int var4) {
  463.       DebugGraphicsInfo var5 = info();
  464.       if (this.debugLog()) {
  465.          info().log(this.toShortString() + " Drawing rect: " + new Rectangle(var1, var2, var3, var4));
  466.       }
  467.  
  468.       if (this.isDrawingBuffer()) {
  469.          if (this.debugBuffered()) {
  470.             Graphics var6 = this.debugGraphics();
  471.             var6.drawRect(var1, var2, var3, var4);
  472.             var6.dispose();
  473.          }
  474.       } else if (this.debugFlash()) {
  475.          Color var9 = this.getColor();
  476.          int var8 = var5.flashCount * 2 - 1;
  477.  
  478.          for(int var7 = 0; var7 < var8; ++var7) {
  479.             this.graphics.setColor(var7 % 2 == 0 ? var5.flashColor : var9);
  480.             this.graphics.drawRect(var1, var2, var3, var4);
  481.             Toolkit.getDefaultToolkit().sync();
  482.             this.sleep(var5.flashTime);
  483.          }
  484.  
  485.          this.graphics.setColor(var9);
  486.       }
  487.  
  488.       this.graphics.drawRect(var1, var2, var3, var4);
  489.    }
  490.  
  491.    public void drawRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  492.       DebugGraphicsInfo var7 = info();
  493.       if (this.debugLog()) {
  494.          info().log(this.toShortString() + " Drawing round rect: " + new Rectangle(var1, var2, var3, var4) + " arcWidth: " + var5 + " archHeight: " + var6);
  495.       }
  496.  
  497.       if (this.isDrawingBuffer()) {
  498.          if (this.debugBuffered()) {
  499.             Graphics var8 = this.debugGraphics();
  500.             var8.drawRoundRect(var1, var2, var3, var4, var5, var6);
  501.             var8.dispose();
  502.          }
  503.       } else if (this.debugFlash()) {
  504.          Color var11 = this.getColor();
  505.          int var10 = var7.flashCount * 2 - 1;
  506.  
  507.          for(int var9 = 0; var9 < var10; ++var9) {
  508.             this.graphics.setColor(var9 % 2 == 0 ? var7.flashColor : var11);
  509.             this.graphics.drawRoundRect(var1, var2, var3, var4, var5, var6);
  510.             Toolkit.getDefaultToolkit().sync();
  511.             this.sleep(var7.flashTime);
  512.          }
  513.  
  514.          this.graphics.setColor(var11);
  515.       }
  516.  
  517.       this.graphics.drawRoundRect(var1, var2, var3, var4, var5, var6);
  518.    }
  519.  
  520.    public void drawString(String var1, int var2, int var3) {
  521.       DebugGraphicsInfo var4 = info();
  522.       if (this.debugLog()) {
  523.          info().log(this.toShortString() + " Drawing string: \"" + var1 + "\" at: " + new Point(var2, var3));
  524.       }
  525.  
  526.       if (this.isDrawingBuffer()) {
  527.          if (this.debugBuffered()) {
  528.             Graphics var5 = this.debugGraphics();
  529.             var5.drawString(var1, var2, var3);
  530.             var5.dispose();
  531.          }
  532.       } else if (this.debugFlash()) {
  533.          Color var8 = this.getColor();
  534.          int var7 = var4.flashCount * 2 - 1;
  535.  
  536.          for(int var6 = 0; var6 < var7; ++var6) {
  537.             this.graphics.setColor(var6 % 2 == 0 ? var4.flashColor : var8);
  538.             this.graphics.drawString(var1, var2, var3);
  539.             Toolkit.getDefaultToolkit().sync();
  540.             this.sleep(var4.flashTime);
  541.          }
  542.  
  543.          this.graphics.setColor(var8);
  544.       }
  545.  
  546.       this.graphics.drawString(var1, var2, var3);
  547.    }
  548.  
  549.    public void fill3DRect(int var1, int var2, int var3, int var4, boolean var5) {
  550.       DebugGraphicsInfo var6 = info();
  551.       if (this.debugLog()) {
  552.          info().log(this.toShortString() + " Filling 3D rect: " + new Rectangle(var1, var2, var3, var4) + " Raised bezel: " + var5);
  553.       }
  554.  
  555.       if (this.isDrawingBuffer()) {
  556.          if (this.debugBuffered()) {
  557.             Graphics var7 = this.debugGraphics();
  558.             var7.fill3DRect(var1, var2, var3, var4, var5);
  559.             var7.dispose();
  560.          }
  561.       } else if (this.debugFlash()) {
  562.          Color var10 = this.getColor();
  563.          int var9 = var6.flashCount * 2 - 1;
  564.  
  565.          for(int var8 = 0; var8 < var9; ++var8) {
  566.             this.graphics.setColor(var8 % 2 == 0 ? var6.flashColor : var10);
  567.             this.graphics.fill3DRect(var1, var2, var3, var4, var5);
  568.             Toolkit.getDefaultToolkit().sync();
  569.             this.sleep(var6.flashTime);
  570.          }
  571.  
  572.          this.graphics.setColor(var10);
  573.       }
  574.  
  575.       this.graphics.fill3DRect(var1, var2, var3, var4, var5);
  576.    }
  577.  
  578.    public void fillArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  579.       DebugGraphicsInfo var7 = info();
  580.       if (this.debugLog()) {
  581.          info().log(this.toShortString() + " Filling arc: " + new Rectangle(var1, var2, var3, var4) + " startAngle: " + var5 + " arcAngle: " + var6);
  582.       }
  583.  
  584.       if (this.isDrawingBuffer()) {
  585.          if (this.debugBuffered()) {
  586.             Graphics var8 = this.debugGraphics();
  587.             var8.fillArc(var1, var2, var3, var4, var5, var6);
  588.             var8.dispose();
  589.          }
  590.       } else if (this.debugFlash()) {
  591.          Color var11 = this.getColor();
  592.          int var10 = var7.flashCount * 2 - 1;
  593.  
  594.          for(int var9 = 0; var9 < var10; ++var9) {
  595.             this.graphics.setColor(var9 % 2 == 0 ? var7.flashColor : var11);
  596.             this.graphics.fillArc(var1, var2, var3, var4, var5, var6);
  597.             Toolkit.getDefaultToolkit().sync();
  598.             this.sleep(var7.flashTime);
  599.          }
  600.  
  601.          this.graphics.setColor(var11);
  602.       }
  603.  
  604.       this.graphics.fillArc(var1, var2, var3, var4, var5, var6);
  605.    }
  606.  
  607.    public void fillOval(int var1, int var2, int var3, int var4) {
  608.       DebugGraphicsInfo var5 = info();
  609.       if (this.debugLog()) {
  610.          info().log(this.toShortString() + " Filling oval: " + new Rectangle(var1, var2, var3, var4));
  611.       }
  612.  
  613.       if (this.isDrawingBuffer()) {
  614.          if (this.debugBuffered()) {
  615.             Graphics var6 = this.debugGraphics();
  616.             var6.fillOval(var1, var2, var3, var4);
  617.             var6.dispose();
  618.          }
  619.       } else if (this.debugFlash()) {
  620.          Color var9 = this.getColor();
  621.          int var8 = var5.flashCount * 2 - 1;
  622.  
  623.          for(int var7 = 0; var7 < var8; ++var7) {
  624.             this.graphics.setColor(var7 % 2 == 0 ? var5.flashColor : var9);
  625.             this.graphics.fillOval(var1, var2, var3, var4);
  626.             Toolkit.getDefaultToolkit().sync();
  627.             this.sleep(var5.flashTime);
  628.          }
  629.  
  630.          this.graphics.setColor(var9);
  631.       }
  632.  
  633.       this.graphics.fillOval(var1, var2, var3, var4);
  634.    }
  635.  
  636.    public void fillPolygon(int[] var1, int[] var2, int var3) {
  637.       DebugGraphicsInfo var4 = info();
  638.       if (this.debugLog()) {
  639.          info().log(this.toShortString() + " Filling polygon: " + " nPoints: " + var3 + " X's: " + var1 + " Y's: " + var2);
  640.       }
  641.  
  642.       if (this.isDrawingBuffer()) {
  643.          if (this.debugBuffered()) {
  644.             Graphics var5 = this.debugGraphics();
  645.             var5.fillPolygon(var1, var2, var3);
  646.             var5.dispose();
  647.          }
  648.       } else if (this.debugFlash()) {
  649.          Color var8 = this.getColor();
  650.          int var7 = var4.flashCount * 2 - 1;
  651.  
  652.          for(int var6 = 0; var6 < var7; ++var6) {
  653.             this.graphics.setColor(var6 % 2 == 0 ? var4.flashColor : var8);
  654.             this.graphics.fillPolygon(var1, var2, var3);
  655.             Toolkit.getDefaultToolkit().sync();
  656.             this.sleep(var4.flashTime);
  657.          }
  658.  
  659.          this.graphics.setColor(var8);
  660.       }
  661.  
  662.       this.graphics.fillPolygon(var1, var2, var3);
  663.    }
  664.  
  665.    public void fillRect(int var1, int var2, int var3, int var4) {
  666.       DebugGraphicsInfo var5 = info();
  667.       if (this.debugLog()) {
  668.          info().log(this.toShortString() + " Filling rect: " + new Rectangle(var1, var2, var3, var4));
  669.       }
  670.  
  671.       if (this.isDrawingBuffer()) {
  672.          if (this.debugBuffered()) {
  673.             Graphics var6 = this.debugGraphics();
  674.             var6.fillRect(var1, var2, var3, var4);
  675.             var6.dispose();
  676.          }
  677.       } else if (this.debugFlash()) {
  678.          Color var9 = this.getColor();
  679.          int var8 = var5.flashCount * 2 - 1;
  680.  
  681.          for(int var7 = 0; var7 < var8; ++var7) {
  682.             this.graphics.setColor(var7 % 2 == 0 ? var5.flashColor : var9);
  683.             this.graphics.fillRect(var1, var2, var3, var4);
  684.             Toolkit.getDefaultToolkit().sync();
  685.             this.sleep(var5.flashTime);
  686.          }
  687.  
  688.          this.graphics.setColor(var9);
  689.       }
  690.  
  691.       this.graphics.fillRect(var1, var2, var3, var4);
  692.    }
  693.  
  694.    public void fillRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  695.       DebugGraphicsInfo var7 = info();
  696.       if (this.debugLog()) {
  697.          info().log(this.toShortString() + " Filling round rect: " + new Rectangle(var1, var2, var3, var4) + " arcWidth: " + var5 + " archHeight: " + var6);
  698.       }
  699.  
  700.       if (this.isDrawingBuffer()) {
  701.          if (this.debugBuffered()) {
  702.             Graphics var8 = this.debugGraphics();
  703.             var8.fillRoundRect(var1, var2, var3, var4, var5, var6);
  704.             var8.dispose();
  705.          }
  706.       } else if (this.debugFlash()) {
  707.          Color var11 = this.getColor();
  708.          int var10 = var7.flashCount * 2 - 1;
  709.  
  710.          for(int var9 = 0; var9 < var10; ++var9) {
  711.             this.graphics.setColor(var9 % 2 == 0 ? var7.flashColor : var11);
  712.             this.graphics.fillRoundRect(var1, var2, var3, var4, var5, var6);
  713.             Toolkit.getDefaultToolkit().sync();
  714.             this.sleep(var7.flashTime);
  715.          }
  716.  
  717.          this.graphics.setColor(var11);
  718.       }
  719.  
  720.       this.graphics.fillRoundRect(var1, var2, var3, var4, var5, var6);
  721.    }
  722.  
  723.    public static Color flashColor() {
  724.       return info().flashColor;
  725.    }
  726.  
  727.    public static int flashCount() {
  728.       return info().flashCount;
  729.    }
  730.  
  731.    public static int flashTime() {
  732.       return info().flashTime;
  733.    }
  734.  
  735.    public Shape getClip() {
  736.       return this.graphics.getClip();
  737.    }
  738.  
  739.    public Rectangle getClipBounds() {
  740.       return this.graphics.getClipBounds();
  741.    }
  742.  
  743.    public Color getColor() {
  744.       return this.graphics.getColor();
  745.    }
  746.  
  747.    public int getDebugOptions() {
  748.       return this.debugOptions;
  749.    }
  750.  
  751.    static int getDebugOptions(JComponent var0) {
  752.       DebugGraphicsInfo var1 = info();
  753.       return var1 == null ? 0 : var1.getDebugOptions(var0);
  754.    }
  755.  
  756.    public Font getFont() {
  757.       return this.graphics.getFont();
  758.    }
  759.  
  760.    public FontMetrics getFontMetrics() {
  761.       return this.graphics.getFontMetrics();
  762.    }
  763.  
  764.    public FontMetrics getFontMetrics(Font var1) {
  765.       return this.graphics.getFontMetrics(var1);
  766.    }
  767.  
  768.    static DebugGraphicsInfo info() {
  769.       DebugGraphicsInfo var0 = (DebugGraphicsInfo)SwingUtilities.appContextGet(debugGraphicsInfoKey);
  770.       if (var0 == null) {
  771.          var0 = new DebugGraphicsInfo();
  772.          SwingUtilities.appContextPut(debugGraphicsInfoKey, var0);
  773.       }
  774.  
  775.       return var0;
  776.    }
  777.  
  778.    public boolean isDrawingBuffer() {
  779.       return this.buffer != null;
  780.    }
  781.  
  782.    public static PrintStream logStream() {
  783.       return info().stream;
  784.    }
  785.  
  786.    String pointToString(int var1, int var2) {
  787.       StringBuffer var3 = new StringBuffer("(" + var1 + ", " + var2 + ")");
  788.       return var3.toString();
  789.    }
  790.  
  791.    public void setClip(int var1, int var2, int var3, int var4) {
  792.       this.graphics.setClip(var1, var2, var3, var4);
  793.       if (this.debugLog()) {
  794.          info().log(this.toShortString() + " Setting new clipRect: " + this.graphics.getClip());
  795.       }
  796.  
  797.    }
  798.  
  799.    public void setClip(Shape var1) {
  800.       this.graphics.setClip(var1);
  801.       if (this.debugLog()) {
  802.          info().log(this.toShortString() + " Setting new clipRect: " + this.graphics.getClip());
  803.       }
  804.  
  805.    }
  806.  
  807.    public void setColor(Color var1) {
  808.       if (this.debugLog()) {
  809.          info().log(this.toShortString() + " Setting color: " + var1);
  810.       }
  811.  
  812.       this.graphics.setColor(var1);
  813.    }
  814.  
  815.    public void setDebugOptions(int var1) {
  816.       if (var1 != 0) {
  817.          if (var1 == -1) {
  818.             if (this.debugOptions != 0) {
  819.                System.err.println(this.toShortString() + " Disabling debug");
  820.                this.debugOptions = 0;
  821.             }
  822.          } else if (this.debugOptions != var1) {
  823.             this.debugOptions |= var1;
  824.             if (this.debugLog()) {
  825.                System.err.println(this.toShortString() + " Enabling debug");
  826.             }
  827.          }
  828.       }
  829.  
  830.    }
  831.  
  832.    static void setDebugOptions(JComponent var0, int var1) {
  833.       info().setDebugOptions(var0, var1);
  834.    }
  835.  
  836.    public static void setFlashColor(Color var0) {
  837.       info().flashColor = var0;
  838.    }
  839.  
  840.    public static void setFlashCount(int var0) {
  841.       info().flashCount = var0;
  842.    }
  843.  
  844.    public static void setFlashTime(int var0) {
  845.       info().flashTime = var0;
  846.    }
  847.  
  848.    public void setFont(Font var1) {
  849.       if (this.debugLog()) {
  850.          info().log(this.toShortString() + " Setting font: " + var1);
  851.       }
  852.  
  853.       this.graphics.setFont(var1);
  854.    }
  855.  
  856.    public static void setLogStream(PrintStream var0) {
  857.       info().stream = var0;
  858.    }
  859.  
  860.    public void setPaintMode() {
  861.       if (this.debugLog()) {
  862.          info().log(this.toShortString() + " Setting paint mode");
  863.       }
  864.  
  865.       this.graphics.setPaintMode();
  866.    }
  867.  
  868.    public void setXORMode(Color var1) {
  869.       if (this.debugLog()) {
  870.          info().log(this.toShortString() + " Setting XOR mode: " + var1);
  871.       }
  872.  
  873.       this.graphics.setXORMode(var1);
  874.    }
  875.  
  876.    static int shouldComponentDebug(JComponent var0) {
  877.       DebugGraphicsInfo var1 = info();
  878.       if (var1 == null) {
  879.          return 0;
  880.       } else {
  881.          Object var2 = var0;
  882.  
  883.          int var3;
  884.          for(var3 = 0; var2 != null && var2 instanceof JComponent; var2 = ((Component)var2).getParent()) {
  885.             var3 |= var1.getDebugOptions((JComponent)var2);
  886.          }
  887.  
  888.          return var3;
  889.       }
  890.    }
  891.  
  892.    final void sleep(int var1) {
  893.       try {
  894.          Thread.sleep((long)var1);
  895.       } catch (Exception var2) {
  896.       }
  897.  
  898.    }
  899.  
  900.    String toShortString() {
  901.       StringBuffer var1 = new StringBuffer("Graphics" + (this.isDrawingBuffer() ? "<B>" : "") + "(" + this.graphicsID + "-" + this.debugOptions + ")");
  902.       return var1.toString();
  903.    }
  904.  
  905.    public void translate(int var1, int var2) {
  906.       if (this.debugLog()) {
  907.          info().log(this.toShortString() + " Translating by: " + new Point(var1, var2));
  908.       }
  909.  
  910.       this.xOffset += var1;
  911.       this.yOffset += var2;
  912.       this.graphics.translate(var1, var2);
  913.    }
  914. }
  915.