// Copyright 2000-2006, FreeHEP package org.freehep.graphicsio; import com.google.code.appengine.awt.Color; import com.google.code.appengine.awt.Dimension; import com.google.code.appengine.awt.Font; import com.google.code.appengine.awt.GradientPaint; import com.google.code.appengine.awt.Graphics; import com.google.code.appengine.awt.GraphicsConfiguration; import com.google.code.appengine.awt.Paint; import com.google.code.appengine.awt.Rectangle; import com.google.code.appengine.awt.Shape; import com.google.code.appengine.awt.TexturePaint; import com.google.code.appengine.awt.geom.AffineTransform; import com.google.code.appengine.awt.image.RenderedImage; import java.io.IOException; import org.freehep.graphics2d.VectorGraphics; /** * This class provides a dummy Graphics2D class, which issues warnings for all * non implemented methods. It also describes how to implement these methods. It * serves as an example to start the implementation for a new output format. * * @author Mark Donszelmann * @version $Id: DummyGraphics2D.java 8584 2006-08-10 23:06:37Z duns $ */ public class DummyGraphics2D extends AbstractVectorGraphicsIO { /* * ================================================================================ * Table of Contents: ------------------ 1. Constructors & Factory Methods * 2. Document Settings 3. Header, Trailer, Multipage & Comments 3.1 Header & * Trailer 3.2 MultipageDocument methods 4. Create & Dispose 5. Drawing * Methods 5.1. shapes (draw/fill) 5.1.1. lines, rectangles, round * rectangles 5.1.2. polylines, polygons 5.1.3. ovals, arcs 5.1.4. shapes * 5.2. Images 5.3. Strings 6. Transformations 7. Clipping 8. Graphics State / * Settings 8.1. stroke/linewidth 8.2. paint/color 8.3. font 8.4. rendering * hints 9. Auxiliary 10. Private/Utility Methos * ================================================================================ */ /* * ================================================================================ * 1. Constructors & Factory Methods * ================================================================================ */ public DummyGraphics2D(Dimension size, boolean doRestoreOnDispose) { super(size, doRestoreOnDispose); // Create a graphics context with given imageBounds. // This constructor is used by the user to create the initial graphics // context. // doRestoreOnDispose is used to call writeGraphicsRestore(), // when the graphics context is being disposed off. } protected DummyGraphics2D(AbstractVectorGraphicsIO graphics, boolean doRestoreOnDispose) { super(graphics, doRestoreOnDispose); // Create a graphics context from a given graphics context. // This constructor is used by the system to clone a given graphics // context. // doRestoreOnDispose is used to call writeGraphicsRestore(), // when the graphics context is being disposed off. } /* * ================================================================================ | * 2. Document Settings * ================================================================================ */ /* * ================================================================================ | * 3. Header, Trailer, Multipage & Comments * ================================================================================ */ /* 3.1 Header & Trailer */ public void writeHeader() throws IOException { writeWarning(getClass() + ": writeHeader() not implemented."); // Write out the header to the output stream. } public void writeBackground() throws IOException { writeWarning(getClass() + ": writeBackground() not implemented."); // Write out the background to the output stream. } public void writeTrailer() throws IOException { writeWarning(getClass() + ": writeTrailer() not implemented."); // Write out the trailer to the output stream. } public void closeStream() throws IOException { writeWarning(getClass() + ": closeStream() not implemented."); // Close the output stream. } /* 3.2 MultipageDocument methods */ /* * ================================================================================ * 4. Create & Dispose * ================================================================================ */ public Graphics create() { // Create a new graphics context from the current one. try { // Save the current context for restore later. writeGraphicsSave(); } catch (IOException e) { } // The correct graphics context should be created. return new DummyGraphics2D(this, true); } public Graphics create(double x, double y, double width, double height) { // Create a new graphics context from the current one. try { // Save the current context for restore later. writeGraphicsSave(); } catch (IOException e) { } // The correct graphics context should be created. VectorGraphics graphics = new DummyGraphics2D(this, true); graphics.clipRect(x, y, width, height); return graphics; } protected void writeGraphicsSave() throws IOException { writeWarning(getClass() + ": writeGraphicsSave() not implemented."); // Write a graphics context save. // If the output format does not support this, keep a stack yourself. } protected void writeGraphicsRestore() throws IOException { writeWarning(getClass() + ": writeGraphicsRestore() not implemented."); // Write a graphics context restore. // If the output format does not support this, keep a stack yourself. } /* * ================================================================================ | * 5. Drawing Methods * ================================================================================ */ /* 5.1.4. shapes */ public void draw(Shape shape) { writeWarning(getClass() + ": draw(Shape) not implemented."); // Write out the stroke of the shape. } public void fill(Shape shape) { writeWarning(getClass() + ": fill(Shape) not implemented."); // Write out the fill of the shape. } public void fillAndDraw(Shape shape, Color fillColor) { writeWarning(getClass() + ": fillAndDraw(Shape, Color) not implemented."); // Write out the fill with fillColor and stroke of the shape in // getColor(). } /* 5.2. Images */ public void copyArea(int x, int y, int width, int height, int dx, int dy) { writeWarning(getClass() + ": copyArea(int, int, int, int, int, int) not implemented."); // Mostly unimplemented. } protected void writeImage(RenderedImage image, AffineTransform xform, Color bkg) throws IOException { writeWarning(getClass() + ": writeImage(RenderedImage, AffineTransform, Color) not implemented."); // Write out the image. } /* 5.3. Strings */ protected void writeString(String string, double x, double y) throws IOException { writeWarning(getClass() + ": drawString(String, double, double) not implemented."); // Write out the string. } /* * ================================================================================ | * 6. Transformations * ================================================================================ */ protected void writeTransform(AffineTransform t) throws IOException { writeWarning(getClass() + ": writeTransform(AffineTransform) not implemented."); // Write out the transform to be applied to the internal transform of // the output // format. // You can also use the currentTransform. } protected void writeSetTransform(AffineTransform t) throws IOException { writeWarning(getClass()+": writeTransform(AffineTransform) not implemented."); // Clear the currentTransform and write out the transform to // be applied to the internal transform of the output format. } /* * ================================================================================ | * 7. Clipping * ================================================================================ */ protected void writeClip(Shape s) throws IOException { writeWarning(getClass() + ": writeClip(Shape) not implemented."); // Write out the clip shape. } protected void writeSetClip(Shape s) throws IOException { writeWarning(getClass()+": writeSetClip(Shape) not implemented."); // Write out the clip shape. } /* * ================================================================================ | * 8. Graphics State * ================================================================================ */ /* 8.1. stroke/linewidth */ protected void writeWidth(float width) throws IOException { writeWarning(getClass() + ": writeWidth(float) not implemented."); // Write out the stroke width. } protected void writeCap(int cap) throws IOException { writeWarning(getClass() + ": writeCap(int) not implemented."); // Write out the stroke cap. } protected void writeJoin(int join) throws IOException { writeWarning(getClass() + ": writeJoin(int) not implemented."); // Write out the stroke join. } protected void writeMiterLimit(float limit) throws IOException { writeWarning(getClass() + ": writeMiterLimit(float) not implemented."); // Write out the stroke miter limit. } protected void writeDash(float[] dash, float phase) throws IOException { writeWarning(getClass() + ": writeDash(float[], float) not implemented."); // Write out the stroke dash. } /* 8.2. paint/color */ public void setPaintMode() { writeWarning(getClass() + ": setPaintMode() not implemented."); // Mostly unimplemented. } public void setXORMode(Color c1) { writeWarning(getClass() + ": setXORMode(Color) not implemented."); // Mostly unimplemented. } protected void writePaint(Color p) throws IOException { writeWarning(getClass() + ": writePaint(Color) not implemented."); // Write out the color paint. } protected void writePaint(GradientPaint p) throws IOException { writeWarning(getClass() + ": writePaint(GradientPaint) not implemented."); // Write out the gradient paint. } protected void writePaint(TexturePaint p) throws IOException { writeWarning(getClass() + ": writePaint(TexturePaint) not implemented."); // Write out the texture paint. } protected void writePaint(Paint p) throws IOException { writeWarning(getClass() + ": writePaint(Paint) not implemented for " + p.getClass()); // Write out the paint. } /* 8.3. font */ protected void writeFont(Font font) throws IOException { writeWarning(getClass() + ": writeFont(Font) not implemented."); } /* 8.4. rendering hints */ /* * ================================================================================ | * 9. Auxiliary * ================================================================================ */ public GraphicsConfiguration getDeviceConfiguration() { writeWarning(getClass() + ": getDeviceConfiguration() not implemented."); // Mostly unimplemented return null; } public boolean hit(Rectangle rect, Shape s, boolean onStroke) { writeWarning(getClass() + ": hit(Rectangle, Shape, boolean) not implemented."); // Mostly unimplemented return false; } public void writeComment(String comment) throws IOException { writeWarning(getClass() + ": writeComment(String) not implemented."); // Write out the comment. } public String toString() { return "DummyGraphics"; } }