1:
37:
38:
39: package ;
40:
41: import ;
42:
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49: import ;
50: import ;
51: import ;
52: import ;
53: import ;
54:
55: import ;
56:
57: public class GdkGraphicsEnvironment extends ClasspathGraphicsEnvironment
58: {
59: private final int native_state = GtkGenericPeer.getUniqueInteger ();
60:
61: private GdkScreenGraphicsDevice defaultDevice;
62:
63: private GdkScreenGraphicsDevice[] devices;
64:
65:
71: private Pointer display;
72:
73: static
74: {
75: System.loadLibrary("gtkpeer");
76:
77: GtkToolkit.initializeGlobalIDs();
78: initIDs();
79: }
80:
81: private static native void initIDs();
82:
83: public GdkGraphicsEnvironment ()
84: {
85: nativeInitState();
86: }
87:
88: native void nativeInitState();
89:
90: public GraphicsDevice[] getScreenDevices ()
91: {
92: if (devices == null)
93: {
94: devices = nativeGetScreenDevices();
95: }
96:
97: return (GraphicsDevice[]) devices.clone();
98: }
99:
100: private native GdkScreenGraphicsDevice[] nativeGetScreenDevices();
101:
102: public GraphicsDevice getDefaultScreenDevice ()
103: {
104: if (GraphicsEnvironment.isHeadless ())
105: throw new HeadlessException ();
106:
107: synchronized (GdkGraphicsEnvironment.class)
108: {
109: if (defaultDevice == null)
110: {
111: defaultDevice = nativeGetDefaultScreenDevice();
112: }
113: }
114:
115: return defaultDevice;
116: }
117:
118: private native GdkScreenGraphicsDevice nativeGetDefaultScreenDevice();
119:
120: public Graphics2D createGraphics (BufferedImage image)
121: {
122: Raster raster = image.getRaster();
123: if(raster instanceof CairoSurface)
124: return ((CairoSurface)raster).getGraphics();
125:
126: return new BufferedImageGraphics( image );
127: }
128:
129: private native int nativeGetNumFontFamilies();
130: private native void nativeGetFontFamilies(String[] family_names);
131:
132: public Font[] getAllFonts ()
133: {
134: throw new java.lang.UnsupportedOperationException ();
135: }
136:
137: public String[] getAvailableFontFamilyNames ()
138: {
139: String[] family_names;
140: int array_size;
141:
142: array_size = nativeGetNumFontFamilies();
143: family_names = new String[array_size];
144:
145: nativeGetFontFamilies(family_names);
146: return family_names;
147: }
148:
149: public String[] getAvailableFontFamilyNames (Locale l)
150: {
151: throw new java.lang.UnsupportedOperationException ();
152: }
153:
154:
157: native int[] getMouseCoordinates();
158: native boolean isWindowUnderMouse(GtkWindowPeer windowPeer);
159:
160: public WritableRaster createRaster(ColorModel cm, SampleModel sm)
161: {
162: if (CairoSurface.isCompatibleSampleModel(sm)
163: && CairoSurface.isCompatibleColorModel(cm))
164: return new CairoSurface(sm.getWidth(), sm.getHeight());
165: else
166: return null;
167: }
168: }