gnu.gcj.xlib

Class GC

Implemented Interfaces:
Cloneable

public class GC
extends Object
implements Cloneable

An X11 graphics context. Unlike a traditional X11 graphics context, the target drawable is part of the GC state. Implementation notes: There is no need to do coalescing of changes since Xlib will do this for us. The implementation relies on the Xlib GC cache and will not try to be clever.

Constructor Summary

GC(Drawable target)
Protected constructor, because GC.create(target) should be used instead.

Method Summary

void
clearArea(int x, int y, int w, int h, boolean exposures)
Clear area using the background pixel or pixmap of the drawable.
Object
clone()
Try to get a suitable GC from the drawable's cache.
void
copyArea(Drawable source, int srcX, int srcY, int destX, int destY, int width, int height)
GC
create()
static GC
create(Drawable target)
Create a GC, or if one is already cached for target, return that.
void
dispose()
Save this GC in the drawable's cache.
void
disposeImpl()
void
drawArc(int x, int y, int w, int h, int startAngle, int arcAngle)
void
drawLine(int x1, int y1, int x2, int y2)
void
drawPoint(int x, int y)
Draw a point using the current foreground color
void
drawRectangle(int x, int y, int w, int h)
void
drawString(String text, int x, int y)
void
fillArc(int x, int y, int w, int h, int startAngle, int arcAngle)
void
fillPolygon(int[] xPoints, int[] yPoints, int nPoints, int translateX, int translateY)
void
fillRectangle(int x, int y, int w, int h)
void
finalize()
Called on an object by the Virtual Machine at most once, at some point after the Object is determined unreachable but before it is destroyed.
Drawable
getDrawable()
void
putImage(XImage image, int srcX, int srcY, int destX, int destY, int width, int height)
void
setClipRectangles(Rectangle[] rectangles)
Set the clip region for the graphics operations performed by the GC.
void
setFont(Font font)
void
setForeground(long pixel)

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

GC

protected GC(Drawable target)
Protected constructor, because GC.create(target) should be used instead.

Method Details

clearArea

public void clearArea(int x,
                      int y,
                      int w,
                      int h,
                      boolean exposures)
Clear area using the background pixel or pixmap of the drawable. Note that this operation does not adhere to the current clip.

clone

public Object clone()
Try to get a suitable GC from the drawable's cache. If there isn't one, create one.
Overrides:
clone in interface Object

copyArea

public void copyArea(Drawable source,
                     int srcX,
                     int srcY,
                     int destX,
                     int destY,
                     int width,
                     int height)

create

public GC create()

create

public static GC create(Drawable target)
Create a GC, or if one is already cached for target, return that.
Parameters:
target - The Drawable for which a GC is needed
Returns:
The new or retrieved GC

dispose

public void dispose()
Save this GC in the drawable's cache. The "real" dispose (disposeImpl) is called when the drawable is finialized, to free X server resources.

disposeImpl

public void disposeImpl()

drawArc

public void drawArc(int x,
                    int y,
                    int w,
                    int h,
                    int startAngle,
                    int arcAngle)

drawLine

public void drawLine(int x1,
                     int y1,
                     int x2,
                     int y2)

drawPoint

public void drawPoint(int x,
                      int y)
Draw a point using the current foreground color
Parameters:
x - The x coordinate at which to draw

drawRectangle

public void drawRectangle(int x,
                          int y,
                          int w,
                          int h)

drawString

public void drawString(String text,
                       int x,
                       int y)

fillArc

public void fillArc(int x,
                    int y,
                    int w,
                    int h,
                    int startAngle,
                    int arcAngle)

fillPolygon

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

fillRectangle

public void fillRectangle(int x,
                          int y,
                          int w,
                          int h)

finalize

public void finalize()
Called on an object by the Virtual Machine at most once, at some point after the Object is determined unreachable but before it is destroyed. You would think that this means it eventually is called on every Object, but this is not necessarily the case. If execution terminates abnormally, garbage collection does not always happen. Thus you cannot rely on this method to always work. For finer control over garbage collection, use references from the java.lang.ref package.

Virtual Machines are free to not call this method if they can determine that it does nothing important; for example, if your class extends Object and overrides finalize to do simply super.finalize().

finalize() will be called by a Thread that has no locks on any Objects, and may be called concurrently. There are no guarantees on the order in which multiple objects are finalized. This means that finalize() is usually unsuited for performing actions that must be thread-safe, and that your implementation must be use defensive programming if it is to always work.

If an Exception is thrown from finalize() during garbage collection, it will be patently ignored and the Object will still be destroyed.

It is allowed, although not typical, for user code to call finalize() directly. User invocation does not affect whether automatic invocation will occur. It is also permitted, although not recommended, for a finalize() method to "revive" an object by making it reachable from normal code again.

Unlike constructors, finalize() does not get called for an object's superclass unless the implementation specifically calls super.finalize().

The default implementation does nothing.

Overrides:
finalize in interface Object

getDrawable

public Drawable getDrawable()

putImage

public void putImage(XImage image,
                     int srcX,
                     int srcY,
                     int destX,
                     int destY,
                     int width,
                     int height)

setClipRectangles

public void setClipRectangles(Rectangle[] rectangles)
Set the clip region for the graphics operations performed by the GC. This is one of the few costly operations of this class. It is suggested that the clip is only set or changed if really necessary. Higher level APIs can make such optimizations transparent.
Parameters:
rectangles - the union of these rectangles describe the clip region.

setFont

public void setFont(Font font)

setForeground

public void setForeground(long pixel)

Copyright (C) 2000, 2003 Free Software Foundation This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details.