1 | /* |
2 | * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. |
3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 | * |
5 | * This code is free software; you can redistribute it and/or modify it |
6 | * under the terms of the GNU General Public License version 2 only, as |
7 | * published by the Free Software Foundation. Oracle designates this |
8 | * particular file as subject to the "Classpath" exception as provided |
9 | * by Oracle in the LICENSE file that accompanied this code. |
10 | * |
11 | * This code is distributed in the hope that it will be useful, but WITHOUT |
12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
14 | * version 2 for more details (a copy is included in the LICENSE file that |
15 | * accompanied this code). |
16 | * |
17 | * You should have received a copy of the GNU General Public License version |
18 | * 2 along with this work; if not, write to the Free Software Foundation, |
19 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
20 | * |
21 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
22 | * or visit www.oracle.com if you need additional information or have any |
23 | * questions. |
24 | */ |
25 | |
26 | /* |
27 | * Motif-specific data structures for AWT Java objects. |
28 | * |
29 | */ |
30 | #ifndef _AWT_P_H_ |
31 | #define _AWT_P_H_ |
32 | |
33 | /* turn on to do event filtering */ |
34 | #define NEW_EVENT_MODEL |
35 | /* turn on to only filter keyboard events */ |
36 | #define KEYBOARD_ONLY_EVENTS |
37 | |
38 | #include <stdarg.h> |
39 | #include <stdio.h> |
40 | #include <stdlib.h> |
41 | #include <string.h> |
42 | #include <unistd.h> |
43 | #ifndef HEADLESS |
44 | #include <X11/extensions/Xrender.h> |
45 | #endif /* !HEADLESS */ |
46 | #include "awt.h" |
47 | #include "awt_util.h" |
48 | #include "color.h" |
49 | #include "colordata.h" |
50 | #include "gdefs.h" |
51 | |
52 | #ifndef HEADLESS |
53 | #ifndef min |
54 | #define min(a,b) ((a) <= (b)? (a):(b)) |
55 | #endif |
56 | #ifndef max |
57 | #define max(a,b) ((a) >= (b)? (a):(b)) |
58 | #endif |
59 | #endif /* !HEADLESS */ |
60 | |
61 | #define RepaintPending_NONE 0 |
62 | #define RepaintPending_REPAINT (1 << 0) |
63 | #define RepaintPending_EXPOSE (1 << 1) |
64 | #define LOOKUPSIZE 32 |
65 | |
66 | #ifndef HEADLESS |
67 | |
68 | typedef XRenderPictFormat * |
69 | XRenderFindVisualFormatFunc (Display *dpy, _Xconst Visual *visual); |
70 | |
71 | typedef struct _AwtGraphicsConfigData { |
72 | int awt_depth; |
73 | Colormap awt_cmap; |
74 | XVisualInfo awt_visInfo; |
75 | int awt_num_colors; |
76 | awtImageData *awtImage; |
77 | int (*AwtColorMatch)(int, int, int, |
78 | struct _AwtGraphicsConfigData *); |
79 | XImage *monoImage; |
80 | Pixmap monoPixmap; /* Used in X11TextRenderer_md.c */ |
81 | int monoPixmapWidth; /* Used in X11TextRenderer_md.c */ |
82 | int monoPixmapHeight;/* Used in X11TextRenderer_md.c */ |
83 | GC monoPixmapGC; /* Used in X11TextRenderer_md.c */ |
84 | int pixelStride; /* Used in X11SurfaceData.c */ |
85 | ColorData *color_data; |
86 | struct _GLXGraphicsConfigInfo *glxInfo; |
87 | int isTranslucencySupported; /* Uses Xrender to find this out. */ |
88 | XRenderPictFormat renderPictFormat; /*Used only if translucency supported*/ |
89 | } AwtGraphicsConfigData; |
90 | |
91 | typedef AwtGraphicsConfigData* AwtGraphicsConfigDataPtr; |
92 | |
93 | typedef struct _AwtScreenData { |
94 | int numConfigs; |
95 | Window root; |
96 | unsigned long whitepixel; |
97 | unsigned long blackpixel; |
98 | AwtGraphicsConfigDataPtr defaultConfig; |
99 | AwtGraphicsConfigDataPtr *configs; |
100 | } AwtScreenData; |
101 | |
102 | typedef AwtScreenData* AwtScreenDataPtr; |
103 | |
104 | #define W_GRAVITY_INITIALIZED 1 |
105 | #define W_IS_EMBEDDED 2 |
106 | |
107 | typedef struct awtFontList { |
108 | char *xlfd; |
109 | int index_length; |
110 | int load; |
111 | char *charset_name; |
112 | XFontStruct *xfont; |
113 | } awtFontList; |
114 | |
115 | struct FontData { |
116 | int charset_num; |
117 | awtFontList *flist; |
118 | XFontSet xfs; /* for TextField & TextArea */ |
119 | XFontStruct *xfont; /* Latin1 font */ |
120 | }; |
121 | |
122 | extern struct FontData *awtJNI_GetFontData(JNIEnv *env,jobject font, char **errmsg); |
123 | |
124 | extern AwtGraphicsConfigDataPtr getDefaultConfig(int screen); |
125 | extern AwtScreenDataPtr getScreenData(int screen); |
126 | #endif /* !HEADLESS */ |
127 | |
128 | /* allocated and initialize a structure */ |
129 | #define ZALLOC(T) ((struct T *)calloc(1, sizeof(struct T))) |
130 | |
131 | #ifndef HEADLESS |
132 | #define XDISPLAY awt_display; |
133 | |
134 | extern int awt_allocate_colors(AwtGraphicsConfigDataPtr); |
135 | extern void awt_allocate_systemcolors(XColor *, int, AwtGraphicsConfigDataPtr); |
136 | extern void awt_allocate_systemrgbcolors(jint *, int, AwtGraphicsConfigDataPtr); |
137 | |
138 | extern int awtJNI_GetColor(JNIEnv *, jobject); |
139 | extern int awtJNI_GetColorForVis (JNIEnv *, jobject, AwtGraphicsConfigDataPtr); |
140 | extern jobject awtJNI_GetColorModel(JNIEnv *, AwtGraphicsConfigDataPtr); |
141 | extern void awtJNI_CreateColorData (JNIEnv *, AwtGraphicsConfigDataPtr, int lock); |
142 | |
143 | #endif /* !HEADLESS */ |
144 | #endif /* _AWT_P_H_ */ |
145 | |