Package org.jnode.awt.util

Source Code of org.jnode.awt.util.AbstractGraphics

/*
* $Id$
*
* Copyright (C) 2003-2014 JNode.org
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; If not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
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.RenderingHints.Key;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.Toolkit;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
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;

/**
* @deprecated
* @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
     * @return boolean
     * @see java.awt.Graphics2D#drawImage(java.awt.Image,
     *      java.awt.geom.AffineTransform, java.awt.image.ImageObserver)
     */
    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 shape
     * @see java.awt.Graphics2D#fill(java.awt.Shape)
     */
    public abstract void fill(Shape shape);

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

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

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

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

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

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

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

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

    /**
     * @param rect
     * @param text
     * @param onStroke
     * @return boolean
     * @see java.awt.Graphics2D#hit(java.awt.Rectangle, java.awt.Shape, 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) {
        if (color != null)
            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);
        // Adjust clip
        /*
        Rectangle2D r = clip.getBounds2D();
        double[] coords = new double[]{r.getX(), r.getY(),
            r.getX() + r.getWidth(), r.getY() + r.getHeight()};
        try {
            tx.createInverse().transform(coords, 0, coords, 0, 2);
            r.setRect(coords[0], coords[1], coords[2] - coords[0], coords[3] - coords[1]);
            clip = r;
        } catch (java.awt.geom.NoninvertibleTransformException e) {
            e.printStackTrace();
        }
        */
    }

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

    /**
     * @param x
     * @param y
     * @see java.awt.Graphics#translate(int, int)
     */
    public void translate(int x, int y) {
        transform.translate(x, y);
        //adjust clip
        if (clip != null) {
            if (clip instanceof Rectangle) {
                Rectangle r = (Rectangle) clip;
                r.translate(x, y);
            } else {
                throw new UnsupportedOperationException();
            }
        }
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @see java.awt.Graphics#clearRect(int, int, int, int)
     */
    public void clearRect(int x, int y, int width, int height) {
        final Color saveColor = getColor();
        setColor(bgColor);
        fillRect(x, y, width, height);
        setColor(saveColor);
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @see java.awt.Graphics#clipRect(int, int, int, int)
     */
    public void clipRect(int x, int y, int width, int height) {
        Rectangle r = new Rectangle(x, y, width, height);
        if (transform != null)
            r.translate((int) transform.getTranslateX(), (int) transform.getTranslateY());

        if (clip == null)
            clip = r;
        else if (clip instanceof Rectangle) {
            clip = ((Rectangle) clip).intersection(r);
        } else {
            throw new UnsupportedOperationException();
        }
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @param dx
     * @param dy
     * @see java.awt.Graphics#copyArea(int, int, int, int, int, int)
     */
    public abstract void copyArea(int x, int y, int width, int height, int dx,
                                  int dy);

    /**
     * @return The graphics
     * @see java.awt.Graphics#create()
     */
    public abstract Graphics create();

    /**
     * @see java.awt.Graphics#dispose()
     */
    public void dispose() {
        // Nothing to do here
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @param startAngle
     * @param arcAngle
     * @see java.awt.Graphics#drawArc(int, int, int, int, int, int)
     */
    public void drawArc(int x, int y, int width, int height, int startAngle,
                        int arcAngle) {
        draw(new Arc2D.Float(x, y, width, height, startAngle, arcAngle,
            Arc2D.OPEN));
    }

    /**
     * @param image
     * @param x
     * @param y
     * @param bgcolor
     * @param observer
     * @return boolean
     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int,
     *      java.awt.Color, java.awt.image.ImageObserver)
     */
    public boolean drawImage(Image image, int x, int y, Color bgcolor,
                             ImageObserver observer) {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * @param image
     * @param x
     * @param y
     * @param observer
     * @return boolean
     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int,
     *      java.awt.image.ImageObserver)
     */
    public boolean drawImage(Image image, int x, int y, ImageObserver observer) {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * @param image
     * @param x
     * @param y
     * @param width
     * @param height
     * @param bgcolor
     * @param observer
     * @return boolean
     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int,
     *      java.awt.Color, java.awt.image.ImageObserver)
     */
    public boolean drawImage(Image image, int x, int y, int width, int height,
                             Color bgcolor, ImageObserver observer) {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * @param image
     * @param x
     * @param y
     * @param width
     * @param height
     * @param observer
     * @return boolean
     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int,
     *      java.awt.image.ImageObserver)
     */
    public boolean drawImage(Image image, int x, int y, int width, int height,
                             ImageObserver observer) {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * @param image
     * @param dx1
     * @param dy1
     * @param dx2
     * @param dy2
     * @param sx1
     * @param sy1
     * @param sx2
     * @param sy2
     * @param bgcolor
     * @param observer
     * @return boolean
     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int, int,
     *      int, int, int, java.awt.Color, java.awt.image.ImageObserver)
     */
    public boolean drawImage(Image image, int dx1, int dy1, int dx2, int dy2,
                             int sx1, int sy1, int sx2, int sy2, Color bgcolor,
                             ImageObserver observer) {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * @param image
     * @param dx1
     * @param dy1
     * @param dx2
     * @param dy2
     * @param sx1
     * @param sy1
     * @param sx2
     * @param sy2
     * @param observer
     * @return boolean
     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int, int,
     *      int, int, int, java.awt.image.ImageObserver)
     */
    public boolean drawImage(Image image, int dx1, int dy1, int dx2, int dy2,
                             int sx1, int sy1, int sx2, int sy2, ImageObserver observer) {
        // TODO Auto-generated method stub
        return false;
    }

    /**
     * @param x1
     * @param y1
     * @param x2
     * @param y2
     * @see java.awt.Graphics#drawLine(int, int, int, int)
     */
    public final void drawLine(int x1, int y1, int x2, int y2) {
        draw(new Line2D.Float(x1, y1, x2, y2));
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @see java.awt.Graphics#drawOval(int, int, int, int)
     */
    public final void drawOval(int x, int y, int width, int height) {
        draw(new Ellipse2D.Float(x, y, width, height));
    }

    /**
     * @param xPoints
     * @param yPoints
     * @param npoints
     * @see java.awt.Graphics#drawPolygon(int[], int[], int)
     */
    public final void drawPolygon(int[] xPoints, int[] yPoints, int npoints) {
        draw(new Polygon(xPoints, yPoints, npoints));
    }

    /**
     * @param xPoints
     * @param yPoints
     * @param npoints
     * @see java.awt.Graphics#drawPolyline(int[], int[], int)
     */
    public final void drawPolyline(int[] xPoints, int[] yPoints, int npoints) {
        final GeneralPath path = new GeneralPath(GeneralPath.WIND_NON_ZERO,
            npoints * 2);
        path.moveTo(xPoints[0], yPoints[0]);
        for (int i = 1; i < npoints; i++) {
            path.lineTo(xPoints[i], yPoints[i]);
        }
        draw(path);
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @param arcWidth
     * @param arcHeight
     * @see java.awt.Graphics#drawRoundRect(int, int, int, int, int, int)
     */
    public final void drawRoundRect(int x, int y, int width, int height,
                                    int arcWidth, int arcHeight) {
        draw(new RoundRectangle2D.Float(x, y, width, height, arcWidth,
            arcHeight));
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @param startAngle
     * @param arcAngle
     * @see java.awt.Graphics#fillArc(int, int, int, int, int, int)
     */
    public final void fillArc(int x, int y, int width, int height,
                              int startAngle, int arcAngle) {
        fill(new Arc2D.Float(x, y, width, height, startAngle, arcAngle,
            Arc2D.OPEN));
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @see java.awt.Graphics#fillOval(int, int, int, int)
     */
    public final void fillOval(int x, int y, int width, int height) {
        fill(new Ellipse2D.Float(x, y, width, height));
    }

    /**
     * @param xPoints
     * @param yPoints
     * @param npoints
     * @see java.awt.Graphics#fillPolygon(int[], int[], int)
     */
    public final void fillPolygon(int[] xPoints, int[] yPoints, int npoints) {
        fill(new Polygon(xPoints, yPoints, npoints));
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @see java.awt.Graphics#fillRect(int, int, int, int)
     */
    public final void fillRect(int x, int y, int width, int height) {
        fill(new Rectangle2D.Float(x, y, width, height));
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @param arcWidth
     * @param arcHeight
     * @see java.awt.Graphics#fillRoundRect(int, int, int, int, int, int)
     */
    public final void fillRoundRect(int x, int y, int width, int height,
                                    int arcWidth, int arcHeight) {
        fill(new RoundRectangle2D.Float(x, y, width, height, arcWidth,
            arcHeight));
    }

    /**
     * @return Shape
     * @see java.awt.Graphics#getClip()
     */
    public Shape getClip() {
        return clip;
    }

    /**
     * @return The clip bounds
     * @see java.awt.Graphics#getClipBounds()
     */
    public Rectangle getClipBounds() {
        return clip.getBounds();
    }

    /**
     * @return The color
     * @see java.awt.Graphics#getColor()
     */
    public Color getColor() {
        return fgColor;
    }

    /**
     * Gets the color set by setXORColor, or null when this Graphics is in Paint
     * mode.
     *
     * @return The XOR mode color
     */
    public Color getXORColor() {
        return xorColor;
    }

    /**
     * @return The current font
     * @see java.awt.Graphics#getFont()
     */
    public Font getFont() {
        return font;
    }

    /**
     * @param font
     * @return The metrics
     * @see java.awt.Graphics#getFontMetrics(java.awt.Font)
     */
    public FontMetrics getFontMetrics(Font font) {
        return Toolkit.getDefaultToolkit().getFontMetrics(font);
    }

    /**
     * @param x
     * @param y
     * @param width
     * @param height
     * @see java.awt.Graphics#setClip(int, int, int, int)
     */
    public void setClip(int x, int y, int width, int height) {
        Rectangle r = new Rectangle(x, y, width, height);
        if (transform != null)
            r.translate((int) transform.getTranslateX(), (int) transform.getTranslateY());
        clip = new Rectangle(x, y, width, height);
    }

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

    /**
     * @param color
     * @see java.awt.Graphics#setColor(java.awt.Color)
     */
    public void setColor(Color color) {
        if (color != null)
            this.fgColor = color;
    }

    /**
     * @param font
     * @see java.awt.Graphics#setFont(java.awt.Font)
     */
    public void setFont(Font font) {
        if (font != null)
            this.font = font;
    }

    /**
     * @see java.awt.Graphics#setPaintMode()
     */
    public void setPaintMode() {
        this.xorColor = null;
    }

    /**
     * @param color
     * @see java.awt.Graphics#setXORMode(java.awt.Color)
     */
    public void setXORMode(Color color) {
        this.xorColor = color;
    }

    protected final void transform(double[] srcPts, int srcOff,
                                   double[] dstPts, int dstOff, int num) {
        transform.transform(srcPts, srcOff, dstPts, dstOff, num);
    }

    protected final void transform(float[] srcPts, int srcOff, float[] dstPts,
                                   int dstOff, int num) {
        transform.transform(srcPts, srcOff, dstPts, dstOff, num);
    }

    protected final void transform(double[] srcPts, int srcOff, float[] dstPts,
                                   int dstOff, int num) {
        transform.transform(srcPts, srcOff, dstPts, dstOff, num);
    }

    protected final void transform(float[] srcPts, int srcOff, double[] dstPts,
                                   int dstOff, int num) {
        transform.transform(srcPts, srcOff, dstPts, dstOff, num);
    }

    public FontRenderContext getFontRenderContext() {
        //TODO review this
        return new FontRenderContext(new AffineTransform(), false, false);
    }

    /**
     * @see java.awt.Graphics2D#drawGlyphVector(java.awt.font.GlyphVector,
     *      float, float)
     */
    public void drawGlyphVector(GlyphVector g, float x, float y) {
        // TODO Auto-generated method stub

    }

}
TOP

Related Classes of org.jnode.awt.util.AbstractGraphics

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.