gnu.java.awt.peer.gtk

Class CairoGraphics2D

Known Direct Subclasses:
BufferedImageGraphics, CairoSurfaceGraphics, ComponentGraphics

public abstract class CairoGraphics2D
extends Graphics2D

This is an abstract implementation of Graphics2D on Cairo. It should be subclassed for different Cairo contexts. Note for subclassers: Apart from the constructor (see comments below), The following abstract methods must be implemented: Graphics create() GraphicsConfiguration getDeviceConfiguration() copyArea(int x, int y, int width, int height, int dx, int dy) Also, dispose() must be overloaded to free any native datastructures used by subclass and in addition call super.dispose() to free the native cairographics2d structure and cairo_t.

Constructor Summary

CairoGraphics2D()
Constructor does nothing.

Method Summary

void
addRenderingHints(Map hints)
Adds/updates the rendering hint.
void
clearRect(int x, int y, int width, int height)
Note that the rest of the drawing methods go via fill() or draw() for the drawing, although subclasses may with to overload these methods where context-specific optimizations are possible (e.g. bitmaps and fillRect(int, int, int, int)
void
clip(Shape s)
Sets the clip region to the intersection of the current clipping region and s.
void
clipRect(int x, int y, int width, int height)
void
copy(CairoGraphics2D g, long cairo_t_pointer)
Same as above, but copies the state of another CairoGraphics2D.
void
copyArea(int ox, int oy, int owidth, int oheight, int odx, int ody)
CopyArea - performs clipping to the native surface as a convenience (requires getRealBounds).
protected abstract void
copyAreaImpl(int x, int y, int width, int height, int dx, int dy)
abstract Graphics
create()
These are declared abstract as there may be context-specific issues.
void
dispose()
Disposes the native cairographics2d structure, including the cairo_t and any gradient stuff, if allocated.
void
disposeNative(long pointer)
Dispose of allocate native resouces.
void
draw(Shape s)
Draws an outline around a shape using the current stroke and paint.
void
draw3DRect(int x, int y, int width, int height, boolean raised)
void
drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
void
drawGlyphVector(GlyphVector gv, float x, float y)
Draws a glyph vector at the specified location.
boolean
drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer)
boolean
drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
boolean
drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
boolean
drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
boolean
drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
boolean
drawImage(Image img, int x, int y, ImageObserver observer)
protected boolean
drawImage(Image img, AffineTransform xform, Color bgcolor, ImageObserver obs)
boolean
drawImage(Image img, AffineTransform xform, ImageObserver obs)
void
drawImage(BufferedImage image, BufferedImageOp op, int x, int y)
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)
void
drawRect(int x, int y, int width, int height)
void
drawRenderableImage(RenderableImage image, AffineTransform xform)
void
drawRenderedImage(RenderedImage image, AffineTransform xform)
void
drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
void
drawString(String str, float x, float y)
Draws a string at the specified location, using the current font.
void
drawString(String str, int x, int y)
Draws a string at the specified location, using the current font.
void
drawString(AttributedCharacterIterator ci, float x, float y)
Draws an attributed string at the specified location.
void
drawString(AttributedCharacterIterator ci, int x, int y)
Draws an attributed string at the specified location.
void
fill(Shape s)
Fills the interior of the specified shape using the current paint.
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)
void
finalize()
Generic destructor - call the native dispose() method.
static int[]
findSimpleIntegerArray(ColorModel cm, Raster raster)
Used by drawRaster and GdkPixbufDecoder
Color
getBackground()
Returns the color used by the Graphics.clearRect(int,int,int,int) method.
Shape
getClip()
Rectangle
getClipBounds()
protected Rectangle2D
getClipInDevSpace()
Color
getColor()
Composite
getComposite()
Return the current composite.
abstract GraphicsConfiguration
getDeviceConfiguration()
Font
getFont()
FontMetrics
getFontMetrics()
FontMetrics
getFontMetrics(Font f)
FontRenderContext
getFontRenderContext()
Should perhaps be contexct dependent, but this is left for now as an overloadable default implementation.
Paint
getPaint()
Returns the current paint.
protected abstract Rectangle2D
getRealBounds()
Object
getRenderingHint(RenderingHints.Key hintKey)
Returns the current value of a rendering hint.
RenderingHints
getRenderingHints()
Returns the current rendering hints.
Stroke
getStroke()
Returns the current stroke.
AffineTransform
getTransform()
Returns the current transform.
boolean
hit(Rectangle rect, Shape s, boolean onStroke)
void
rotate(double theta)
void
rotate(double theta, double x, double y)
void
scale(double sx, double sy)
void
setBackground(Color c)
Sets the background color (used by the Graphics.clearRect(int,int,int,int) method).
void
setClip(int x, int y, int width, int height)
void
setClip(Shape s)
void
setColor(Color c)
void
setComposite(Composite comp)
Sets the current composite context.
void
setFont(Font f)
void
setPaint(Paint p)
Sets the paint to be used for subsequent drawing operations.
void
setPaintMode()
void
setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
FIXME- support better
void
setRenderingHints(Map hints)
Replaces the current rendering hints with the supplied hints.
void
setStroke(Stroke st)
Sets the stroke to be used for subsequent drawing operations.
void
setTransform(AffineTransform tx)
Set the current transform
void
setXORMode(Color c)
void
setup(long cairo_t_pointer)
Sets up the default values and allocates the native cairographics2d structure
void
shear(double shearX, double shearY)
String
toString()
void
transform(AffineTransform tx)
Sets the current transform to a concatenation of transform and the existing transform.
void
translate(double tx, double ty)
Translate the system of the co-ordinates.
void
translate(int x, int y)

