home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 139 / dpcs0999.iso / Web / CFserver / data1.cab / Java / CFJava.cab / CFJavaRuntime.cab / netscape / application / DebugGraphics.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-10-01  |  13.2 KB  |  724 lines

  1. package netscape.application;
  2.  
  3. import java.awt.image.FilteredImageSource;
  4. import java.awt.image.ImageProducer;
  5. import java.io.PrintStream;
  6.  
  7. public class DebugGraphics extends Graphics {
  8.    static ExternalWindow debugWindow;
  9.    public static final int LOG_OPTION = 1;
  10.    public static final int FLASH_OPTION = 2;
  11.    public static final int BUFFERED_OPTION = 4;
  12.    public static final int NONE_OPTION = -1;
  13.  
  14.    public DebugGraphics(View var1) {
  15.       super(var1);
  16.       this.setDebugOptions(var1.shouldDebugGraphics());
  17.    }
  18.  
  19.    public DebugGraphics(Bitmap var1) {
  20.       super(var1);
  21.    }
  22.  
  23.    public static void setFlashColor(Color var0) {
  24.       info().flashColor = var0;
  25.    }
  26.  
  27.    public static Color flashColor() {
  28.       return info().flashColor;
  29.    }
  30.  
  31.    public static void setFlashTime(int var0) {
  32.       info().flashTime = var0;
  33.    }
  34.  
  35.    public static int flashTime() {
  36.       return info().flashTime;
  37.    }
  38.  
  39.    public static void setFlashCount(int var0) {
  40.       info().flashCount = var0;
  41.    }
  42.  
  43.    public static int flashCount() {
  44.       return info().flashCount;
  45.    }
  46.  
  47.    public static void setLogStream(PrintStream var0) {
  48.       info().stream = var0;
  49.    }
  50.  
  51.    public static PrintStream logStream() {
  52.       return info().stream;
  53.    }
  54.  
  55.    public void pushState() {
  56.       if (((Graphics)this).state().debugLog()) {
  57.          info().log(((Graphics)this).toShortString() + " -> state");
  58.       }
  59.  
  60.       super.pushState();
  61.    }
  62.  
  63.    public void popState() {
  64.       if (((Graphics)this).state().debugLog()) {
  65.          info().log(((Graphics)this).toShortString() + " <- state");
  66.       }
  67.  
  68.       super.popState();
  69.    }
  70.  
  71.    public void setFont(Font var1) {
  72.       if (((Graphics)this).state().debugLog()) {
  73.          info().log(((Graphics)this).toShortString() + " Setting font: " + var1);
  74.       }
  75.  
  76.       super.setFont(var1);
  77.    }
  78.  
  79.    public void setColor(Color var1) {
  80.       if (((Graphics)this).state().debugLog()) {
  81.          info().log(((Graphics)this).toShortString() + " Setting color: " + var1);
  82.       }
  83.  
  84.       super.setColor(var1);
  85.    }
  86.  
  87.    public void translate(int var1, int var2) {
  88.       GraphicsState var3 = ((Graphics)this).state();
  89.       if (var3.debugLog()) {
  90.          info().log(((Graphics)this).toShortString() + " Translating by: " + new Point(var1, var2) + " to: " + new Point(var1 + var3.xOffset, var2 + var3.yOffset));
  91.       }
  92.  
  93.       super.translate(var1, var2);
  94.    }
  95.  
  96.    public void setClipRect(Rect var1, boolean var2) {
  97.       ((Graphics)this).state();
  98.       super.setClipRect(var1, var2);
  99.       if (((Graphics)this).state().debugLog()) {
  100.          info().log(((Graphics)this).toShortString() + " Setting clipRect: " + var1 + " New clipRect: " + ((Graphics)this).clipRect());
  101.       }
  102.  
  103.    }
  104.  
  105.    public void setPaintMode() {
  106.       if (((Graphics)this).state().debugLog()) {
  107.          info().log(((Graphics)this).toShortString() + " Setting paint mode");
  108.       }
  109.  
  110.       super.setPaintMode();
  111.    }
  112.  
  113.    public void setXORMode(Color var1) {
  114.       if (((Graphics)this).state().debugLog()) {
  115.          info().log(((Graphics)this).toShortString() + " Setting XOR mode: " + var1);
  116.       }
  117.  
  118.       super.setXORMode(var1);
  119.    }
  120.  
  121.    public void drawRect(int var1, int var2, int var3, int var4) {
  122.       DebugGraphicsInfo var5 = info();
  123.       GraphicsState var6 = ((Graphics)this).state();
  124.       if (var6.debugLog()) {
  125.          info().log(((Graphics)this).toShortString() + " Drawing rect: " + new Rect(var1, var2, var3, var4));
  126.       }
  127.  
  128.       if (((Graphics)this).isDrawingBuffer()) {
  129.          if (var6.debugBuffered()) {
  130.             Graphics var7 = this.debugGraphics();
  131.             var7.drawRect(var1, var2, var3, var4);
  132.             var7.dispose();
  133.          }
  134.       } else if (var6.debugFlash()) {
  135.          Color var10 = var6.color;
  136.          int var9 = var5.flashCount * 2 - 1;
  137.  
  138.          for(int var8 = 0; var8 < var9; ++var8) {
  139.             super.setColor(var8 % 2 == 0 ? var5.flashColor : var10);
  140.             super.drawRect(var1, var2, var3, var4);
  141.             AWTCompatibility.awtToolkit().sync();
  142.             this.sleep(var5.flashTime);
  143.          }
  144.  
  145.          super.setColor(var10);
  146.       }
  147.  
  148.       super.drawRect(var1, var2, var3, var4);
  149.    }
  150.  
  151.    public void fillRect(int var1, int var2, int var3, int var4) {
  152.       DebugGraphicsInfo var5 = info();
  153.       GraphicsState var6 = ((Graphics)this).state();
  154.       if (var6.debugLog()) {
  155.          info().log(((Graphics)this).toShortString() + " Filling rect: " + new Rect(var1, var2, var3, var4));
  156.       }
  157.  
  158.       if (((Graphics)this).isDrawingBuffer()) {
  159.          if (var6.debugBuffered()) {
  160.             Graphics var7 = this.debugGraphics();
  161.             var7.fillRect(var1, var2, var3, var4);
  162.             var7.dispose();
  163.          }
  164.       } else if (var6.debugFlash()) {
  165.          Color var10 = var6.color;
  166.          int var9 = var5.flashCount * 2 - 1;
  167.  
  168.          for(int var8 = 0; var8 < var9; ++var8) {
  169.             super.setColor(var8 % 2 == 0 ? var5.flashColor : var10);
  170.             super.fillRect(var1, var2, var3, var4);
  171.             AWTCompatibility.awtToolkit().sync();
  172.             this.sleep(var5.flashTime);
  173.          }
  174.  
  175.          super.setColor(var10);
  176.       }
  177.  
  178.       super.fillRect(var1, var2, var3, var4);
  179.    }
  180.  
  181.    public void drawRoundedRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  182.       DebugGraphicsInfo var7 = info();
  183.       GraphicsState var8 = ((Graphics)this).state();
  184.       if (var8.debugLog()) {
  185.          info().log(((Graphics)this).toShortString() + " Drawing rounded rect: " + new Rect(var1, var2, var3, var4) + " arcWidth: " + var5 + " archHeight: " + var6);
  186.       }
  187.  
  188.       if (((Graphics)this).isDrawingBuffer()) {
  189.          if (var8.debugBuffered()) {
  190.             Graphics var9 = this.debugGraphics();
  191.             var9.drawRoundedRect(var1, var2, var3, var4, var5, var6);
  192.             var9.dispose();
  193.          }
  194.       } else if (var8.debugFlash()) {
  195.          Color var12 = var8.color;
  196.          int var11 = var7.flashCount * 2 - 1;
  197.  
  198.          for(int var10 = 0; var10 < var11; ++var10) {
  199.             super.setColor(var10 % 2 == 0 ? var7.flashColor : var12);
  200.             super.drawRoundedRect(var1, var2, var3, var4, var5, var6);
  201.             AWTCompatibility.awtToolkit().sync();
  202.             this.sleep(var7.flashTime);
  203.          }
  204.  
  205.          super.setColor(var12);
  206.       }
  207.  
  208.       super.drawRoundedRect(var1, var2, var3, var4, var5, var6);
  209.    }
  210.  
  211.    public void fillRoundedRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  212.       DebugGraphicsInfo var7 = info();
  213.       GraphicsState var8 = ((Graphics)this).state();
  214.       if (var8.debugLog()) {
  215.          info().log(((Graphics)this).toShortString() + " Drawing rounded rect: " + new Rect(var1, var2, var3, var4) + " arcWidth: " + var5 + " archHeight: " + var6);
  216.       }
  217.  
  218.       if (((Graphics)this).isDrawingBuffer()) {
  219.          if (var8.debugBuffered()) {
  220.             Graphics var9 = this.debugGraphics();
  221.             var9.fillRoundedRect(var1, var2, var3, var4, var5, var6);
  222.             var9.dispose();
  223.          }
  224.       } else if (var8.debugFlash()) {
  225.          Color var12 = var8.color;
  226.          int var11 = var7.flashCount * 2 - 1;
  227.  
  228.          for(int var10 = 0; var10 < var11; ++var10) {
  229.             super.setColor(var10 % 2 == 0 ? var7.flashColor : var12);
  230.             super.fillRoundedRect(var1, var2, var3, var4, var5, var6);
  231.             AWTCompatibility.awtToolkit().sync();
  232.             this.sleep(var7.flashTime);
  233.          }
  234.  
  235.          super.setColor(var12);
  236.       }
  237.  
  238.       super.fillRoundedRect(var1, var2, var3, var4, var5, var6);
  239.    }
  240.  
  241.    public void drawLine(int var1, int var2, int var3, int var4) {
  242.       DebugGraphicsInfo var5 = info();
  243.       GraphicsState var6 = ((Graphics)this).state();
  244.       if (var6.debugLog()) {
  245.          info().log(((Graphics)this).toShortString() + " Drawing line: " + new Rect(var1, var2, var3, var4));
  246.       }
  247.  
  248.       if (((Graphics)this).isDrawingBuffer()) {
  249.          if (var6.debugBuffered()) {
  250.             Graphics var7 = this.debugGraphics();
  251.             var7.drawLine(var1, var2, var3, var4);
  252.             var7.dispose();
  253.          }
  254.       } else if (var6.debugFlash()) {
  255.          Color var10 = var6.color;
  256.          int var9 = var5.flashCount * 2 - 1;
  257.  
  258.          for(int var8 = 0; var8 < var9; ++var8) {
  259.             super.setColor(var8 % 2 == 0 ? var5.flashColor : var10);
  260.             super.drawLine(var1, var2, var3, var4);
  261.             AWTCompatibility.awtToolkit().sync();
  262.             this.sleep(var5.flashTime);
  263.          }
  264.  
  265.          super.setColor(var10);
  266.       }
  267.  
  268.       super.drawLine(var1, var2, var3, var4);
  269.    }
  270.  
  271.    public void drawPoint(int var1, int var2) {
  272.       DebugGraphicsInfo var3 = info();
  273.       GraphicsState var4 = ((Graphics)this).state();
  274.       if (var4.debugLog()) {
  275.          info().log(((Graphics)this).toShortString() + " Drawing point: " + new Point(var1, var2));
  276.       }
  277.  
  278.       if (((Graphics)this).isDrawingBuffer()) {
  279.          if (var4.debugBuffered()) {
  280.             Graphics var5 = this.debugGraphics();
  281.             var5.drawLine(var1, var2, var1, var2);
  282.             var5.dispose();
  283.          }
  284.       } else if (var4.debugFlash()) {
  285.          Color var8 = var4.color;
  286.          int var7 = var3.flashCount * 2 - 1;
  287.  
  288.          for(int var6 = 0; var6 < var7; ++var6) {
  289.             super.setColor(var6 % 2 == 0 ? var3.flashColor : var8);
  290.             super.drawLine(var1, var2, var1, var2);
  291.             AWTCompatibility.awtToolkit().sync();
  292.             this.sleep(var3.flashTime);
  293.          }
  294.  
  295.          super.setColor(var8);
  296.       }
  297.  
  298.       super.drawLine(var1, var2, var1, var2);
  299.    }
  300.  
  301.    public void drawOval(int var1, int var2, int var3, int var4) {
  302.       DebugGraphicsInfo var5 = info();
  303.       GraphicsState var6 = ((Graphics)this).state();
  304.       if (var6.debugLog()) {
  305.          info().log(((Graphics)this).toShortString() + " Drawing oval: " + new Rect(var1, var2, var3, var4));
  306.       }
  307.  
  308.       if (((Graphics)this).isDrawingBuffer()) {
  309.          if (var6.debugBuffered()) {
  310.             Graphics var7 = this.debugGraphics();
  311.             var7.drawOval(var1, var2, var3, var4);
  312.             var7.dispose();
  313.          }
  314.       } else if (var6.debugFlash()) {
  315.          Color var10 = var6.color;
  316.          int var9 = var5.flashCount * 2 - 1;
  317.  
  318.          for(int var8 = 0; var8 < var9; ++var8) {
  319.             super.setColor(var8 % 2 == 0 ? var5.flashColor : var10);
  320.             super.drawOval(var1, var2, var3, var4);
  321.             AWTCompatibility.awtToolkit().sync();
  322.             this.sleep(var5.flashTime);
  323.          }
  324.  
  325.          super.setColor(var10);
  326.       }
  327.  
  328.       super.drawOval(var1, var2, var3, var4);
  329.    }
  330.  
  331.    public void fillOval(int var1, int var2, int var3, int var4) {
  332.       DebugGraphicsInfo var5 = info();
  333.       GraphicsState var6 = ((Graphics)this).state();
  334.       if (var6.debugLog()) {
  335.          info().log(((Graphics)this).toShortString() + " Filling oval: " + new Rect(var1, var2, var3, var4));
  336.       }
  337.  
  338.       if (((Graphics)this).isDrawingBuffer()) {
  339.          if (var6.debugBuffered()) {
  340.             Graphics var7 = this.debugGraphics();
  341.             var7.fillOval(var1, var2, var3, var4);
  342.             var7.dispose();
  343.          }
  344.       } else if (var6.debugFlash()) {
  345.          Color var10 = var6.color;
  346.          int var9 = var5.flashCount * 2 - 1;
  347.  
  348.          for(int var8 = 0; var8 < var9; ++var8) {
  349.             super.setColor(var8 % 2 == 0 ? var5.flashColor : var10);
  350.             super.fillOval(var1, var2, var3, var4);
  351.             AWTCompatibility.awtToolkit().sync();
  352.             this.sleep(var5.flashTime);
  353.          }
  354.  
  355.          super.setColor(var10);
  356.       }
  357.  
  358.       super.fillOval(var1, var2, var3, var4);
  359.    }
  360.  
  361.    public void drawArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  362.       DebugGraphicsInfo var7 = info();
  363.       GraphicsState var8 = ((Graphics)this).state();
  364.       if (var8.debugLog()) {
  365.          info().log(((Graphics)this).toShortString() + " Drawing arc: " + new Rect(var1, var2, var3, var4) + " startAngle: " + var5 + " arcAngle: " + var6);
  366.       }
  367.  
  368.       if (((Graphics)this).isDrawingBuffer()) {
  369.          if (var8.debugBuffered()) {
  370.             Graphics var9 = this.debugGraphics();
  371.             var9.drawArc(var1, var2, var3, var4, var5, var6);
  372.             var9.dispose();
  373.          }
  374.       } else if (var8.debugFlash()) {
  375.          Color var12 = var8.color;
  376.          int var11 = var7.flashCount * 2 - 1;
  377.  
  378.          for(int var10 = 0; var10 < var11; ++var10) {
  379.             super.setColor(var10 % 2 == 0 ? var7.flashColor : var12);
  380.             super.drawArc(var1, var2, var3, var4, var5, var6);
  381.             AWTCompatibility.awtToolkit().sync();
  382.             this.sleep(var7.flashTime);
  383.          }
  384.  
  385.          super.setColor(var12);
  386.       }
  387.  
  388.       super.drawArc(var1, var2, var3, var4, var5, var6);
  389.    }
  390.  
  391.    public void fillArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  392.       DebugGraphicsInfo var7 = info();
  393.       GraphicsState var8 = ((Graphics)this).state();
  394.       if (var8.debugLog()) {
  395.          info().log(((Graphics)this).toShortString() + " Filling arc: " + new Rect(var1, var2, var3, var4) + " startAngle: " + var5 + " arcAngle: " + var6);
  396.       }
  397.  
  398.       if (((Graphics)this).isDrawingBuffer()) {
  399.          if (var8.debugBuffered()) {
  400.             Graphics var9 = this.debugGraphics();
  401.             var9.fillArc(var1, var2, var3, var4, var5, var6);
  402.             var9.dispose();
  403.          }
  404.       } else if (var8.debugFlash()) {
  405.          Color var12 = var8.color;
  406.          int var11 = var7.flashCount * 2 - 1;
  407.  
  408.          for(int var10 = 0; var10 < var11; ++var10) {
  409.             super.setColor(var10 % 2 == 0 ? var7.flashColor : var12);
  410.             super.fillArc(var1, var2, var3, var4, var5, var6);
  411.             AWTCompatibility.awtToolkit().sync();
  412.             this.sleep(var7.flashTime);
  413.          }
  414.  
  415.          super.setColor(var12);
  416.       }
  417.  
  418.       super.fillArc(var1, var2, var3, var4, var5, var6);
  419.    }
  420.  
  421.    public void drawPolygon(int[] var1, int[] var2, int var3) {
  422.       DebugGraphicsInfo var4 = info();
  423.       GraphicsState var5 = ((Graphics)this).state();
  424.       if (var5.debugLog()) {
  425.          info().log(((Graphics)this).toShortString() + " Drawing polygon: " + " nPoints: " + var3 + " X's: " + var1 + " Y's: " + var2);
  426.       }
  427.  
  428.       if (((Graphics)this).isDrawingBuffer()) {
  429.          if (var5.debugBuffered()) {
  430.             Graphics var6 = this.debugGraphics();
  431.             var6.drawPolygon(var1, var2, var3);
  432.             var6.dispose();
  433.          }
  434.       } else if (var5.debugFlash()) {
  435.          Color var9 = var5.color;
  436.          int var8 = var4.flashCount * 2 - 1;
  437.  
  438.          for(int var7 = 0; var7 < var8; ++var7) {
  439.             super.setColor(var7 % 2 == 0 ? var4.flashColor : var9);
  440.             super.drawPolygon(var1, var2, var3);
  441.             AWTCompatibility.awtToolkit().sync();
  442.             this.sleep(var4.flashTime);
  443.          }
  444.  
  445.          super.setColor(var9);
  446.       }
  447.  
  448.       super.drawPolygon(var1, var2, var3);
  449.    }
  450.  
  451.    public void fillPolygon(int[] var1, int[] var2, int var3) {
  452.       DebugGraphicsInfo var4 = info();
  453.       GraphicsState var5 = ((Graphics)this).state();
  454.       if (var5.debugLog()) {
  455.          info().log(((Graphics)this).toShortString() + " Filling polygon: " + " nPoints: " + var3 + " X's: " + var1 + " Y's: " + var2);
  456.       }
  457.  
  458.       if (((Graphics)this).isDrawingBuffer()) {
  459.          if (var5.debugBuffered()) {
  460.             Graphics var6 = this.debugGraphics();
  461.             var6.fillPolygon(var1, var2, var3);
  462.             var6.dispose();
  463.          }
  464.       } else if (var5.debugFlash()) {
  465.          Color var9 = var5.color;
  466.          int var8 = var4.flashCount * 2 - 1;
  467.  
  468.          for(int var7 = 0; var7 < var8; ++var7) {
  469.             super.setColor(var7 % 2 == 0 ? var4.flashColor : var9);
  470.             super.fillPolygon(var1, var2, var3);
  471.             AWTCompatibility.awtToolkit().sync();
  472.             this.sleep(var4.flashTime);
  473.          }
  474.  
  475.          super.setColor(var9);
  476.       }
  477.  
  478.       super.fillPolygon(var1, var2, var3);
  479.    }
  480.  
  481.    public void drawBitmapAt(Bitmap var1, int var2, int var3) {
  482.       DebugGraphicsInfo var4 = info();
  483.       GraphicsState var5 = ((Graphics)this).state();
  484.       if (var5.debugLog()) {
  485.          info().log(((Graphics)this).toShortString() + " Drawing bitmap: " + var1 + " at: " + new Point(var2, var3));
  486.       }
  487.  
  488.       if (((Graphics)this).isDrawingBuffer()) {
  489.          if (var5.debugBuffered()) {
  490.             Graphics var6 = this.debugGraphics();
  491.             var6.drawBitmapAt(var1, var2, var3);
  492.             var6.dispose();
  493.          }
  494.       } else if (var5.debugFlash()) {
  495.          int var7 = var4.flashCount * 2 - 1;
  496.          ImageProducer var8 = AWTCompatibility.awtImageProducerForBitmap(var1);
  497.          FilteredImageSource var9 = new FilteredImageSource(var8, new DebugGraphicsColorFilter(var4.flashColor));
  498.          Bitmap var10 = AWTCompatibility.bitmapForAWTImageProducer(var9);
  499.  
  500.          for(int var11 = 0; var11 < var7; ++var11) {
  501.             super.drawBitmapAt(var11 % 2 == 0 ? var10 : var1, var2, var3);
  502.             AWTCompatibility.awtToolkit().sync();
  503.             this.sleep(var4.flashTime);
  504.          }
  505.       }
  506.  
  507.       super.drawBitmapAt(var1, var2, var3);
  508.    }
  509.  
  510.    public void drawBitmapScaled(Bitmap var1, int var2, int var3, int var4, int var5) {
  511.       DebugGraphicsInfo var6 = info();
  512.       GraphicsState var7 = ((Graphics)this).state();
  513.       if (var7.debugLog()) {
  514.          info().log(((Graphics)this).toShortString() + " Drawing scaled bitmap: " + var1 + " in rect: " + new Rect(var2, var3, var4, var5));
  515.       }
  516.  
  517.       if (((Graphics)this).isDrawingBuffer()) {
  518.          if (var7.debugBuffered()) {
  519.             Graphics var8 = this.debugGraphics();
  520.             var8.drawBitmapScaled(var1, var2, var3, var4, var5);
  521.             var8.dispose();
  522.          }
  523.       } else if (var7.debugFlash()) {
  524.          int var9 = var6.flashCount * 2 - 1;
  525.          ImageProducer var10 = AWTCompatibility.awtImageProducerForBitmap(var1);
  526.          FilteredImageSource var11 = new FilteredImageSource(var10, new DebugGraphicsColorFilter(var6.flashColor));
  527.          Bitmap var12 = AWTCompatibility.bitmapForAWTImageProducer(var11);
  528.  
  529.          for(int var13 = 0; var13 < var9; ++var13) {
  530.             super.drawBitmapScaled(var13 % 2 == 0 ? var12 : var1, var2, var3, var4, var5);
  531.             AWTCompatibility.awtToolkit().sync();
  532.             this.sleep(var6.flashTime);
  533.          }
  534.       }
  535.  
  536.       super.drawBitmapScaled(var1, var2, var3, var4, var5);
  537.    }
  538.  
  539.    public void drawString(String var1, int var2, int var3) {
  540.       DebugGraphicsInfo var4 = info();
  541.       GraphicsState var5 = ((Graphics)this).state();
  542.       if (var5.debugOptions != 0 && (var5.font == null || !var5.font.wasDownloaded())) {
  543.          if (var5.debugLog()) {
  544.             info().log(((Graphics)this).toShortString() + " Drawing string: \"" + var1 + "\" at: " + new Point(var2, var3));
  545.          }
  546.  
  547.          if (((Graphics)this).isDrawingBuffer()) {
  548.             if (var5.debugBuffered()) {
  549.                Graphics var6 = this.debugGraphics();
  550.                var6.drawString(var1, var2, var3);
  551.                var6.dispose();
  552.             }
  553.          } else if (var5.debugFlash()) {
  554.             Color var9 = var5.color;
  555.             int var8 = var4.flashCount * 2 - 1;
  556.  
  557.             for(int var7 = 0; var7 < var8; ++var7) {
  558.                super.setColor(var7 % 2 == 0 ? var4.flashColor : var9);
  559.                super.drawString(var1, var2, var3);
  560.                AWTCompatibility.awtToolkit().sync();
  561.                this.sleep(var4.flashTime);
  562.             }
  563.  
  564.             super.setColor(var9);
  565.          }
  566.       }
  567.  
  568.       super.drawString(var1, var2, var3);
  569.    }
  570.  
  571.    public void drawBytes(byte[] var1, int var2, int var3, int var4, int var5) {
  572.       DebugGraphicsInfo var6 = info();
  573.       GraphicsState var7 = ((Graphics)this).state();
  574.       if (var7.debugOptions != 0) {
  575.          Font var8 = ((Graphics)this).font();
  576.          if (var8 == null || !var8.wasDownloaded()) {
  577.             if (var7.debugLog()) {
  578.                info().log(((Graphics)this).toShortString() + " Drawing bytes at: " + new Point(var4, var5));
  579.             }
  580.  
  581.             if (((Graphics)this).isDrawingBuffer()) {
  582.                if (var7.debugBuffered()) {
  583.                   Graphics var9 = this.debugGraphics();
  584.                   var9.drawBytes(var1, var2, var3, var4, var5);
  585.                   var9.dispose();
  586.                }
  587.             } else if (var7.debugFlash()) {
  588.                Color var12 = var7.color;
  589.                int var11 = var6.flashCount * 2 - 1;
  590.  
  591.                for(int var10 = 0; var10 < var11; ++var10) {
  592.                   super.setColor(var10 % 2 == 0 ? var6.flashColor : var12);
  593.                   super.drawBytes(var1, var2, var3, var4, var5);
  594.                   AWTCompatibility.awtToolkit().sync();
  595.                   this.sleep(var6.flashTime);
  596.                }
  597.  
  598.                super.setColor(var12);
  599.             }
  600.          }
  601.       }
  602.  
  603.       super.drawBytes(var1, var2, var3, var4, var5);
  604.    }
  605.  
  606.    public void drawChars(char[] var1, int var2, int var3, int var4, int var5) {
  607.       DebugGraphicsInfo var6 = info();
  608.       GraphicsState var7 = ((Graphics)this).state();
  609.       if (var7.debugOptions != 0) {
  610.          Font var8 = ((Graphics)this).font();
  611.          if (var8 == null || !var8.wasDownloaded()) {
  612.             if (var7.debugLog()) {
  613.                info().log(((Graphics)this).toShortString() + " Drawing chars at " + new Point(var4, var5));
  614.             }
  615.  
  616.             if (((Graphics)this).isDrawingBuffer()) {
  617.                if (var7.debugBuffered()) {
  618.                   Graphics var9 = this.debugGraphics();
  619.                   var9.drawChars(var1, var2, var3, var4, var5);
  620.                   var9.dispose();
  621.                }
  622.             } else if (var7.debugFlash()) {
  623.                Color var12 = var7.color;
  624.                int var11 = var6.flashCount * 2 - 1;
  625.  
  626.                for(int var10 = 0; var10 < var11; ++var10) {
  627.                   super.setColor(var10 % 2 == 0 ? var6.flashColor : var12);
  628.                   super.drawChars(var1, var2, var3, var4, var5);
  629.                   AWTCompatibility.awtToolkit().sync();
  630.                   this.sleep(var6.flashTime);
  631.                }
  632.  
  633.                super.setColor(var12);
  634.             }
  635.          }
  636.       }
  637.  
  638.       super.drawChars(var1, var2, var3, var4, var5);
  639.    }
  640.  
  641.    void copyArea(int var1, int var2, int var3, int var4, int var5, int var6) {
  642.       if (((Graphics)this).state().debugLog()) {
  643.          info().log(((Graphics)this).toShortString() + " Copying area from: " + new Rect(var1, var2, var3, var4) + " to: " + new Point(var5, var6));
  644.       }
  645.  
  646.       super.copyArea(var1, var2, var3, var4, var5, var6);
  647.    }
  648.  
  649.    final void sleep(int var1) {
  650.       try {
  651.          Thread.sleep((long)var1);
  652.       } catch (Exception var2) {
  653.       }
  654.    }
  655.  
  656.    public void setDebugOptions(int var1) {
  657.       if (var1 != 0) {
  658.          GraphicsState var2 = ((Graphics)this).state();
  659.          if (var1 == -1) {
  660.             if (var2.debugOptions != 0) {
  661.                System.err.println(((Graphics)this).toShortString() + " Disabling debug");
  662.                var2.debugOptions = 0;
  663.                return;
  664.             }
  665.          } else if (var2.debugOptions != var1) {
  666.             var2.debugOptions |= var1;
  667.             if (var2.debugLog()) {
  668.                System.err.println(((Graphics)this).toShortString() + " Enabling debug");
  669.             }
  670.          }
  671.       }
  672.  
  673.    }
  674.  
  675.    public int debugOptions() {
  676.       return ((Graphics)this).state().debugOptions;
  677.    }
  678.  
  679.    void setDebug(View var1) {
  680.       this.setDebugOptions(Graphics.viewDebug(var1));
  681.    }
  682.  
  683.    public int debug() {
  684.       return ((Graphics)this).state().debugOptions;
  685.    }
  686.  
  687.    private Graphics debugGraphics() {
  688.       DebugGraphicsInfo var2 = info();
  689.       GraphicsState var3 = ((Graphics)this).state();
  690.       if (var2.debugWindow == null) {
  691.          var2.debugWindow = new ExternalWindow();
  692.          var2.debugWindow.setResizable(false);
  693.       }
  694.  
  695.       ExternalWindow var6 = var2.debugWindow;
  696.       Size var4 = var6.windowSizeForContentSize(super.primaryClipRect.width, super.primaryClipRect.height);
  697.       Rect var5 = var6.bounds();
  698.       if (var5.width > var4.width) {
  699.          var4.width = var5.width;
  700.       }
  701.  
  702.       if (var5.height > var4.height) {
  703.          var4.height = var5.height;
  704.       }
  705.  
  706.       var6.sizeTo(var4.width, var4.height);
  707.       var6.show();
  708.       DebugGraphics var1 = new DebugGraphics(var6.rootView());
  709.       ((Graphics)var1).setFont(var3.font);
  710.       ((Graphics)var1).setColor(var3.color);
  711.       ((Graphics)var1).translate(var3.xOffset, var3.yOffset);
  712.       ((Graphics)var1).setClipRect(((Graphics)this).clipRect());
  713.       if (var3.debugFlash()) {
  714.          ((Graphics)var1).setDebugOptions(2);
  715.       }
  716.  
  717.       return var1;
  718.    }
  719.  
  720.    static DebugGraphicsInfo info() {
  721.       return Graphics.info();
  722.    }
  723. }
  724.