home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / sun / awt / motif / X11Graphics.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  7.2 KB  |  334 lines

  1. package sun.awt.motif;
  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.Rectangle;
  8. import java.awt.Shape;
  9. import java.awt.image.ImageObserver;
  10. import java.io.CharConversionException;
  11. import sun.awt.AWTFinalizeable;
  12. import sun.awt.AWTFinalizer;
  13. import sun.awt.CharsetString;
  14. import sun.awt.FontDescriptor;
  15. import sun.awt.PlatformFont;
  16. import sun.awt.image.Image;
  17. import sun.awt.image.ImageRepresentation;
  18. import sun.awt.image.OffScreenImageSource;
  19.  
  20. public class X11Graphics extends Graphics implements AWTFinalizeable {
  21.    int pData;
  22.    MComponentPeer peer;
  23.    Color foreground;
  24.    Font font;
  25.    int originX;
  26.    int originY;
  27.    Image image;
  28.    AWTFinalizeable finalnext;
  29.  
  30.    private native void createFromComponent(MComponentPeer var1);
  31.  
  32.    private native void createFromGraphics(X11Graphics var1);
  33.  
  34.    private native void imageCreate(ImageRepresentation var1);
  35.  
  36.    private native void pSetFont(Font var1);
  37.  
  38.    private native void pSetForeground(Color var1);
  39.  
  40.    X11Graphics(X11Graphics var1) {
  41.       this.createFromGraphics(var1);
  42.    }
  43.  
  44.    X11Graphics(MComponentPeer var1) {
  45.       this.createFromComponent(var1);
  46.       this.peer = var1;
  47.    }
  48.  
  49.    public X11Graphics(X11Image var1) {
  50.       OffScreenImageSource var2 = (OffScreenImageSource)((Image)var1).getSource();
  51.       this.imageCreate(var2.getImageRep());
  52.       this.image = var1;
  53.    }
  54.  
  55.    public Graphics create() {
  56.       X11Graphics var1 = new X11Graphics(this);
  57.       var1.peer = this.peer;
  58.       var1.foreground = this.foreground;
  59.       var1.font = this.font;
  60.       var1.originX = this.originX;
  61.       var1.originY = this.originY;
  62.       var1.image = this.image;
  63.       return var1;
  64.    }
  65.  
  66.    public void translate(int var1, int var2) {
  67.       this.originX += var1;
  68.       this.originY += var2;
  69.    }
  70.  
  71.    public native void dispose();
  72.  
  73.    public void finalize() {
  74.       AWTFinalizer.addFinalizeable(this);
  75.    }
  76.  
  77.    public void doFinalization() {
  78.       this.dispose();
  79.    }
  80.  
  81.    public void setNextFinalizeable(AWTFinalizeable var1) {
  82.       this.finalnext = var1;
  83.    }
  84.  
  85.    public AWTFinalizeable getNextFinalizeable() {
  86.       return this.finalnext;
  87.    }
  88.  
  89.    public void setFont(Font var1) {
  90.       if (var1 != null && this.font != var1) {
  91.          this.font = var1;
  92.          this.pSetFont(var1);
  93.       }
  94.  
  95.    }
  96.  
  97.    public Font getFont() {
  98.       return this.font;
  99.    }
  100.  
  101.    public FontMetrics getFontMetrics(Font var1) {
  102.       return X11FontMetrics.getFontMetrics(var1);
  103.    }
  104.  
  105.    public void setColor(Color var1) {
  106.       if (var1 != null && var1 != this.foreground) {
  107.          this.pSetForeground(var1);
  108.          this.foreground = var1;
  109.       }
  110.  
  111.    }
  112.  
  113.    public Color getColor() {
  114.       return this.foreground;
  115.    }
  116.  
  117.    public native void setPaintMode();
  118.  
  119.    public native void setXORMode(Color var1);
  120.  
  121.    public native Rectangle getClipBounds();
  122.  
  123.    private native void changeClip(int var1, int var2, int var3, int var4, boolean var5);
  124.  
  125.    private native void removeClip();
  126.  
  127.    public void clipRect(int var1, int var2, int var3, int var4) {
  128.       this.changeClip(var1, var2, var3, var4, false);
  129.    }
  130.  
  131.    public void setClip(int var1, int var2, int var3, int var4) {
  132.       this.changeClip(var1, var2, var3, var4, true);
  133.    }
  134.  
  135.    public Shape getClip() {
  136.       return this.getClipBounds();
  137.    }
  138.  
  139.    public void setClip(Shape var1) {
  140.       if (var1 == null) {
  141.          this.removeClip();
  142.       } else if (var1 instanceof Rectangle) {
  143.          Rectangle var2 = (Rectangle)var1;
  144.          this.changeClip(var2.x, var2.y, var2.width, var2.height, true);
  145.       } else {
  146.          throw new IllegalArgumentException("setClip(Shape) only supports Rectangle objects");
  147.       }
  148.    }
  149.  
  150.    public native void clearRect(int var1, int var2, int var3, int var4);
  151.  
  152.    public native void fillRect(int var1, int var2, int var3, int var4);
  153.  
  154.    public native void drawRect(int var1, int var2, int var3, int var4);
  155.  
  156.    public void drawString(String var1, int var2, int var3) {
  157.       this.drawChars(var1.toCharArray(), 0, var1.length(), var2, var3);
  158.    }
  159.  
  160.    public void drawChars(char[] var1, int var2, int var3, int var4, int var5) {
  161.       PlatformFont var6 = (PlatformFont)this.font.getPeer();
  162.       if (var6.mightHaveMultiFontMetrics()) {
  163.          this.drawMFChars(var1, var2, var3, var4, var5, this.font, var6);
  164.       } else {
  165.          this.drawSFChars(var1, var2, var3, var4, var5);
  166.       }
  167.    }
  168.  
  169.    private native void drawSFChars(char[] var1, int var2, int var3, int var4, int var5);
  170.  
  171.    private void drawMFChars(char[] var1, int var2, int var3, int var4, int var5, Font var6, PlatformFont var7) {
  172.       CharsetString[] var8 = var7.makeMultiCharsetString(var1, var2, var3);
  173.       int var9 = 0;
  174.  
  175.       for(int var10 = 0; var10 < var8.length; ++var10) {
  176.          int var11 = var8[var10].fontDescriptor.fontCharset.getMaxBytesPerChar() * var8[var10].length;
  177.          if (var9 < var11) {
  178.             var9 = var11;
  179.          }
  180.       }
  181.  
  182.       if (var9 != 0) {
  183.          byte[] var16 = new byte[var9];
  184.  
  185.          for(int var12 = 0; var12 < var8.length; ++var12) {
  186.             CharsetString var13 = var8[var12];
  187.  
  188.             try {
  189.                int var14 = var13.fontDescriptor.fontCharset.convert(var13.charsetChars, var13.offset, var13.offset + var13.length, var16, 0, var16.length);
  190.                var4 += this.drawMFCharsSegment(var12 == 0, var6, var13.fontDescriptor, var16, var14, var4, var5);
  191.             } catch (CharConversionException var15) {
  192.             }
  193.          }
  194.  
  195.       }
  196.    }
  197.  
  198.    private native int drawMFCharsSegment(boolean var1, Font var2, FontDescriptor var3, byte[] var4, int var5, int var6, int var7);
  199.  
  200.    public native void drawBytes(byte[] var1, int var2, int var3, int var4, int var5);
  201.  
  202.    public native void drawLine(int var1, int var2, int var3, int var4);
  203.  
  204.    public boolean drawImage(java.awt.Image var1, int var2, int var3, ImageObserver var4) {
  205.       X11Image var5 = (X11Image)var1;
  206.       if (((Image)var5).hasError()) {
  207.          if (var4 != null) {
  208.             var4.imageUpdate(var1, 192, -1, -1, -1, -1);
  209.          }
  210.  
  211.          return false;
  212.       } else {
  213.          ImageRepresentation var6 = var5.getImageRep();
  214.          return var6.drawImage(this, var2, var3, (Color)null, var4);
  215.       }
  216.    }
  217.  
  218.    public boolean drawImage(java.awt.Image var1, int var2, int var3, int var4, int var5, ImageObserver var6) {
  219.       if (var4 != 0 && var5 != 0) {
  220.          X11Image var7 = (X11Image)var1;
  221.          if (((Image)var7).hasError()) {
  222.             if (var6 != null) {
  223.                var6.imageUpdate(var1, 192, -1, -1, -1, -1);
  224.             }
  225.  
  226.             return false;
  227.          } else {
  228.             ImageRepresentation var8 = var7.getImageRep();
  229.             return var8.drawScaledImage(this, var2, var3, var4, var5, (Color)null, var6);
  230.          }
  231.       } else {
  232.          return true;
  233.       }
  234.    }
  235.  
  236.    public boolean drawImage(java.awt.Image var1, int var2, int var3, Color var4, ImageObserver var5) {
  237.       X11Image var6 = (X11Image)var1;
  238.       if (((Image)var6).hasError()) {
  239.          if (var5 != null) {
  240.             var5.imageUpdate(var1, 192, -1, -1, -1, -1);
  241.          }
  242.  
  243.          return false;
  244.       } else {
  245.          ImageRepresentation var7 = var6.getImageRep();
  246.          return var7.drawImage(this, var2, var3, var4, var5);
  247.       }
  248.    }
  249.  
  250.    public boolean drawImage(java.awt.Image var1, int var2, int var3, int var4, int var5, Color var6, ImageObserver var7) {
  251.       if (var4 != 0 && var5 != 0) {
  252.          X11Image var8 = (X11Image)var1;
  253.          if (((Image)var8).hasError()) {
  254.             if (var7 != null) {
  255.                var7.imageUpdate(var1, 192, -1, -1, -1, -1);
  256.             }
  257.  
  258.             return false;
  259.          } else {
  260.             ImageRepresentation var9 = var8.getImageRep();
  261.             return var9.drawScaledImage(this, var2, var3, var4, var5, var6, var7);
  262.          }
  263.       } else {
  264.          return true;
  265.       }
  266.    }
  267.  
  268.    public boolean drawImage(java.awt.Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, ImageObserver var10) {
  269.       if (var2 != var4 && var3 != var5) {
  270.          X11Image var11 = (X11Image)var1;
  271.          if (((Image)var11).hasError()) {
  272.             if (var10 != null) {
  273.                var10.imageUpdate(var1, 192, -1, -1, -1, -1);
  274.             }
  275.  
  276.             return false;
  277.          } else {
  278.             ImageRepresentation var12 = var11.getImageRep();
  279.             return var12.drawStretchImage(this, var2, var3, var4, var5, var6, var7, var8, var9, (Color)null, var10);
  280.          }
  281.       } else {
  282.          return true;
  283.       }
  284.    }
  285.  
  286.    public boolean drawImage(java.awt.Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, Color var10, ImageObserver var11) {
  287.       if (var2 != var4 && var3 != var5) {
  288.          X11Image var12 = (X11Image)var1;
  289.          if (((Image)var12).hasError()) {
  290.             if (var11 != null) {
  291.                var11.imageUpdate(var1, 192, -1, -1, -1, -1);
  292.             }
  293.  
  294.             return false;
  295.          } else {
  296.             ImageRepresentation var13 = var12.getImageRep();
  297.             return var13.drawStretchImage(this, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11);
  298.          }
  299.       } else {
  300.          return true;
  301.       }
  302.    }
  303.  
  304.    public native void copyArea(int var1, int var2, int var3, int var4, int var5, int var6);
  305.  
  306.    public native void drawRoundRect(int var1, int var2, int var3, int var4, int var5, int var6);
  307.  
  308.    public native void fillRoundRect(int var1, int var2, int var3, int var4, int var5, int var6);
  309.  
  310.    private native void drawPoly(int[] var1, int[] var2, int var3, boolean var4);
  311.  
  312.    public void drawPolyline(int[] var1, int[] var2, int var3) {
  313.       this.drawPoly(var1, var2, var3, false);
  314.    }
  315.  
  316.    public void drawPolygon(int[] var1, int[] var2, int var3) {
  317.       this.drawPoly(var1, var2, var3, true);
  318.    }
  319.  
  320.    public native void fillPolygon(int[] var1, int[] var2, int var3);
  321.  
  322.    public native void drawOval(int var1, int var2, int var3, int var4);
  323.  
  324.    public native void fillOval(int var1, int var2, int var3, int var4);
  325.  
  326.    public native void drawArc(int var1, int var2, int var3, int var4, int var5, int var6);
  327.  
  328.    public native void fillArc(int var1, int var2, int var3, int var4, int var5, int var6);
  329.  
  330.    public String toString() {
  331.       return this.getClass().getName() + "[" + this.originX + "," + this.originY + "]";
  332.    }
  333. }
  334.