public abstract class BaseGraphics2D
extends java.awt.Graphics2D
We now use IText for pdf export, so the freehep library wasn't very useful anymore. We have decided to write this class to allow the wmf export to be stand alone. We took some of the principles from freehep.
This class defines most of Graphics2D methods in terms of a few selected basic ones. It's basically very simple and straightforward. If your target has good specific methods for a particular operation, feel free to overwrite the corresponding methods.
As a rule, data is defined to support Graphics2D operations, and the simpler operations call the more advanced one. For instance, translate(int,int) calls translate(double,double) which calls transform() with the appropriate transformation. Hence, defining the abstract method should give usable results, but redefining more specific methods should give better results. As an example, every drawing will be done though the Shape interface, but it will probably be more efficient to redefine specific rectangle, etc...
A few design decisions :
| Modifier | Constructor and Description |
|---|---|
protected |
BaseGraphics2D() |
|
BaseGraphics2D(BaseGraphics2D g)
Create a duplicate of this graphic context.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addRenderingHints(java.util.Map hints) |
void |
clearRect(int x,
int y,
int width,
int height) |
void |
clip(java.awt.Shape s) |
void |
clipRect(int x,
int y,
int width,
int height) |
abstract void |
copyArea(int x,
int y,
int width,
int height,
int dx,
int dy) |
abstract java.awt.Graphics |
create()
Create a clone of this graphics2d, rendering into the same picture.
|
abstract void |
dispose() |
void |
draw(java.awt.Shape s)
Draws a shape.
|
void |
drawArc(int x,
int y,
int width,
int height,
int startAngle,
int arcAngle) |
void |
drawGlyphVector(java.awt.font.GlyphVector g,
float x,
float y) |
void |
drawImage(java.awt.image.BufferedImage img,
java.awt.image.BufferedImageOp op,
int x,
int y) |
abstract boolean |
drawImage(java.awt.Image img,
java.awt.geom.AffineTransform xform,
java.awt.image.ImageObserver obs) |
boolean |
drawImage(java.awt.Image img,
int x,
int y,
java.awt.Color bgcolor,
java.awt.image.ImageObserver observer) |
boolean |
drawImage(java.awt.Image img,
int x,
int y,
java.awt.image.ImageObserver observer) |
boolean |
drawImage(java.awt.Image img,
int x,
int y,
int width,
int height,
java.awt.Color bgcolor,
java.awt.image.ImageObserver observer) |
boolean |
drawImage(java.awt.Image img,
int x,
int y,
int width,
int height,
java.awt.image.ImageObserver observer) |
boolean |
drawImage(java.awt.Image img,
int dx1,
int dy1,
int dx2,
int dy2,
int sx1,
int sy1,
int sx2,
int sy2,
java.awt.Color bgcolor,
java.awt.image.ImageObserver observer) |
boolean |
drawImage(java.awt.Image img,
int dx1,
int dy1,
int dx2,
int dy2,
int sx1,
int sy1,
int sx2,
int sy2,
java.awt.image.ImageObserver observer) |
void |
drawLine(int x1,
int y1,
int x2,
int y2) |
void |
drawOval(int x,
int y,
int width,
int height) |
void |
drawPolygon(int[] xPoints,
int[] yPoints,
int nPoints) |
void |
drawPolyline(int[] xPoints,
int[] yPoints,
int nPoints)
Draws a polygon.
|
void |
drawRenderableImage(java.awt.image.renderable.RenderableImage img,
java.awt.geom.AffineTransform xform)
A simple and probably false interpretation.
|
abstract void |
drawRenderedImage(java.awt.image.RenderedImage img,
java.awt.geom.AffineTransform xform) |
void |
drawRoundRect(int x,
int y,
int width,
int height,
int arcWidth,
int arcHeight) |
void |
drawString(java.text.AttributedCharacterIterator iterator,
float x,
float y) |
void |
drawString(java.text.AttributedCharacterIterator iterator,
int x,
int y) |
void |
drawString(java.lang.String s,
float x,
float y) |
void |
drawString(java.lang.String str,
int x,
int y) |
abstract void |
fill(java.awt.Shape s) |
void |
fillArc(int x,
int y,
int width,
int height,
int startAngle,
int arcAngle) |
void |
fillOval(int x,
int y,
int width,
int height) |
void |
fillPolygon(int[] xPoints,
int[] yPoints,
int nPoints) |
void |
fillRect(int x,
int y,
int width,
int height) |
void |
fillRoundRect(int x,
int y,
int width,
int height,
int arcWidth,
int arcHeight) |
java.awt.Color |
getBackground() |
java.awt.Shape |
getClip() |
java.awt.Rectangle |
getClipBounds() |
java.awt.Color |
getColor() |
java.awt.Composite |
getComposite() |
java.awt.GraphicsConfiguration |
getDeviceConfiguration() |
java.awt.Font |
getFont() |
java.awt.FontMetrics |
getFontMetrics(java.awt.Font f) |
java.awt.font.FontRenderContext |
getFontRenderContext() |
java.awt.Paint |
getPaint() |
protected java.awt.geom.GeneralPath |
getPathFor(int[] xPoints,
int[] yPoints,
int nPoints)
Builds a path for a polyline.
|
java.lang.Object |
getRenderingHint(java.awt.RenderingHints.Key hintKey) |
java.awt.RenderingHints |
getRenderingHints() |
java.awt.Stroke |
getStroke() |
java.awt.geom.AffineTransform |
getTransform() |
boolean |
hit(java.awt.Rectangle rect,
java.awt.Shape s,
boolean onStroke) |
void |
rotate(double theta) |
void |
rotate(double theta,
double x,
double y) |
void |
scale(double sx,
double sy) |
void |
setBackground(java.awt.Color color) |
void |
setClip(int x,
int y,
int width,
int height) |
void |
setClip(java.awt.Shape clip) |
void |
setColor(java.awt.Color c) |
void |
setComposite(java.awt.Composite comp) |
void |
setFont(java.awt.Font font) |
void |
setPaint(java.awt.Paint paint) |
abstract void |
setPaintMode() |
abstract void |
setProperties(java.util.Properties properties)
Communicates properties (which can be used as a generic system for
parameters) to the graphic system.
|
void |
setRenderingHint(java.awt.RenderingHints.Key hintKey,
java.lang.Object hintValue) |
void |
setRenderingHints(java.util.Map hints) |
void |
setStroke(java.awt.Stroke s) |
void |
setTransform(java.awt.geom.AffineTransform Tx) |
abstract void |
setXORMode(java.awt.Color c1)
Switches to Xor mode.
|
void |
shear(double shx,
double shy) |
void |
transform(java.awt.geom.AffineTransform Tx)
Transform the current system reference according to Tx.
|
void |
translate(double tx,
double ty) |
void |
translate(int x,
int y) |
protected BaseGraphics2D()
public BaseGraphics2D(BaseGraphics2D g)
To be used when writting copy constructor for subclasses.
g - public void addRenderingHints(java.util.Map hints)
addRenderingHints in class java.awt.Graphics2Dpublic void clearRect(int x,
int y,
int width,
int height)
clearRect in class java.awt.Graphicspublic void clip(java.awt.Shape s)
clip in class java.awt.Graphics2Dpublic void clipRect(int x,
int y,
int width,
int height)
clipRect in class java.awt.Graphicspublic abstract void copyArea(int x,
int y,
int width,
int height,
int dx,
int dy)
copyArea in class java.awt.Graphicspublic abstract java.awt.Graphics create()
return new MyGraphicsType(this);as implementation.
create in class java.awt.GraphicsGraphics.create()public abstract void dispose()
dispose in class java.awt.Graphicspublic void draw(java.awt.Shape s)
A basic, probably very suboptimal implementation of draw, which calls fill(shape). For the sake of efficiency, you should probably rewrite it.
draw in class java.awt.Graphics2DGraphics2D.draw(Shape)public void drawArc(int x,
int y,
int width,
int height,
int startAngle,
int arcAngle)
drawArc in class java.awt.Graphicspublic void drawGlyphVector(java.awt.font.GlyphVector g,
float x,
float y)
drawGlyphVector in class java.awt.Graphics2Dpublic void drawImage(java.awt.image.BufferedImage img,
java.awt.image.BufferedImageOp op,
int x,
int y)
drawImage in class java.awt.Graphics2Dpublic abstract boolean drawImage(java.awt.Image img,
java.awt.geom.AffineTransform xform,
java.awt.image.ImageObserver obs)
drawImage in class java.awt.Graphics2Dpublic boolean drawImage(java.awt.Image img,
int x,
int y,
java.awt.Color bgcolor,
java.awt.image.ImageObserver observer)
drawImage in class java.awt.Graphicspublic boolean drawImage(java.awt.Image img,
int x,
int y,
java.awt.image.ImageObserver observer)
drawImage in class java.awt.Graphicspublic boolean drawImage(java.awt.Image img,
int x,
int y,
int width,
int height,
java.awt.Color bgcolor,
java.awt.image.ImageObserver observer)
drawImage in class java.awt.Graphicspublic boolean drawImage(java.awt.Image img,
int x,
int y,
int width,
int height,
java.awt.image.ImageObserver observer)
drawImage in class java.awt.Graphicspublic boolean drawImage(java.awt.Image img,
int dx1,
int dy1,
int dx2,
int dy2,
int sx1,
int sy1,
int sx2,
int sy2,
java.awt.Color bgcolor,
java.awt.image.ImageObserver observer)
drawImage in class java.awt.Graphicspublic boolean drawImage(java.awt.Image img,
int dx1,
int dy1,
int dx2,
int dy2,
int sx1,
int sy1,
int sx2,
int sy2,
java.awt.image.ImageObserver observer)
drawImage in class java.awt.Graphicspublic void drawLine(int x1,
int y1,
int x2,
int y2)
drawLine in class java.awt.Graphicspublic void drawOval(int x,
int y,
int width,
int height)
drawOval in class java.awt.Graphicspublic void drawPolygon(int[] xPoints,
int[] yPoints,
int nPoints)
drawPolygon in class java.awt.Graphicspublic void drawPolyline(int[] xPoints,
int[] yPoints,
int nPoints)
The default implementation uses shapes. You can probably get something more efficient.
drawPolyline in class java.awt.GraphicsGraphics.drawPolyline(int[], int[], int)public void drawRenderableImage(java.awt.image.renderable.RenderableImage img,
java.awt.geom.AffineTransform xform)
drawRenderableImage in class java.awt.Graphics2DGraphics2D.drawRenderableImage(java.awt.image.renderable.RenderableImage,
java.awt.geom.AffineTransform)public abstract void drawRenderedImage(java.awt.image.RenderedImage img,
java.awt.geom.AffineTransform xform)
drawRenderedImage in class java.awt.Graphics2Dpublic void drawRoundRect(int x,
int y,
int width,
int height,
int arcWidth,
int arcHeight)
drawRoundRect in class java.awt.Graphicspublic void drawString(java.text.AttributedCharacterIterator iterator,
float x,
float y)
drawString in class java.awt.Graphics2Dpublic void drawString(java.text.AttributedCharacterIterator iterator,
int x,
int y)
drawString in class java.awt.Graphics2Dpublic void drawString(java.lang.String s,
float x,
float y)
drawString in class java.awt.Graphics2Dpublic void drawString(java.lang.String str,
int x,
int y)
drawString in class java.awt.Graphics2Dpublic abstract void fill(java.awt.Shape s)
fill in class java.awt.Graphics2Dpublic void fillArc(int x,
int y,
int width,
int height,
int startAngle,
int arcAngle)
fillArc in class java.awt.Graphicspublic void fillOval(int x,
int y,
int width,
int height)
fillOval in class java.awt.Graphicspublic void fillPolygon(int[] xPoints,
int[] yPoints,
int nPoints)
fillPolygon in class java.awt.Graphicspublic void fillRect(int x,
int y,
int width,
int height)
fillRect in class java.awt.Graphicspublic void fillRoundRect(int x,
int y,
int width,
int height,
int arcWidth,
int arcHeight)
fillRoundRect in class java.awt.Graphicspublic java.awt.Color getBackground()
getBackground in class java.awt.Graphics2Dpublic java.awt.Shape getClip()
getClip in class java.awt.Graphicspublic java.awt.Rectangle getClipBounds()
getClipBounds in class java.awt.Graphicspublic java.awt.Color getColor()
getColor in class java.awt.Graphicspublic java.awt.Composite getComposite()
getComposite in class java.awt.Graphics2Dpublic java.awt.Font getFont()
getFont in class java.awt.Graphicspublic java.awt.FontMetrics getFontMetrics(java.awt.Font f)
getFontMetrics in class java.awt.Graphicspublic java.awt.Paint getPaint()
getPaint in class java.awt.Graphics2Dprotected java.awt.geom.GeneralPath getPathFor(int[] xPoints,
int[] yPoints,
int nPoints)
This command can be used to create the path needed by most polygon oriented commands.
The path is not closed, but a simple closePath command will do.
xPoints - yPoints - nPoints - public java.lang.Object getRenderingHint(java.awt.RenderingHints.Key hintKey)
getRenderingHint in class java.awt.Graphics2Dpublic java.awt.RenderingHints getRenderingHints()
getRenderingHints in class java.awt.Graphics2Dpublic java.awt.Stroke getStroke()
getStroke in class java.awt.Graphics2Dpublic java.awt.geom.AffineTransform getTransform()
getTransform in class java.awt.Graphics2Dpublic boolean hit(java.awt.Rectangle rect,
java.awt.Shape s,
boolean onStroke)
hit in class java.awt.Graphics2Dpublic void rotate(double theta)
rotate in class java.awt.Graphics2Dpublic void rotate(double theta,
double x,
double y)
rotate in class java.awt.Graphics2Dpublic void scale(double sx,
double sy)
scale in class java.awt.Graphics2Dpublic void setBackground(java.awt.Color color)
setBackground in class java.awt.Graphics2Dpublic void setClip(int x,
int y,
int width,
int height)
setClip in class java.awt.Graphicspublic void setClip(java.awt.Shape clip)
setClip in class java.awt.Graphicspublic void setColor(java.awt.Color c)
setColor in class java.awt.Graphicspublic void setComposite(java.awt.Composite comp)
setComposite in class java.awt.Graphics2Dpublic void setFont(java.awt.Font font)
setFont in class java.awt.Graphicspublic void setPaint(java.awt.Paint paint)
setPaint in class java.awt.Graphics2Dpublic abstract void setPaintMode()
setPaintMode in class java.awt.Graphicspublic void setRenderingHint(java.awt.RenderingHints.Key hintKey,
java.lang.Object hintValue)
setRenderingHint in class java.awt.Graphics2Dpublic void setRenderingHints(java.util.Map hints)
setRenderingHints in class java.awt.Graphics2Dpublic void setStroke(java.awt.Stroke s)
setStroke in class java.awt.Graphics2Dpublic void setTransform(java.awt.geom.AffineTransform Tx)
setTransform in class java.awt.Graphics2Dpublic abstract void setXORMode(java.awt.Color c1)
setXORMode in class java.awt.GraphicsGraphics.setXORMode(java.awt.Color)public void shear(double shx,
double shy)
shear in class java.awt.Graphics2Dpublic void transform(java.awt.geom.AffineTransform Tx)
All scaling and assorted transformations in BaseGraphics2D use this method. Hence, if you want to modify the transformation system, simply redefine it.
transform in class java.awt.Graphics2DGraphics2D.transform(java.awt.geom.AffineTransform)public void translate(double tx,
double ty)
translate in class java.awt.Graphics2Dpublic void translate(int x,
int y)
translate in class java.awt.Graphics2Dpublic abstract void setProperties(java.util.Properties properties)
properties - public java.awt.GraphicsConfiguration getDeviceConfiguration()
getDeviceConfiguration in class java.awt.Graphics2Dpublic java.awt.font.FontRenderContext getFontRenderContext()
getFontRenderContext in class java.awt.Graphics2D