/* Copyright (C) 2000 Free Software Foundation This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ package java.awt; import java.awt.image.ImageObserver; /** * @author Warren Levy * @date March 15, 2000. */ /** * Written using on-line Java Platform 1.2 API Specification, as well * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998). * Status: Almost complete */ public abstract class Graphics { protected Graphics() {} public abstract Graphics create(); public Graphics create(int x, int y, int width, int height) { Graphics gfx = create(); gfx.translate(x, y); gfx.setClip(0, y, width, height); return gfx; } public abstract void translate(int x, int y); public abstract Color getColor(); public abstract void setColor(Color color); public abstract void setPaintMode(); public abstract void setXORMode(Color altColor); public abstract Font getFont(); public abstract void setFont(Font font); public FontMetrics getFontMetrics() { return getFontMetrics(getFont()); } public abstract FontMetrics getFontMetrics(Font font); public abstract Rectangle getClipBounds(); public abstract void clipRect(int x, int y, int width, int height); public abstract void setClip(int x, int y, int width, int height); public abstract Shape getClip(); public abstract void setClip(Shape clip); public abstract void copyArea(int x, int y, int width, int height, int dx, int dy); public abstract void drawLine(int x1, int y1, int x2, int y2); public abstract void fillRect(int x, int y, int width, int height); public void drawRect(int x, int y, int width, int height) { int x1 = x; int y1 = y; int x2 = x + width; int y2 = y + height; drawLine(x1, y1, x2, y1); drawLine(x2, y1, x2, y2); drawLine(x2, y2, x1, y2); drawLine(x1, y2, x1, y1); } public abstract void clearRect(int x, int y, int width, int height); public abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight); public abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight); public void draw3DRect(int x, int y, int width, int height, boolean raised) { Color color = getColor(); Color tl = color.brighter(); Color br = color.darker(); if (!raised) { Color tmp = tl; tl = br; br = tmp; } int x1 = x; int y1 = y; int x2 = x + width; int y2 = y + height; setColor(tl); drawLine(x1, y1, x2, y1); drawLine(x1, y2, x1, y1); setColor(br); drawLine(x2, y1, x2, y2); drawLine(x2, y1, x1, y2); setColor(color); } public void fill3DRect(int x, int y, int width, int height, boolean raised) { fillRect(x, y, width, height); draw3DRect(x, y, width-1, height-1, raised); } public abstract void drawOval(int x, int y, int width, int height); public abstract void fillOval(int x, int y, int width, int height); public abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle); public abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle); public abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints); public abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints); //public void drawPolygon(Polygon p); public abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints); //public void fillPolygon(Polygon p); public abstract void drawString(String str, int x, int y); /* public abstract void drawString(AttributedCharacterIterator iterator, int x, int y) */ public void drawChars(char[] data, int offset, int length, int x, int y) { String str = new String(data, offset, length); drawString(str, x, y); } public void drawBytes(byte[] data, int offset, int length, int x, int y) { String str = new String(data, offset, length); drawString(str, x, y); } public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer); public abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer); public abstract boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer); public abstract boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer); public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer); public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer); public abstract void dispose(); public void finalize() { dispose(); } public String toString() { return super.toString(); // FIXME } /** @deprecated */ public Rectangle getClipRect() { return getClipBounds(null); } public boolean hitClip(int x, int y, int width, int height) { throw new UnsupportedOperationException("not implemented yet"); } public Rectangle getClipBounds(Rectangle r) { Rectangle clipBounds = getClipBounds(); if (r == null) return clipBounds; r.x = clipBounds.x; r.y = clipBounds.y; r.width = clipBounds.width; r.height = clipBounds.height; return r; } }