home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / DebugGraphics.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  16.7 KB  |  911 lines

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