1 /* 2 * Copyright (c) 1998 by The XFree86 Project, Inc. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 * THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 18 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 19 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 * SOFTWARE. 21 * 22 * Except as contained in this notice, the name of the XFree86 Project shall 23 * not be used in advertising or otherwise to promote the sale, use or other 24 * dealings in this Software without prior written authorization from the 25 * XFree86 Project. 26 */ 27 28 #ifndef _XawPrivate_h 29 #define _XawPrivate_h 30 31 #define XawMax(a, b) ((a) > (b) ? (a) : (b)) 32 #define XawMin(a, b) ((a) < (b) ? (a) : (b)) 33 #define XawAbs(a) ((a) < 0 ? -(a) : (a)) 34 35 #define XawStackAlloc(size, stk_buffer) \ 36 ((size) <= sizeof(stk_buffer) \ 37 ? (XtPointer)(stk_buffer) \ 38 : XtMalloc((Cardinal)(size))) 39 40 #define XawStackFree(pointer, stk_buffer) \ 41 do { \ 42 if ((pointer) != (XtPointer)(stk_buffer)) \ 43 XtFree((char *)pointer); \ 44 } while (0) 45 46 #ifndef XtX 47 #define XtX(w) (((RectObj)w)->rectangle.x) 48 #endif 49 #ifndef XtY 50 #define XtY(w) (((RectObj)w)->rectangle.y) 51 #endif 52 #ifndef XtWidth 53 #define XtWidth(w) (((RectObj)w)->rectangle.width) 54 #endif 55 #ifndef XtHeight 56 #define XtHeight(w) (((RectObj)w)->rectangle.height) 57 #endif 58 #ifndef XtBorderWidth 59 #define XtBorderWidth(w) (((RectObj)w)->rectangle.border_width) 60 #endif 61 62 #ifndef OLDXAW 63 #define XAW_PRIV_VAR_PREFIX '$' 64 65 typedef Bool (*XawParseBooleanProc)(Widget, String, XEvent*, Bool*); 66 67 typedef struct _XawActionVarList XawActionVarList; 68 typedef struct _XawActionResList XawActionResList; 69 70 /* Boolean expressions */ 71 Bool XawParseBoolean(Widget, String, XEvent*, Bool*); 72 Bool XawBooleanExpression(Widget, String, XEvent*); 73 74 /* actions */ 75 void XawPrintActionErrorMsg(String, Widget, String*, Cardinal*); 76 XawActionResList *XawGetActionResList(WidgetClass); 77 XawActionVarList *XawGetActionVarList(Widget); 78 79 void XawSetValuesAction(Widget, XEvent*, String*, Cardinal*); 80 void XawGetValuesAction(Widget, XEvent*, String*, Cardinal*); 81 void XawDeclareAction(Widget, XEvent*, String*, Cardinal*); 82 void XawCallProcAction(Widget, XEvent*, String*, Cardinal*); 83 84 /* display lists */ 85 #define XAWDL_CONVERT_ERROR (XtPointer)-1 86 typedef struct _XawDL _XawDisplayList; 87 typedef struct _XawDLClass XawDLClass, XawDisplayListClass; 88 89 typedef void (*XawDisplayListProc)(Widget, XtPointer, XtPointer, 90 XEvent*, Region); 91 typedef void *(*XawDLArgsInitProc)(String, String*, Cardinal*, 92 Screen*, Colormap, int); 93 typedef void *(*XawDLDataInitProc)(String, 94 Screen*, Colormap, int); 95 typedef void (*XawDLArgsDestructor)(Display*, String, XtPointer, 96 String*, Cardinal*); 97 typedef void (*XawDLDataDestructor)(Display*, String, XtPointer); 98 99 void XawRunDisplayList(Widget, _XawDisplayList*, XEvent*, Region); 100 void XawDisplayListInitialize(void); 101 102 _XawDisplayList *XawCreateDisplayList(String, Screen*, Colormap, int); 103 void XawDestroyDisplayList(_XawDisplayList*); 104 String XawDisplayListString(_XawDisplayList*); 105 XawDLClass *XawGetDisplayListClass(String); 106 XawDLClass *XawCreateDisplayListClass(String, 107 XawDLArgsInitProc, XawDLArgsDestructor, 108 XawDLDataInitProc, XawDLDataDestructor); 109 Bool XawDeclareDisplayListProc(XawDLClass*, String, XawDisplayListProc); 110 111 /* pixmaps */ 112 typedef struct _XawArgVal { 113 String name; 114 String value; 115 } XawArgVal; 116 117 typedef struct _XawParams { 118 String name; 119 String type; 120 String ext; 121 XawArgVal **args; 122 Cardinal num_args; 123 } XawParams; 124 125 typedef struct _XawPixmap { 126 String name; 127 Pixmap pixmap; 128 Pixmap mask; 129 Dimension width; 130 Dimension height; 131 } XawPixmap; 132 133 typedef Bool (*XawPixmapLoader)(XawParams*, Screen*, Colormap, int, 134 Pixmap*, Pixmap*, 135 Dimension*, Dimension*); 136 Bool XawPixmapsInitialize(void); 137 Bool XawAddPixmapLoader(String, String, XawPixmapLoader); 138 XawPixmap *XawLoadPixmap(String, Screen*, Colormap, int); 139 XawPixmap *XawPixmapFromXPixmap(Pixmap, Screen*, Colormap, int); 140 XawParams *XawParseParamsString(String name); 141 void XawFreeParamsStruct(XawParams *params); 142 XawArgVal *XawFindArgVal(XawParams *params, String name); 143 void XawReshapeWidget(Widget, XawPixmap*); 144 #endif /* OLDXAW */ 145 146 /* misc */ 147 void XawTypeToStringWarning(Display*, String); 148 149 /* OS.c */ 150 int _XawGetPageSize(void); 151 152 #endif /* _XawPrivate_h */ 153