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