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
68typedef XRenderPictFormat *
69XRenderFindVisualFormatFunc (Display *dpy, _Xconst Visual *visual);
70
71typedef 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
91typedef AwtGraphicsConfigData* AwtGraphicsConfigDataPtr;
92
93typedef 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
102typedef AwtScreenData* AwtScreenDataPtr;
103
104#define W_GRAVITY_INITIALIZED 1
105#define W_IS_EMBEDDED 2
106
107typedef struct awtFontList {
108 char *xlfd;
109 int index_length;
110 int load;
111 char *charset_name;
112 XFontStruct *xfont;
113} awtFontList;
114
115struct FontData {
116 int charset_num;
117 awtFontList *flist;
118 XFontSet xfs; /* for TextField & TextArea */
119 XFontStruct *xfont; /* Latin1 font */
120};
121
122extern struct FontData *awtJNI_GetFontData(JNIEnv *env,jobject font, char **errmsg);
123
124extern AwtGraphicsConfigDataPtr getDefaultConfig(int screen);
125extern 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
134extern int awt_allocate_colors(AwtGraphicsConfigDataPtr);
135extern void awt_allocate_systemcolors(XColor *, int, AwtGraphicsConfigDataPtr);
136extern void awt_allocate_systemrgbcolors(jint *, int, AwtGraphicsConfigDataPtr);
137
138extern int awtJNI_GetColor(JNIEnv *, jobject);
139extern int awtJNI_GetColorForVis (JNIEnv *, jobject, AwtGraphicsConfigDataPtr);
140extern jobject awtJNI_GetColorModel(JNIEnv *, AwtGraphicsConfigDataPtr);
141extern void awtJNI_CreateColorData (JNIEnv *, AwtGraphicsConfigDataPtr, int lock);
142
143#endif /* !HEADLESS */
144#endif /* _AWT_P_H_ */
145