abstractgraphics.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 792 行 · 第 1/2 页

JAVA
792
字号
/*
 * $Id: AbstractGraphics.java,v 1.7 2004/01/04 15:40:02 epr Exp $
 */
package org.jnode.awt.util;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.Paint;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.Toolkit;
import java.awt.RenderingHints.Key;
import java.awt.geom.AffineTransform;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ImageObserver;
import java.awt.image.RenderedImage;
import java.awt.image.renderable.RenderableImage;
import java.text.AttributedCharacterIterator;
import java.util.Map;

import org.jnode.awt.peer.JNodeToolkit;

/**
 * @author epr
 */
public abstract class AbstractGraphics extends Graphics2D {

	private static final Stroke DEFAULT_STROKE = new BasicStroke();

	private Color bgColor = Color.WHITE;
	private Color fgColor = Color.BLACK;
	private Color xorColor = null;
	private Font font = new Font("Luxi Sans", Font.PLAIN, 10);
	Shape clip;
	private Stroke stroke = DEFAULT_STROKE;
	AffineTransform transform = new AffineTransform();
	private Paint paint = Color.WHITE;
	private Composite composite;

	/**
	 * Initialize this instance
	 * @param width
	 * @param height
	 */
	public AbstractGraphics(int width, int height) {
		clip = new Rectangle(0, 0, width, height);
	}

	/**
	 * Initialize this instance as a copy of the given instance
	 * @param src
	 */
	public AbstractGraphics(AbstractGraphics src) {
		this.bgColor = src.bgColor;
		this.fgColor = src.fgColor;
		this.xorColor = src.xorColor;
		this.font = src.font;
		this.clip = src.clip;
		this.stroke = src.stroke;
		this.transform = new AffineTransform(src.transform);
		this.paint = src.paint;
		this.composite = src.composite;
	}

	/**
	 * @param hints
	 * @see java.awt.Graphics2D#addRenderingHints(java.util.Map)
	 */
	public void addRenderingHints(Map hints) {
		// TODO Auto-generated method stub

	}

	/**
	 * @param s
	 * @see java.awt.Graphics2D#clip(java.awt.Shape)
	 */
	public void clip(Shape s) {
		this.clip = s;
	}

	/**
	 * @param shape
	 * @see java.awt.Graphics2D#draw(java.awt.Shape)
	 */
	public abstract void draw(Shape shape);

	/**
	 * @param image
	 * @param op
	 * @param x
	 * @param y
	 * @see java.awt.Graphics2D#drawImage(java.awt.image.BufferedImage, java.awt.image.BufferedImageOp, int, int)
	 */
	public void drawImage(BufferedImage image, BufferedImageOp op, int x, int y) {
		final Image img1 = op.filter(image, null);
		drawImage(img1, new AffineTransform(1f, 0f, 0f, 1f, x, y), null);
	}

	/**
	 * @param image
	 * @param xform
	 * @param obs
	 * @see java.awt.Graphics2D#drawImage(java.awt.Image, java.awt.geom.AffineTransform, java.awt.image.ImageObserver)
	 * @return boolean
	 */
	public boolean drawImage(Image image, AffineTransform xform, ImageObserver obs) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * @param image
	 * @param xform
	 * @see java.awt.Graphics2D#drawRenderableImage(java.awt.image.renderable.RenderableImage, java.awt.geom.AffineTransform)
	 */
	public void drawRenderableImage(RenderableImage image, AffineTransform xform) {
		// TODO Auto-generated method stub

	}

	/**
	 * @param image
	 * @param xform
	 * @see java.awt.Graphics2D#drawRenderedImage(java.awt.image.RenderedImage, java.awt.geom.AffineTransform)
	 */
	public void drawRenderedImage(RenderedImage image, AffineTransform xform) {
		// TODO Auto-generated method stub

	}

	/**
	 * @param iterator
	 * @param x
	 * @param y
	 * @see java.awt.Graphics2D#drawString(java.text.AttributedCharacterIterator, float, float)
	 */
	public void drawString(AttributedCharacterIterator iterator, float x, float y) {
		// TODO Auto-generated method stub

	}

	/**
	 * @param iterator
	 * @param x
	 * @param y
	 * @see java.awt.Graphics2D#drawString(java.text.AttributedCharacterIterator, int, int)
	 */
	public void drawString(AttributedCharacterIterator iterator, int x, int y) {
		drawString(iterator, (float) x, (float) y);
	}

	/**
	 * @param text
	 * @param x
	 * @param y
	 * @see java.awt.Graphics2D#drawString(java.lang.String, float, float)
	 */
	public void drawString(String text, float x, float y) 
	{
		this.drawString(text,Math.round(x),Math.round(y));
	}

	/**
	 * @param text
	 * @param x
	 * @param y
	 * @see java.awt.Graphics#drawString(java.lang.String, int, int)
	 */
	public void drawString(String text, int x, int y) {
		System.out.println("drawText():" + text);
		if(this.font != null)
			((JNodeToolkit)Toolkit.getDefaultToolkit()).getFontManager().drawText(this,text,font,x,y);
	}

