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

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.FontMetrics;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.awt.Polygon;
  9. import java.awt.Rectangle;
  10. import java.awt.Shape;
  11. import java.awt.image.ImageObserver;
  12. import java.util.Stack;
  13.  
  14. class SwingGraphics extends Graphics implements GraphicsWrapper {
  15.    Graphics graphics;
  16.    Graphics originalGraphics;
  17.    Rectangle clipRect;
  18.    Color currentColor;
  19.    Font currentFont;
  20.    Color currentXORMode;
  21.    int translateX = 0;
  22.    int translateY = 0;
  23.    SwingGraphics previous;
  24.    private static final boolean TRACE = false;
  25.    private static final boolean VERBOSE = false;
  26.    private static final boolean DEBUG = false;
  27.    private static Stack pool = new Stack();
  28.  
  29.    static {
  30.       if (SwingUtilities.is1dot2) {
  31.          System.err.println("warning: running 1.1 version of SwingGraphics");
  32.       }
  33.  
  34.    }
  35.  
  36.    SwingGraphics(Graphics var1) {
  37.       if (var1 == null) {
  38.          Thread.dumpStack();
  39.       }
  40.  
  41.       this.init(var1);
  42.    }
  43.  
  44.    private void _changeClip(int var1, int var2, int var3, int var4, boolean var5) {
  45.       if (var5) {
  46.          this.clipRect.x = var1;
  47.          this.clipRect.y = var2;
  48.          this.clipRect.width = var3;
  49.          this.clipRect.height = var4;
  50.       } else {
  51.          SwingUtilities.computeIntersection(var1, var2, var3, var4, this.clipRect);
  52.       }
  53.  
  54.    }
  55.  
  56.    public void clearRect(int var1, int var2, int var3, int var4) {
  57.       this.graphics.clearRect(var1, var2, var3, var4);
  58.    }
  59.  
  60.    public void clipRect(int var1, int var2, int var3, int var4) {
  61.       this.graphics.clipRect(var1, var2, var3, var4);
  62.       this._changeClip(var1, var2, var3, var4, false);
  63.    }
  64.  
  65.    public void copyArea(int var1, int var2, int var3, int var4, int var5, int var6) {
  66.       this.graphics.copyArea(var1, var2, var3, var4, var5, var6);
  67.    }
  68.  
  69.    public Graphics create() {
  70.       return createSwingGraphics(this);
  71.    }
  72.  
  73.    public Graphics create(int var1, int var2, int var3, int var4) {
  74.       return createSwingGraphics(this, var1, var2, var3, var4);
  75.    }
  76.  
  77.    public static Graphics createSwingGraphics(Graphics var0) {
  78.       if (var0 == null) {
  79.          Thread.dumpStack();
  80.          return null;
  81.       } else {
  82.          SwingGraphics var1 = getRecycledSwingGraphics();
  83.          if (var1 == null) {
  84.             var1 = new SwingGraphics(var0);
  85.          } else {
  86.             var1.init(var0);
  87.          }
  88.  
  89.          return var1;
  90.       }
  91.    }
  92.  
  93.    static Graphics createSwingGraphics(Graphics var0, int var1, int var2, int var3, int var4) {
  94.       SwingGraphics var5 = (SwingGraphics)createSwingGraphics(var0);
  95.       if (var1 != 0 || var2 != 0) {
  96.          var5.translate(var1, var2);
  97.       }
  98.  
  99.       if (var5.clipRect.x != 0 || var5.clipRect.y != 0 || var5.clipRect.width != var3 || var5.clipRect.height != var4) {
  100.          int var6 = var5.clipRect.x > 0 ? var5.clipRect.x : 0;
  101.          int var7 = var5.clipRect.y > 0 ? var5.clipRect.y : 0;
  102.          int var8 = Math.min(var3, var5.clipRect.x + var5.clipRect.width) - var6;
  103.          int var9 = Math.min(var4, var5.clipRect.y + var5.clipRect.height) - var7;
  104.          var5.setClip(var6, var7, var8, var9);
  105.       }
  106.  
  107.       return var5;
  108.    }
  109.  
  110.    public void dispose() {
  111.       if (this.graphics != null) {
  112.          if (this.previous != null) {
  113.             this.resetGraphics();
  114.          } else {
  115.             this.graphics.dispose();
  116.          }
  117.       }
  118.  
  119.       this.graphics = null;
  120.       recycleSwingGraphics(this);
  121.    }
  122.  
  123.    public void draw3DRect(int var1, int var2, int var3, int var4, boolean var5) {
  124.       this.graphics.draw3DRect(var1, var2, var3, var4, var5);
  125.    }
  126.  
  127.    public void drawArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  128.       this.graphics.drawArc(var1, var2, var3, var4, var5, var6);
  129.    }
  130.  
  131.    public void drawBytes(byte[] var1, int var2, int var3, int var4, int var5) {
  132.       this.graphics.drawBytes(var1, var2, var3, var4, var5);
  133.    }
  134.  
  135.    public void drawChars(char[] var1, int var2, int var3, int var4, int var5) {
  136.       this.graphics.drawChars(var1, var2, var3, var4, var5);
  137.    }
  138.  
  139.    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) {
  140.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11);
  141.    }
  142.  
  143.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, ImageObserver var10) {
  144.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10);
  145.    }
  146.  
  147.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, Color var6, ImageObserver var7) {
  148.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7);
  149.    }
  150.  
  151.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, ImageObserver var6) {
  152.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6);
  153.    }
  154.  
  155.    public boolean drawImage(Image var1, int var2, int var3, Color var4, ImageObserver var5) {
  156.       return this.graphics.drawImage(var1, var2, var3, var4, var5);
  157.    }
  158.  
  159.    public boolean drawImage(Image var1, int var2, int var3, ImageObserver var4) {
  160.       return this.graphics.drawImage(var1, var2, var3, var4);
  161.    }
  162.  
  163.    public void drawLine(int var1, int var2, int var3, int var4) {
  164.       this.graphics.drawLine(var1, var2, var3, var4);
  165.    }
  166.  
  167.    public void drawOval(int var1, int var2, int var3, int var4) {
  168.       this.graphics.drawOval(var1, var2, var3, var4);
  169.    }
  170.  
  171.    public void drawPolygon(Polygon var1) {
  172.       this.graphics.drawPolygon(var1);
  173.    }
  174.  
  175.    public void drawPolygon(int[] var1, int[] var2, int var3) {
  176.       this.graphics.drawPolygon(var1, var2, var3);
  177.    }
  178.  
  179.    public void drawPolyline(int[] var1, int[] var2, int var3) {
  180.       this.graphics.drawPolyline(var1, var2, var3);
  181.    }
  182.  
  183.    public void drawRect(int var1, int var2, int var3, int var4) {
  184.       this.graphics.drawRect(var1, var2, var3, var4);
  185.    }
  186.  
  187.    public void drawRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  188.       this.graphics.drawRoundRect(var1, var2, var3, var4, var5, var6);
  189.    }
  190.  
  191.    public void drawString(String var1, int var2, int var3) {
  192.       this.graphics.drawString(var1, var2, var3);
  193.    }
  194.  
  195.    public void fill3DRect(int var1, int var2, int var3, int var4, boolean var5) {
  196.       this.graphics.fill3DRect(var1, var2, var3, var4, var5);
  197.    }
  198.  
  199.    public void fillArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  200.       this.graphics.fillArc(var1, var2, var3, var4, var5, var6);
  201.    }
  202.  
  203.    public void fillOval(int var1, int var2, int var3, int var4) {
  204.       this.graphics.fillOval(var1, var2, var3, var4);
  205.    }
  206.  
  207.    public void fillPolygon(Polygon var1) {
  208.       this.graphics.fillPolygon(var1);
  209.    }
  210.  
  211.    public void fillPolygon(int[] var1, int[] var2, int var3) {
  212.       this.graphics.fillPolygon(var1, var2, var3);
  213.    }
  214.  
  215.    public void fillRect(int var1, int var2, int var3, int var4) {
  216.       this.graphics.fillRect(var1, var2, var3, var4);
  217.    }
  218.  
  219.    public void fillRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  220.       this.graphics.fillRoundRect(var1, var2, var3, var4, var5, var6);
  221.    }
  222.  
  223.    public void finalize() {
  224.       this.graphics.finalize();
  225.    }
  226.  
  227.    public Shape getClip() {
  228.       return this.graphics.getClip();
  229.    }
  230.  
  231.    public Rectangle getClipBounds() {
  232.       return new Rectangle(this.clipRect);
  233.    }
  234.  
  235.    public int getClipHeight() {
  236.       return this.clipRect.height;
  237.    }
  238.  
  239.    public Rectangle getClipRect() {
  240.       return this.graphics.getClipRect();
  241.    }
  242.  
  243.    public int getClipWidth() {
  244.       return this.clipRect.width;
  245.    }
  246.  
  247.    public int getClipX() {
  248.       return this.clipRect.x;
  249.    }
  250.  
  251.    public int getClipY() {
  252.       return this.clipRect.y;
  253.    }
  254.  
  255.    public Color getColor() {
  256.       return this.currentColor;
  257.    }
  258.  
  259.    public Font getFont() {
  260.       return this.currentFont;
  261.    }
  262.  
  263.    public FontMetrics getFontMetrics() {
  264.       return this.graphics.getFontMetrics();
  265.    }
  266.  
  267.    public FontMetrics getFontMetrics(Font var1) {
  268.       return this.graphics.getFontMetrics(var1);
  269.    }
  270.  
  271.    private static SwingGraphics getRecycledSwingGraphics() {
  272.       SwingGraphics var0 = null;
  273.       Stack var1 = pool;
  274.       synchronized(var1){}
  275.  
  276.       try {
  277.          if (pool.size() > 0) {
  278.             var0 = (SwingGraphics)pool.pop();
  279.          }
  280.       } catch (Throwable var3) {
  281.          throw var3;
  282.       }
  283.  
  284.       return var0;
  285.    }
  286.  
  287.    void init(Graphics var1) {
  288.       if (var1 instanceof SwingGraphics) {
  289.          SwingGraphics var2 = (SwingGraphics)var1;
  290.          this.originalGraphics = var2.originalGraphics;
  291.          this.graphics = var2.graphics;
  292.          this.previous = var2;
  293.          if (this.clipRect == null) {
  294.             this.clipRect = new Rectangle(var2.clipRect.x, var2.clipRect.y, var2.clipRect.width, var2.clipRect.height);
  295.          } else {
  296.             this.clipRect.x = var2.clipRect.x;
  297.             this.clipRect.y = var2.clipRect.y;
  298.             this.clipRect.width = var2.clipRect.width;
  299.             this.clipRect.height = var2.clipRect.height;
  300.          }
  301.  
  302.          this.currentColor = var2.currentColor;
  303.          this.currentFont = var2.currentFont;
  304.          this.currentXORMode = var2.currentXORMode;
  305.       } else {
  306.          this.originalGraphics = var1;
  307.          this.graphics = var1.create();
  308.          this.previous = null;
  309.          Rectangle var3 = var1.getClipBounds();
  310.          if (var3 == null) {
  311.             if (this.clipRect == null) {
  312.                this.clipRect = new Rectangle(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
  313.             } else {
  314.                this.clipRect.x = this.clipRect.y = 0;
  315.                this.clipRect.width = this.clipRect.height = Integer.MAX_VALUE;
  316.             }
  317.          } else {
  318.             this.clipRect = var3;
  319.          }
  320.  
  321.          this.currentColor = var1.getColor();
  322.          this.currentFont = var1.getFont();
  323.          this.currentXORMode = null;
  324.       }
  325.  
  326.    }
  327.  
  328.    public boolean isClipIntersecting(Rectangle var1) {
  329.       return this.clipRect.x < var1.x + var1.width && this.clipRect.x + this.clipRect.width > var1.x && this.clipRect.y < var1.y + var1.height && this.clipRect.y + this.clipRect.height > var1.y ? (this.clipRect.width == 0 || this.clipRect.height == 0 || var1.width == 0 || var1.height == 0) ^ true : false;
  330.    }
  331.  
  332.    private static void recycleSwingGraphics(SwingGraphics var0) {
  333.       Stack var1 = pool;
  334.       synchronized(var1){}
  335.  
  336.       try {
  337.          pool.push(var0);
  338.       } catch (Throwable var3) {
  339.          throw var3;
  340.       }
  341.  
  342.    }
  343.  
  344.    private void resetGraphics() {
  345.       if (this.currentFont != this.previous.currentFont) {
  346.          this.setFont(this.previous.currentFont);
  347.       }
  348.  
  349.       if (this.currentColor != this.previous.currentColor) {
  350.          this.setColor(this.previous.currentColor);
  351.       }
  352.  
  353.       if (this.currentXORMode != this.previous.currentXORMode) {
  354.          if (this.previous.currentXORMode == null) {
  355.             this.setPaintMode();
  356.          } else {
  357.             this.setXORMode(this.previous.currentXORMode);
  358.          }
  359.       }
  360.  
  361.       if (this.translateX != 0 || this.translateY != 0) {
  362.          this.translate(-this.translateX, -this.translateY);
  363.       }
  364.  
  365.       if (this.clipRect.x != this.previous.clipRect.x || this.clipRect.y != this.previous.clipRect.y || this.clipRect.width != this.previous.clipRect.width || this.clipRect.height != this.previous.clipRect.height) {
  366.          this.setClip(this.previous.clipRect.x, this.previous.clipRect.y, this.previous.clipRect.width, this.previous.clipRect.height);
  367.       }
  368.  
  369.    }
  370.  
  371.    public void setClip(int var1, int var2, int var3, int var4) {
  372.       this.graphics.setClip(var1, var2, var3, var4);
  373.       this._changeClip(var1, var2, var3, var4, true);
  374.    }
  375.  
  376.    public void setClip(Shape var1) {
  377.       this.graphics.setClip(var1);
  378.       if (var1 instanceof Rectangle) {
  379.          Rectangle var2 = (Rectangle)var1;
  380.          this._changeClip(var2.x, var2.y, var2.width, var2.height, true);
  381.       }
  382.  
  383.    }
  384.  
  385.    public void setColor(Color var1) {
  386.       this.graphics.setColor(var1);
  387.       this.currentColor = var1;
  388.    }
  389.  
  390.    public void setFont(Font var1) {
  391.       this.graphics.setFont(var1);
  392.       this.currentFont = var1;
  393.    }
  394.  
  395.    public void setPaintMode() {
  396.       this.graphics.setPaintMode();
  397.       this.currentXORMode = null;
  398.    }
  399.  
  400.    public void setXORMode(Color var1) {
  401.       this.graphics.setXORMode(var1);
  402.       this.currentXORMode = var1;
  403.    }
  404.  
  405.    public Graphics subGraphics() {
  406.       return this.graphics;
  407.    }
  408.  
  409.    public String toString() {
  410.       String var1 = this.currentFont.toString();
  411.       var1 = var1.substring(var1.indexOf(91));
  412.       return "SwingGraphics(0x" + Integer.toHexString(this.hashCode()) + ") [subGraphics " + this.originalGraphics.getClass().getName() + "\n   translate [x=" + this.translateX + ",y=" + this.translateY + "] clip [x=" + this.clipRect.x + ",y=" + this.clipRect.y + ",w=" + this.clipRect.width + ",h=" + this.clipRect.height + "]\n   color [r=" + this.currentColor.getRed() + ",g=" + this.currentColor.getGreen() + ",b=" + this.currentColor.getBlue() + "] font " + var1 + "]";
  413.    }
  414.  
  415.    public void translate(int var1, int var2) {
  416.       this.graphics.translate(var1, var2);
  417.       this.translateX += var1;
  418.       this.translateY += var2;
  419.       Rectangle var10000 = this.clipRect;
  420.       var10000.x -= var1;
  421.       var10000 = this.clipRect;
  422.       var10000.y -= var2;
  423.    }
  424. }
  425.