home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / awt / graphics.java < prev    next >
Text File  |  1995-08-11  |  7KB  |  234 lines

  1. /*-
  2.  * Copyright (c) 1994 by Sun Microsystems, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * @(#)Graphics.java    1.9 95/05/13 11/14/94
  6.  *
  7.  *      Sami Shaio, 11/14/94
  8.  */
  9. package awt;
  10.  
  11. import java.io.*;
  12. import java.lang.*;
  13. import java.util.*;
  14.  
  15. /**
  16.  * Graphics is an object that encapsulates a graphics context for a
  17.  * particular window.  It will eventually be renamed "WSGraphics".
  18.  * For now, there is an empty "WSGraphics" subclass which is identical
  19.  * to this class.
  20.  * 
  21.  * @version 1.9 13 May 1995
  22.  * @author Sami Shaio
  23.  */
  24.  
  25. public class Graphics extends GenericGraphics {
  26.     int            pData;
  27.  
  28.     public Window    drawSurface;
  29.     public WServer    wServer;
  30.  
  31.     /**
  32.      * Create a graphics context.
  33.      */
  34.     public Graphics(Window w, int oX, int oY, float sX, float sY) { 
  35.     super(oX, oY, sX, sY);
  36.  
  37.     wServer = w.wServer;
  38.     drawSurface = w;
  39.     wServer.graphicsCreate(this, w);
  40.     }
  41.  
  42.     /**
  43.      * Create a graphics context with origin at (0,0)
  44.      */
  45.     public Graphics(Window w) {
  46.     this(w, 0, 0, 1.0, 1.0);
  47.     }
  48.  
  49.     /**
  50.      * Create a graphics context that draws into an Image object.
  51.      */
  52.     public Graphics(Image im, int oX, int oY, float sX, float sY) { 
  53.     super(oX, oY, sX, sY);
  54.  
  55.     drawSurface = im.win;
  56.     wServer = drawSurface.wServer;
  57.     wServer.imageGraphicsCreate(this, im);
  58.     }
  59.  
  60.     /**
  61.      * Create a graphics context with origin at (0,0)
  62.      */
  63.     public Graphics(Image im) {
  64.     this(im, 0, 0, 1.0, 1.0);
  65.     }
  66.  
  67.  
  68.     protected Graphics() {
  69.     }
  70.  
  71.     /**
  72.      * Create a new Graphics Object based on this one.
  73.      */
  74.     public Graphics createChild(int oX, int oY, float sX, float sY) {
  75.     return (Graphics) new Graphics(drawSurface, oX, oY, sX, sY);
  76.     }
  77.  
  78.     /**
  79.      * Disposes of this Graphics context. It cannot be used after being
  80.      * disposed.
  81.      */
  82.     public void dispose() {
  83.     wServer.graphicsDispose(this);
  84.     }
  85.  
  86.     /**
  87.      * Sets the font for all subsequent text-drawing operations.
  88.      */
  89.     public void setFont(Font f) {
  90.     super.setFont(f);
  91.     wServer.graphicsSetFont(this, f);
  92.     }
  93.  
  94.     /**
  95.      * Gets font metrics for the given font.
  96.      */
  97.     public FontMetrics getFontMetrics(Font f) {
  98.     return drawSurface.getFontMetrics(f);
  99.     }
  100.  
  101.     /**
  102.      * Sets the foreground color.
  103.      */
  104.     public void SetColor(Color c) {
  105.     super.setForeground(c);
  106.     wServer.graphicsSetForeground(this, c);
  107.     }
  108.  
  109.     /**
  110.      * Sets the foreground color.
  111.      */
  112.     public void setForeground(Color c) {
  113.     super.setForeground(c);
  114.     wServer.graphicsSetForeground(this, c);
  115.     }
  116.  
  117.  
  118.     /**
  119.      * Sets the background color.
  120.      */
  121.     public void setBackground(Color c) {
  122.     super.setBackground(c);
  123.     wServer.graphicsSetBackground(this, c);
  124.     }
  125.  
  126.     /**
  127.      * Paints a highlighted rectangle.
  128.      */
  129.     public void paint3DRect(int x, int y, int w, int h,
  130.                 boolean fill, boolean raised) {
  131.     // Dummy routine so that awt/Graphics:paint3DRect() method resolves.
  132.     // Required for Alpha 1.0 backwards compatibility of Graphics class.
  133.     super.paint3DRect(x, y, w, h, fill, raised);
  134.     }
  135.     /** Sets the clipping rectangle for this Graphics context. */
  136.     public void clipRect(int X, int Y, int W, int H) {
  137.     wServer.graphicsClipRect(this, X, Y, W, H);
  138.     }
  139.  
  140.     /** Clears the clipping region. */
  141.     public void clearClip() {
  142.     wServer.graphicsClearClip(this);
  143.     }
  144.     
  145.     /** Clears the rectangle indicated by x,y,w,h. */
  146.     public void clearRect(int X, int Y, int W, int H) {
  147.     wServer.graphicsClearRect(this, X, Y, W, H);
  148.     }
  149.     /** Fills the given rectangle with the foreground color. */
  150.     public void fillRect(int X, int Y, int W, int H) {
  151.     wServer.graphicsFillRect(this, X, Y, W, H);
  152.     }
  153.     /** Draws the given rectangle. */
  154.     public void drawRect(int X, int Y, int W, int H) {
  155.     wServer.graphicsDrawRect(this, X, Y, W, H);
  156.     }
  157.     /** Draws the given string. */
  158.     public void drawString(String str, int x, int y) {
  159.     wServer.graphicsDrawString(this, str, x, y);
  160.     }
  161.     /** Draws the given character array. */
  162.     public void drawChars(char chars[], int offset, int length, int x, int y) {
  163.     wServer.graphicsDrawChars(this, chars, offset, length, x, y);
  164.     }
  165.     /** Draws the given byte array. */
  166.     public void drawBytes(byte bytes[], int offset, int length, int x, int y) {
  167.     wServer.graphicsDrawBytes(this, bytes, offset, length, x, y);
  168.     }
  169.     /** Draws the given string and returns the length of the drawn
  170.       string in pixels.  If font isn't set then returns -1. */
  171.     public int drawStringWidth(String str, int x, int y) {
  172.     return wServer.graphicsDrawStringWidth(this, str, x, y);
  173.     }
  174.     /** Draws the given character array and return the width in
  175.       pixels. If font isn't set then returns -1. */
  176.     public int drawCharsWidth(char chars[], int offset, int length, int x, int y) {
  177.     return wServer.graphicsDrawCharsWidth(this, chars, offset, length, x, y);
  178.     }
  179.     /** Draws the given character array and return the width in
  180.       pixels. If font isn't set then returns -1. */
  181.     public int drawBytesWidth(byte bytes[], int offset, int length, int x, int y) {
  182.     return wServer.graphicsDrawBytesWidth(this, bytes, offset, length, x, y);
  183.     }
  184.     /** Draws the given line. */
  185.     public void drawLine(int x1, int y1, int x2, int y2) {
  186.     wServer.graphicsDrawLine(this, x1, y1, x2, y2);
  187.     }
  188.  
  189.     /** Draws an image at x,y. */
  190.     public void drawImage(Image I, int X, int Y) {
  191.         wServer.graphicsDrawImage(this, I, X, Y);
  192.     }
  193.  
  194.     /**
  195.      * Copies an area of the window that this graphics context paints to.
  196.      * @param X the x-coordinate of the source.
  197.      * @param Y the y-coordinate of the source.
  198.      * @param W the width.
  199.      * @param H the height.
  200.      * @param dx the x-coordinate of the destination.
  201.      * @param dy the y-coordinate of the destination.
  202.      */
  203.     public void copyArea(int X, int Y, int W, int H, int dx, int dy) {
  204.     wServer.graphicsCopyArea(this, X, Y, W, H, dx, dy);
  205.     }
  206.  
  207.     /**
  208.      * Sets the origin of this Graphics context. All subsequent
  209.      * operations are relative to this origin.
  210.      */
  211.     public void setOrigin(int x, int y) {
  212.     super.setOrigin(x, y);
  213.     wServer.graphicsSetOrigin(this, x, y);
  214.     }
  215.  
  216.     /**
  217.      * Sets the scaling factor for this Graphics context. Currently
  218.      * only used for line and rectangle drawing operations.
  219.      */
  220.     public void setScaling(float sx, float sy) {
  221.     super.setScaling(sx, sy);
  222.     wServer.graphicsSetScaling(this, scaleX, scaleY);
  223.     }
  224. }
  225.  
  226. class WSGraphics extends Graphics {
  227.     public WSGraphics(Window w, int oX, int oY, float sX, float sY) { 
  228.     super(w, oX, oY, sX, sY);
  229.     }
  230.     public WSGraphics(Window w) {
  231.     super(w);
  232.     }
  233. }
  234.