	/**
	 * @param shape
	 * @see java.awt.Graphics2D#fill(java.awt.Shape)
	 */
	public abstract void fill(Shape shape);

	/**
	 * @see java.awt.Graphics2D#getBackground()
	 * @return The background color
	 */
	public Color getBackground() {
		return bgColor;
	}

	/**
	 * @see java.awt.Graphics2D#getComposite()
	 * @return Composite
	 */
	public Composite getComposite() {
		return composite;
	}

	/**
	 * @see java.awt.Graphics2D#getDeviceConfiguration()
	 * @return The configuration
	 */
	public abstract GraphicsConfiguration getDeviceConfiguration();

	/**
	 * @see java.awt.Graphics2D#getPaint()
	 * @return Paint
	 */
	public Paint getPaint() {
		return paint;
	}

	/**
	 * @param hintKey
	 * @see java.awt.Graphics2D#getRenderingHint(java.awt.RenderingHints.Key)
	 * @return Object
	 */
	public Object getRenderingHint(Key hintKey) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * @see java.awt.Graphics2D#getRenderingHints()
	 * @return The hints
	 */
	public RenderingHints getRenderingHints() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * @see java.awt.Graphics2D#getStroke()
	 * @return The stroke
	 */
	public Stroke getStroke() {
		return stroke;
	}

	/**
	 * @see java.awt.Graphics2D#getTransform()
	 * @return The transform
	 */
	public AffineTransform getTransform() {
		return new AffineTransform(transform);
	}

	/**
	 * @param rect
	 * @param text
	 * @param onStroke
	 * @see java.awt.Graphics2D#hit(java.awt.Rectangle, java.awt.Shape, boolean)
	 * @return boolean
	 */
	public boolean hit(Rectangle rect, Shape text, boolean onStroke) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * @param theta
	 * @param x
	 * @param y
	 * @see java.awt.Graphics2D#rotate(double, double, double)
	 */
	public void rotate(double theta, double x, double y) {
		transform(AffineTransform.getRotateInstance(theta, x, y));
	}

	/**
	 * @param theta
	 * @see java.awt.Graphics2D#rotate(double)
	 */
	public void rotate(double theta) {
		transform(AffineTransform.getRotateInstance(theta));
	}

	/**
	 * @param scaleX
	 * @param scaleY
	 * @see java.awt.Graphics2D#scale(double, double)
	 */
	public void scale(double scaleX, double scaleY) {
		transform(AffineTransform.getScaleInstance(scaleX, scaleY));
	}

	/**
	 * @param color
	 * @see java.awt.Graphics2D#setBackground(java.awt.Color)
	 */
	public void setBackground(Color color) {
		this.bgColor = color;
	}

	/**
	 * @param comp
	 * @see java.awt.Graphics2D#setComposite(java.awt.Composite)
	 */
	public void setComposite(Composite comp) {
		this.composite = comp;
	}

	/**
	 * @param paint
	 * @see java.awt.Graphics2D#setPaint(java.awt.Paint)
	 */
	public void setPaint(Paint paint) {
		if (paint != null) {
			this.paint = paint;
		}
	}

	/**
	 * @param hintKey
	 * @param hintValue
	 * @see java.awt.Graphics2D#setRenderingHint(java.awt.RenderingHints.Key, java.lang.Object)
	 */
	public void setRenderingHint(Key hintKey, Object hintValue) {
		// TODO Auto-generated method stub

	}

	/**
	 * @param hints
	 * @see java.awt.Graphics2D#setRenderingHints(java.util.Map)
	 */
	public void setRenderingHints(Map hints) {
		// TODO Auto-generated method stub

	}

	/**
	 * @param stroke
	 * @see java.awt.Graphics2D#setStroke(java.awt.Stroke)
	 */
	public void setStroke(Stroke stroke) {
		this.stroke = stroke;
	}

	/**
	 * @param Tx
	 * @see java.awt.Graphics2D#setTransform(java.awt.geom.AffineTransform)
	 */
	public void setTransform(AffineTransform Tx) {
		this.transform = Tx;
	}

	/**
	 * @param shearX
	 * @param shearY
	 * @see java.awt.Graphics2D#shear(double, double)
	 */
	public void shear(double shearX, double shearY) {
		transform(AffineTransform.getScaleInstance(shearX, shearY));
	}

	/**
	 * @param Tx
	 * @see java.awt.Graphics2D#transform(java.awt.geom.AffineTransform)
	 */
	public void transform(AffineTransform Tx) {
		transform.concatenate(Tx);
	}

	/**
	 * @param tx
	 * @param ty
	 * @see java.awt.Graphics2D#translate(double, double)
	 */
	public void translate(double tx, double ty) {
		transform(AffineTransform.getTranslateInstance(tx, ty));
	}

	/**
	 * @param x
	 * @param y
	 * @see java.awt.Graphics#translate(int, int)
	 */
	public void translate(int x, int y) {
		transform(AffineTransform.getTranslateInstance(x, y));

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?