home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / awt / windows / WGraphics.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  7.1 KB  |  333 lines

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