📄 gc.java
字号:
/* Copyright (C) 2000, 2003 Free Software Foundation This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License. Please consult the file "LIBGCJ_LICENSE" fordetails. */package gnu.gcj.xlib;import gnu.gcj.RawData;import java.awt.Rectangle;/** * 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. * * @author Rolf W. Rasmussen <rolfwr@ii.uib.no> */public class GC implements Cloneable{ /** Protected constructor, because GC.create(target) should be used instead. */ protected GC(Drawable target) { this.target = target; initStructure(null); } /** Try to get a suitable GC from the drawable's cache. * If there isn't one, create one. */ public Object clone() { try { GC gcClone = target.getGCFromCache (); if (gcClone==null) { gcClone = (GC) super.clone(); gcClone.structure = null; } gcClone.initStructure(this); gcClone.updateClip(clipRectangles); return gcClone; } catch (CloneNotSupportedException ex) { // This should never happen. throw new InternalError (); } } private native void initStructure(GC copyFrom); public GC create() { return (GC) clone(); } /** Create a GC, or if one is already cached for target, return that. * @param target The Drawable for which a GC is needed * @return The new or retrieved GC */ static public GC create (Drawable target) { GC returnValue = target.getGCFromCache (); if (returnValue == null) returnValue = new GC (target); return returnValue; } public void finalize() { disposeImpl(); } /** Save this GC in the drawable's cache. * The "real" dispose (disposeImpl) is called when the * drawable is finialized, to free X server resources. */ public void dispose() { target.putGCInCache (this); } public synchronized native void disposeImpl(); public native void setForeground(long pixel); public native void setFont(gnu.gcj.xlib.Font font); /** * 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. * * @param rectangles the union of these rectangles describe the clip * region. */ public void setClipRectangles(Rectangle[] rectangles) { clipRectangles = rectangles; updateClip(clipRectangles); } public native void drawString(String text, int x, int y); public native void drawLine(int x1, int y1, int x2, int y2); public native void drawRectangle(int x, int y, int w, int h); public native void fillRectangle(int x, int y, int w, int h); public native void fillPolygon(int[] xPoints, int[] yPoints, int nPoints, int translateX, int translateY); public native void drawArc(int x, int y, int w, int h, int startAngle, int arcAngle); public native void fillArc(int x, int y, int w, int h, int startAngle, int arcAngle); /** * * Clear area using the background pixel or pixmap of the drawable. * Note that this operation does not adhere to the current clip. */ public native void clearArea(int x, int y, int w, int h, boolean exposures); /** Draw a point using the current foreground color * @param x The x coordinate at which to draw * @param t The y coordinate at which to draw */ public native void drawPoint (int x, int y); public native void putImage(XImage image, int srcX, int srcY, int destX, int destY, int width, int height); public native void copyArea (Drawable source, int srcX, int srcY, int destX, int destY, int width, int height); public Drawable getDrawable() { return target; } private native void updateClip(Rectangle[] rectangles); private Drawable target; private RawData structure; private Rectangle[] clipRectangles;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -