| 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 | |