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

  1. /*-
  2.  * Copyright (c) 1994 by Sun Microsystems, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * @(#)GenericGraphics.java    1.13 95/04/10 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.  * GenericGraphics is the base class for all graphics contexts for various
  17.  * devices.  It will eventually be renamed to "Graphics".
  18.  * 
  19.  * @version 1.13 10 Apr 1995
  20.  * @author Sami Shaio
  21.  */
  22. public class GenericGraphics {
  23.     public Color    background;
  24.     public Color    foreground;
  25.     public Font        font = null;
  26.     public int        originX;
  27.     public int        originY;
  28.     public float    scaleX;
  29.     public float    scaleY;
  30.  
  31.     /**
  32.      * Create a graphics context.
  33.      */
  34.     public GenericGraphics(int oX, int oY, float sX, float sY) { 
  35.     originX = oX;
  36.     originY = oY;
  37.     scaleX = sX;
  38.     scaleY = sY;
  39.     }
  40.  
  41.     /**
  42.      * Create a graphics context with origin at (0,0)
  43.      */
  44.     public GenericGraphics() {
  45.     this(0, 0, 1.0, 1.0);
  46.     }
  47.  
  48.     /**
  49.      * Create a new Graphics Object based on this one.
  50.      */
  51.     public abstract GenericGraphics createChild(int oX, int oY,
  52.                         float sX, float sY);
  53.  
  54.     /**
  55.      * Disposes of this Graphics context. It can't be used after being
  56.      * disposed.
  57.      */
  58.     public void dispose() {
  59.     }
  60.  
  61.     /**
  62.      * Sets the font for all subsequent text-drawing operations.
  63.      */
  64.     public void setFont(Font f) {
  65.     font = f;
  66.     }
  67.  
  68.     public abstract FontMetrics getFontMetrics(Font f);
  69.  
  70.     /**
  71.      * Sets the foreground color.
  72.      */
  73.     public void setForeground(Color c) {
  74.     foreground = c;
  75.     }
  76.  
  77.     /**
  78.      * Sets the background color.
  79.      */
  80.     public void setBackground(Color c) {
  81.     background = c;
  82.     }
  83.  
  84.     /**
  85.      * Paints a highlighted rectangle.
  86.      */
  87.     public void paint3DRect(int x, int y, int w, int h,
  88.                 boolean fill, boolean raised) {
  89.     if (fill) {
  90.         if (raised) {
  91.         setBackground(Color.menuBright);
  92.         }
  93.         fillRect(x, y, w, h);
  94.     }
  95.     setForeground(raised ? Color.menuBright : Color.menuDim);
  96.     drawLine(x, y, x, y + h - 1);                // left
  97.     drawLine(x + 1, y, x + w - 2, y);            // top
  98.     setForeground(raised ? Color.menuDim : Color.menuBright);
  99.     drawLine(x + 1, y + h - 1, x + w - 1, y + h - 1);    // bottom
  100.     drawLine(x + w - 1, y, x + w - 1, y + h - 1);        // right
  101.  
  102.     setForeground(Color.black);
  103.     }    
  104.  
  105.     /** Sets the clipping rectangle for this Graphics context. */
  106.     public abstract void clipRect(int X, int Y, int W, int H);
  107.  
  108.     /** Clears the clipping region. */
  109.     public abstract void clearClip();
  110.     
  111.     /** Clears the rectangle indicated by x,y,w,h. */
  112.     public abstract void clearRect(int X, int Y, int W, int H);
  113.     /** Fills the given rectangle with the foreground color. */
  114.     public abstract void fillRect(int X, int Y, int W, int H);
  115.     /** Draws the given rectangle. */
  116.     public abstract void drawRect(int X, int Y, int W, int H);
  117.     /** Draws the given string. */
  118.     public abstract void drawString(String str, int x, int y);
  119.     /** Draws the given character array. */
  120.     public abstract void drawChars(char chars[], int offset, int length,
  121.                    int x, int y);
  122.     /** Draws the given string and returns the length of the drawn
  123.       string in pixels.  If font isn't set then returns -1. */
  124.     public abstract int drawStringWidth(String str, int x, int y);
  125.     /** Draws the given character array and return the width in
  126.       pixels. If font isn't set then returns -1. */
  127.     public abstract int drawCharsWidth(char chars[], int offset, int length,
  128.                        int x, int y);
  129.     /** Draws the given line. */
  130.     public abstract void drawLine(int x1, int y1, int x2, int y2);
  131.  
  132.     /** Draws an image at x,y. */
  133.     public abstract void drawImage(Image I, int X, int Y);
  134.  
  135.     /**
  136.      * Copies an area of the window that this graphics context paints to.
  137.      * @param X the x-coordinate of the source.
  138.      * @param Y the y-coordinate of the source.
  139.      * @param W the width.
  140.      * @param H the height.
  141.      * @param dx the x-coordinate of the destination.
  142.      * @param dy the y-coordinate of the destination.
  143.      */
  144.     public abstract void copyArea(int X, int Y, int W, int H, int dx, int dy);
  145.  
  146.     /**
  147.      * Sets the origin of this Graphics context. All subsequent
  148.      * operations are relative to this origin.
  149.      */
  150.     public void setOrigin(int x, int y) {
  151.     originX = x;
  152.     originY = y;
  153.     }
  154.  
  155.     /**
  156.      * Sets the scaling factor for this Graphics context. Currently
  157.      * only used for line and rectangle drawing operations.
  158.      */
  159.     public void setScaling(float sx, float sy) {
  160.     scaleX = sx;
  161.     scaleY = sy;
  162.     }
  163. }
  164.