Methods inherited from class java.awt.Graphics2D

addRenderingHints, clip, draw, draw3DRect, drawGlyphVector, drawImage, drawImage, drawRenderableImage, drawRenderedImage, drawString, drawString, drawString, drawString, fill, fill3DRect, getBackground, getComposite, getDeviceConfiguration, getFontRenderContext, getPaint, getRenderingHint, getRenderingHints, getStroke, getTransform, hit, rotate, rotate, scale, setBackground, setComposite, setPaint, setRenderingHint, setRenderingHints, setStroke, setTransform, shear, transform, translate, translate

Methods inherited from class java.awt.Graphics

clearRect, clipRect, copyArea, create, create, dispose, draw3DRect, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, drawString, drawString, fill3DRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString, translate

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

CairoGraphics2D

public CairoGraphics2D()
Constructor does nothing.

Method Details

addRenderingHints

public void addRenderingHints(Map hints)
Adds/updates the rendering hint.
Overrides:
addRenderingHints in interface Graphics2D
Parameters:
hints - the hints to add or update.

clearRect

public void clearRect(int x,
                      int y,
                      int width,
                      int height)
Note that the rest of the drawing methods go via fill() or draw() for the drawing, although subclasses may with to overload these methods where context-specific optimizations are possible (e.g. bitmaps and fillRect(int, int, int, int)
Overrides:
clearRect in interface Graphics

clip

public void clip(Shape s)
Sets the clip region to the intersection of the current clipping region and s.
Overrides:
clip in interface Graphics2D
Parameters:
s - the shape to intersect with the current clipping region.

clipRect

public void clipRect(int x,
                     int y,
                     int width,
                     int height)
Overrides:
clipRect in interface Graphics

copy

public void copy(CairoGraphics2D g,
                 long cairo_t_pointer)
Same as above, but copies the state of another CairoGraphics2D.

copyArea

public void copyArea(int ox,
                     int oy,
                     int owidth,
                     int oheight,
                     int odx,
                     int ody)
CopyArea - performs clipping to the native surface as a convenience (requires getRealBounds). Then calls copyAreaImpl.
Overrides:
copyArea in interface Graphics

copyAreaImpl

protected abstract void copyAreaImpl(int x,
                                     int y,
                                     int width,
                                     int height,
                                     int dx,
                                     int dy)

create

public abstract Graphics create()
These are declared abstract as there may be context-specific issues.
Overrides:
create in interface Graphics

dispose

public void dispose()
Disposes the native cairographics2d structure, including the cairo_t and any gradient stuff, if allocated. Subclasses should of course overload and call this if they have additional native structures.
Overrides:
dispose in interface Graphics

disposeNative

public void disposeNative(long pointer)
Dispose of allocate native resouces.

draw

public void draw(Shape s)
Draws an outline around a shape using the current stroke and paint.
Overrides:
draw in interface Graphics2D
Parameters:

draw3DRect

public void draw3DRect(int x,
                       int y,
                       int width,
                       int height,
                       boolean raised)
Overrides:
draw3DRect in interface Graphics2D

drawArc

public void drawArc(int x,
                    int y,
                    int width,
                    int height,
                    int startAngle,
                    int arcAngle)
Overrides:
drawArc in interface Graphics

drawGlyphVector

public void drawGlyphVector(GlyphVector gv,
                            float x,
                            float y)
Draws a glyph vector at the specified location.
Overrides:
drawGlyphVector in interface Graphics2D
Parameters:
x - the x-coordinate.
y - the y-coordinate.

drawImage

public boolean drawImage(Image img,
                         int dx1,
                         int dy1,
                         int dx2,
                         int dy2,
                         int sx1,
                         int sy1,
                         int sx2,
                         int sy2,
                         Color bgcolor,
                         ImageObserver observer)
Overrides:
drawImage in interface Graphics

drawImage

public boolean drawImage(Image img,
                         int dx1,
                         int dy1,
                         int dx2,
                         int dy2,
                         int sx1,
                         int sy1,
                         int sx2,
                         int sy2,
                         ImageObserver observer)
Overrides:
drawImage in interface Graphics

drawImage

public boolean drawImage(Image img,
                         int x,
                         int y,
                         int width,
                         int height,
                         Color bgcolor,
                         ImageObserver observer)
Overrides:
drawImage in interface Graphics

drawImage

public boolean drawImage(Image img,
                         int x,
                         int y,
                         int width,
                         int height,
                         ImageObserver observer)
Overrides:
drawImage in interface Graphics

drawImage

public boolean drawImage(Image img,
                         int x,
                         int y,
                         Color bgcolor,
                         ImageObserver observer)
Overrides:
drawImage in interface Graphics

drawImage

public boolean drawImage(Image img,
                         int x,
                         int y,
                         ImageObserver observer)
Overrides:
drawImage in interface Graphics

drawImage

protected boolean drawImage(Image img,
                            AffineTransform xform,
                            Color bgcolor,
                            ImageObserver obs)

drawImage

public boolean drawImage(Image img,
                         AffineTransform xform,
                         ImageObserver obs)
Overrides:
drawImage in interface Graphics2D

drawImage

public void drawImage(BufferedImage image,
                      BufferedImageOp op,
                      int x,
                      int y)
Overrides:
drawImage in interface Graphics2D

drawLine

public void drawLine(int x1,
                     int y1,
                     int x2,
                     int y2)
Overrides:
drawLine in interface Graphics

drawOval

public void drawOval(int x,
                     int y,
                     int width,
                     int height)
Overrides:
drawOval in interface Graphics

drawPolygon

public void drawPolygon(int[] xPoints,
                        int[] yPoints,
                        int nPoints)

drawPolyline

public void drawPolyline(int[] xPoints,
                         int[] yPoints,
                         int nPoints)

drawRect

public void drawRect(int x,
                     int y,
                     int width,
                     int height)
Overrides:
drawRect in interface Graphics

drawRenderableImage

public void drawRenderableImage(RenderableImage image,
                                AffineTransform xform)
Overrides:
drawRenderableImage in interface Graphics2D

drawRenderedImage

public void drawRenderedImage(RenderedImage image,
                              AffineTransform xform)
Overrides:
drawRenderedImage in interface Graphics2D

drawRoundRect

public void drawRoundRect(int x,
                          int y,
                          int width,
                          int height,
                          int arcWidth,
                          int arcHeight)
Overrides:
drawRoundRect in interface Graphics

drawString

public void drawString(String str,
                       float x,
                       float y)
Draws a string at the specified location, using the current font.
Overrides:
drawString in interface Graphics2D
Parameters:
x - the x-coordinate.
y - the y-coordinate.

drawString

public void drawString(String str,
                       int x,
                       int y)
Draws a string at the specified location, using the current font.
Overrides:
drawString in interface Graphics2D
Parameters:
x - the x-coordinate.
y - the y-coordinate.

drawString

public void drawString(AttributedCharacterIterator ci,
                       float x,
                       float y)
Draws an attributed string at the specified location.
Overrides:
drawString in interface Graphics2D
Parameters:
x - the x-coordinate.
y - the y-coordinate.

drawString

public void drawString(AttributedCharacterIterator ci,
                       int x,
                       int y)
Draws an attributed string at the specified location.
Overrides:
drawString in interface Graphics2D
Parameters:
x - the x-coordinate.
y - the y-coordinate.

fill

public void fill(Shape s)
Fills the interior of the specified shape using the current paint.
Overrides:
fill in interface Graphics2D
Parameters:

fillArc

public void fillArc(int x,
                    int y,
                    int width,
                    int height,
                    int startAngle,
                    int arcAngle)
Overrides:
fillArc in interface Graphics

fillOval

public void fillOval(int x,
                     int y,
                     int width,
                     int height)
Overrides:
fillOval in interface Graphics

fillPolygon

public void fillPolygon(int[] xPoints,
                        int[] yPoints,
                        int nPoints)

fillRect

public void fillRect(int x,
                     int y,
                     int width,
                     int height)
Overrides:
fillRect in interface Graphics

fillRoundRect

public void fillRoundRect(int x,
                          int y,
                          int width,
                          int height,
                          int arcWidth,
                          int arcHeight)
Overrides:
fillRoundRect in interface Graphics

finalize

public void finalize()
Generic destructor - call the native dispose() method.
Overrides:
finalize in interface Graphics

findSimpleIntegerArray

public static int[] findSimpleIntegerArray(ColorModel cm,
                                           Raster raster)
Used by drawRaster and GdkPixbufDecoder

getBackground

public Color getBackground()
Returns the color used by the Graphics.clearRect(int,int,int,int) method.
Overrides:
getBackground in interface Graphics2D
Returns:
The background color.

getClip

public Shape getClip()
Overrides:
getClip in interface Graphics

getClipBounds

public Rectangle getClipBounds()
Overrides:
getClipBounds in interface Graphics

getClipInDevSpace

protected Rectangle2D getClipInDevSpace()

getColor

public Color getColor()
Overrides:
getColor in interface Graphics

getComposite

public Composite getComposite()
Return the current composite.
Overrides:
getComposite in interface Graphics2D

getDeviceConfiguration

public abstract GraphicsConfiguration getDeviceConfiguration()
Overrides:
getDeviceConfiguration in interface Graphics2D

getFont

public Font getFont()
Overrides:
getFont in interface Graphics

getFontMetrics

public FontMetrics getFontMetrics()
Overrides:
getFontMetrics in interface Graphics

getFontMetrics

public FontMetrics getFontMetrics(Font f)
Overrides:
getFontMetrics in interface Graphics

getFontRenderContext

public FontRenderContext getFontRenderContext()
Should perhaps be contexct dependent, but this is left for now as an overloadable default implementation.
Overrides:
getFontRenderContext in interface Graphics2D

getPaint

public Paint getPaint()
Returns the current paint.
Overrides:
getPaint in interface Graphics2D
Returns:
The current paint.

getRealBounds

protected abstract Rectangle2D getRealBounds()

getRenderingHint

public Object getRenderingHint(RenderingHints.Key hintKey)
Returns the current value of a rendering hint.
Overrides:
getRenderingHint in interface Graphics2D
Parameters:
hintKey - the key for the hint.
Returns:
The value for the specified hint.

getRenderingHints

public RenderingHints getRenderingHints()
Returns the current rendering hints.
Overrides:
getRenderingHints in interface Graphics2D
Returns:
The current rendering hints.

getStroke

public Stroke getStroke()
Returns the current stroke.
Overrides:
getStroke in interface Graphics2D
Returns:
The current stroke.

getTransform

public AffineTransform getTransform()
Returns the current transform.
Overrides:
getTransform in interface Graphics2D
Returns:
The current transform.

hit

public boolean hit(Rectangle rect,
                   Shape s,
                   boolean onStroke)
Overrides:
hit in interface Graphics2D

rotate

public void rotate(double theta)
Overrides:
rotate in interface Graphics2D

rotate

public void rotate(double theta,
                   double x,
                   double y)
Overrides:
rotate in interface Graphics2D

scale

public void scale(double sx,
                  double sy)
Overrides:
scale in interface Graphics2D

setBackground

public void setBackground(Color c)
Sets the background color (used by the Graphics.clearRect(int,int,int,int) method).
Overrides:
setBackground in interface Graphics2D
Parameters:

setClip

public void setClip(int x,
                    int y,
                    int width,
                    int height)
Overrides:
setClip in interface Graphics

setClip

public void setClip(Shape s)
Overrides:
setClip in interface Graphics

setColor

public void setColor(Color c)
Overrides:
setColor in interface Graphics

setComposite

public void setComposite(Composite comp)
Sets the current composite context.
Overrides:
setComposite in interface Graphics2D

setFont

public void setFont(Font f)
Overrides:
setFont in interface Graphics

setPaint

public void setPaint(Paint p)
Sets the paint to be used for subsequent drawing operations.
Overrides:
setPaint in interface Graphics2D
Parameters:

setPaintMode

public void setPaintMode()
Overrides:
setPaintMode in interface Graphics

setRenderingHint

public void setRenderingHint(RenderingHints.Key hintKey,
                             Object hintValue)
FIXME- support better
Overrides:
setRenderingHint in interface Graphics2D

setRenderingHints

public void setRenderingHints(Map hints)
Replaces the current rendering hints with the supplied hints.
Overrides:
setRenderingHints in interface Graphics2D
Parameters:
hints - the hints.

setStroke

public void setStroke(Stroke st)
Sets the stroke to be used for subsequent drawing operations.
Overrides:
setStroke in interface Graphics2D
Parameters:

setTransform

public void setTransform(AffineTransform tx)
Set the current transform
Overrides:
setTransform in interface Graphics2D

setXORMode

public void setXORMode(Color c)
Overrides:
setXORMode in interface Graphics

setup

public void setup(long cairo_t_pointer)
Sets up the default values and allocates the native cairographics2d structure
Parameters:

shear

public void shear(double shearX,
                  double shearY)
Overrides:
shear in interface Graphics2D

toString

public String toString()
Overrides:
toString in interface Graphics

transform

public void transform(AffineTransform tx)
Sets the current transform to a concatenation of transform and the existing transform.
Overrides:
transform in interface Graphics2D
Parameters:

translate

public void translate(double tx,
                      double ty)
Translate the system of the co-ordinates. As translation is a frequent operation, it is done in an optimised way, unlike scaling and rotating.
Overrides:
translate in interface Graphics2D

translate

public void translate(int x,
                      int y)
Overrides:
translate in interface Graphics2D

CairoGraphics2D.java -- Copyright (C) 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath 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 General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.