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

  1. package com.sun.java.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.Rectangle;
  9. import java.awt.Shape;
  10. import java.awt.image.ImageObserver;
  11. import java.util.Vector;
  12.  
  13. class SwingGraphics extends Graphics {
  14.    Graphics graphics;
  15.    Rectangle clipRect;
  16.    static final int poolSize = 20;
  17.    private static int needsSetClip = -1;
  18.    private static final Object graphicsPoolKey;
  19.    // $FF: synthetic field
  20.    static Class class$com$sun$java$swing$SwingGraphics;
  21.  
  22.    public Graphics create() {
  23.       return createSwingGraphics(this.graphics.create());
  24.    }
  25.  
  26.    Graphics subGraphics() {
  27.       return this.graphics;
  28.    }
  29.  
  30.    SwingGraphics(Graphics var1) {
  31.       this.init(var1);
  32.    }
  33.  
  34.    void init(Graphics var1) {
  35.       if (var1 == null) {
  36.          Thread.currentThread();
  37.          Thread.dumpStack();
  38.       }
  39.  
  40.       this.graphics = var1;
  41.       this.clipRect = var1.getClipBounds();
  42.       if (this.clipRect == null) {
  43.          this.clipRect = new Rectangle(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
  44.       }
  45.  
  46.    }
  47.  
  48.    public static SwingGraphics createSwingGraphics(Graphics var0) {
  49.       if (var0 == null) {
  50.          return null;
  51.       } else if (var0 instanceof SwingGraphics) {
  52.          return (SwingGraphics)var0;
  53.       } else {
  54.          SwingGraphics var1 = getRecycledSwingGraphics();
  55.          if (var1 != null) {
  56.             var1.init(var0);
  57.          } else {
  58.             var1 = new SwingGraphics(var0);
  59.          }
  60.  
  61.          return var1;
  62.       }
  63.    }
  64.  
  65.    public Graphics create(int var1, int var2, int var3, int var4) {
  66.       return createSwingGraphics(createGraphics(this.graphics, var1, var2, var3, var4));
  67.    }
  68.  
  69.    static Graphics createGraphics(Graphics var0, int var1, int var2, int var3, int var4) {
  70.       Graphics var5 = var0.create(var1, var2, var3, var4);
  71.       if (needsSetClip != 0) {
  72.          Rectangle var6 = var0.getClipBounds();
  73.          int var7 = var6.x > var1 ? var6.x - var1 : 0;
  74.          int var8 = var6.y > var2 ? var6.y - var2 : 0;
  75.          int var9 = Math.min(var1 + var3, var6.x + var6.width) - Math.max(var1, var6.x);
  76.          int var10 = Math.min(var2 + var4, var6.y + var6.height) - Math.max(var2, var6.y);
  77.          if (needsSetClip == -1 && (var1 > 0 || var2 > 0)) {
  78.             Rectangle var11 = var5.getClipBounds();
  79.             if (var11.x == var7 && var11.y == var8 && var11.width == var9 && var11.height == var10) {
  80.                needsSetClip = 0;
  81.             } else {
  82.                needsSetClip = 1;
  83.             }
  84.          }
  85.  
  86.          var5.setClip(var7, var8, var9, var10);
  87.       }
  88.  
  89.       return var5;
  90.    }
  91.  
  92.    public void translate(int var1, int var2) {
  93.       this.graphics.translate(var1, var2);
  94.    }
  95.  
  96.    public Color getColor() {
  97.       return this.graphics.getColor();
  98.    }
  99.  
  100.    public void setColor(Color var1) {
  101.       this.graphics.setColor(var1);
  102.    }
  103.  
  104.    public void setPaintMode() {
  105.       this.graphics.setPaintMode();
  106.    }
  107.  
  108.    public void setXORMode(Color var1) {
  109.       this.graphics.setXORMode(var1);
  110.    }
  111.  
  112.    public Font getFont() {
  113.       return this.graphics.getFont();
  114.    }
  115.  
  116.    public void setFont(Font var1) {
  117.       this.graphics.setFont(var1);
  118.    }
  119.  
  120.    public FontMetrics getFontMetrics(Font var1) {
  121.       return this.graphics.getFontMetrics(var1);
  122.    }
  123.  
  124.    public Rectangle getClipBounds() {
  125.       return this.graphics.getClipBounds();
  126.    }
  127.  
  128.    public boolean isClipIntersecting(Rectangle var1) {
  129.       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) {
  130.          return this.clipRect.width != 0 && this.clipRect.height != 0 && var1.width != 0 && var1.height != 0;
  131.       } else {
  132.          return false;
  133.       }
  134.    }
  135.  
  136.    public int getClipX() {
  137.       return this.clipRect.x;
  138.    }
  139.  
  140.    public int getClipY() {
  141.       return this.clipRect.y;
  142.    }
  143.  
  144.    public int getClipWidth() {
  145.       return this.clipRect.width;
  146.    }
  147.  
  148.    public int getClipHeight() {
  149.       return this.clipRect.height;
  150.    }
  151.  
  152.    public void clipRect(int var1, int var2, int var3, int var4) {
  153.       this.graphics.clipRect(var1, var2, var3, var4);
  154.       this._changeClip(var1, var2, var3, var4, false);
  155.    }
  156.  
  157.    public void setClip(int var1, int var2, int var3, int var4) {
  158.       this.graphics.setClip(var1, var2, var3, var4);
  159.       this._changeClip(var1, var2, var3, var4, true);
  160.    }
  161.  
  162.    public Shape getClip() {
  163.       return this.graphics.getClip();
  164.    }
  165.  
  166.    public void setClip(Shape var1) {
  167.       this.graphics.setClip(var1);
  168.       if (var1 instanceof Rectangle) {
  169.          Rectangle var2 = (Rectangle)var1;
  170.          this._changeClip(var2.x, var2.y, var2.width, var2.height, true);
  171.       }
  172.  
  173.    }
  174.  
  175.    public void copyArea(int var1, int var2, int var3, int var4, int var5, int var6) {
  176.       this.graphics.copyArea(var1, var2, var3, var4, var5, var6);
  177.    }
  178.  
  179.    public void drawLine(int var1, int var2, int var3, int var4) {
  180.       this.graphics.drawLine(var1, var2, var3, var4);
  181.    }
  182.  
  183.    public void fillRect(int var1, int var2, int var3, int var4) {
  184.       this.graphics.fillRect(var1, var2, var3, var4);
  185.    }
  186.  
  187.    public void clearRect(int var1, int var2, int var3, int var4) {
  188.       this.graphics.clearRect(var1, var2, var3, var4);
  189.    }
  190.  
  191.    public void drawRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  192.       this.graphics.drawRoundRect(var1, var2, var3, var4, var5, var6);
  193.    }
  194.  
  195.    public void fillRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  196.       this.graphics.fillRoundRect(var1, var2, var3, var4, var5, var6);
  197.    }
  198.  
  199.    public void drawOval(int var1, int var2, int var3, int var4) {
  200.       this.graphics.drawOval(var1, var2, var3, var4);
  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 drawArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  208.       this.graphics.drawArc(var1, var2, var3, var4, var5, var6);
  209.    }
  210.  
  211.    public void fillArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  212.       this.graphics.fillArc(var1, var2, var3, var4, var5, var6);
  213.    }
  214.  
  215.    public void drawPolyline(int[] var1, int[] var2, int var3) {
  216.       this.graphics.drawPolyline(var1, var2, var3);
  217.    }
  218.  
  219.    public void drawPolygon(int[] var1, int[] var2, int var3) {
  220.       this.graphics.drawPolygon(var1, var2, var3);
  221.    }
  222.  
  223.    public void fillPolygon(int[] var1, int[] var2, int var3) {
  224.       this.graphics.fillPolygon(var1, var2, var3);
  225.    }
  226.  
  227.    public void drawString(String var1, int var2, int var3) {
  228.       this.graphics.drawString(var1, var2, var3);
  229.    }
  230.  
  231.    public boolean drawImage(Image var1, int var2, int var3, ImageObserver var4) {
  232.       return this.graphics.drawImage(var1, var2, var3, var4);
  233.    }
  234.  
  235.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, ImageObserver var6) {
  236.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6);
  237.    }
  238.  
  239.    public boolean drawImage(Image var1, int var2, int var3, Color var4, ImageObserver var5) {
  240.       return this.graphics.drawImage(var1, var2, var3, var4, var5);
  241.    }
  242.  
  243.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, Color var6, ImageObserver var7) {
  244.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7);
  245.    }
  246.  
  247.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, ImageObserver var10) {
  248.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10);
  249.    }
  250.  
  251.    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) {
  252.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11);
  253.    }
  254.  
  255.    public void dispose() {
  256.       if (this.graphics != null) {
  257.          this.graphics.dispose();
  258.          this.graphics = null;
  259.       }
  260.  
  261.       this.recycle();
  262.    }
  263.  
  264.    public void recycle() {
  265.       this.graphics = null;
  266.       recycleSwingGraphics(this);
  267.    }
  268.  
  269.    private void _changeClip(int var1, int var2, int var3, int var4, boolean var5) {
  270.       if (var5) {
  271.          this.clipRect.x = var1;
  272.          this.clipRect.y = var2;
  273.          this.clipRect.width = var3;
  274.          this.clipRect.height = var4;
  275.       } else {
  276.          SwingUtilities.computeIntersection(var1, var2, var3, var4, this.clipRect);
  277.       }
  278.    }
  279.  
  280.    private static synchronized void recycleSwingGraphics(SwingGraphics var0) {
  281.       Vector var1 = (Vector)SwingUtilities.appContextGet(graphicsPoolKey);
  282.       if (var1 == null) {
  283.          var1 = new Vector(20);
  284.          SwingUtilities.appContextPut(graphicsPoolKey, var1);
  285.       }
  286.  
  287.       if (var1.size() < 20) {
  288.          var1.addElement(var0);
  289.       }
  290.  
  291.    }
  292.  
  293.    private static synchronized SwingGraphics getRecycledSwingGraphics() {
  294.       SwingGraphics var1 = null;
  295.       Vector var2 = (Vector)SwingUtilities.appContextGet(graphicsPoolKey);
  296.       if (var2 == null) {
  297.          return null;
  298.       } else {
  299.          int var0;
  300.          if ((var0 = var2.size()) > 0) {
  301.             var1 = (SwingGraphics)var2.elementAt(var0 - 1);
  302.             var2.removeElementAt(var0 - 1);
  303.          }
  304.  
  305.          return var1;
  306.       }
  307.    }
  308.  
  309.    // $FF: synthetic method
  310.    static Class class$(String var0) {
  311.       try {
  312.          return Class.forName(var0);
  313.       } catch (ClassNotFoundException var2) {
  314.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  315.       }
  316.    }
  317.  
  318.    static {
  319.       graphicsPoolKey = class$com$sun$java$swing$SwingGraphics != null ? class$com$sun$java$swing$SwingGraphics : (class$com$sun$java$swing$SwingGraphics = class$("com.sun.java.swing.SwingGraphics"));
  320.    }
  321. }
  322.