1 /***********************************************************
2 
3 Copyright 1987, 1988, 1994, 1998  The Open Group
4 
5 Permission to use, copy, modify, distribute, and sell this software and its
6 documentation for any purpose is hereby granted without fee, provided that
7 the above copyright notice appear in all copies and that both that
8 copyright notice and this permission notice appear in supporting
9 documentation.
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 THE
17 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 
21 Except as contained in this notice, the name of The Open Group shall not be
22 used in advertising or otherwise to promote the sale, use or other dealings
23 in this Software without prior written authorization from The Open Group.
24 
25 
26 Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
27 
28                         All Rights Reserved
29 
30 Permission to use, copy, modify, and distribute this software and its
31 documentation for any purpose and without fee is hereby granted,
32 provided that the above copyright notice appear in all copies and that
33 both that copyright notice and this permission notice appear in
34 supporting documentation, and that the name of Digital not be
35 used in advertising or publicity pertaining to distribution of the
36 software without specific, written prior permission.
37 
38 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
39 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
40 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
41 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
42 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
43 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
44 SOFTWARE.
45 
46 ******************************************************************/
47 
48 #ifndef _XtintrinsicP_h
49 #define _XtintrinsicP_h
50 
51 #include <X11/Intrinsic.h>
52 
53 /*
54  * Field sizes and offsets of XrmResource must match those of XtResource.
55  * Type long is used instead of XrmQuark here because XrmQuark and String
56  * are not the same size on all systems.
57  */
58 typedef struct {
59     long	xrm_name;	  /* Resource name quark		*/
60     long	xrm_class;	  /* Resource class quark		*/
61     long	xrm_type;	  /* Resource representation type quark */
62     Cardinal	xrm_size;	  /* Size in bytes of representation	*/
63     int		xrm_offset;	  /* -offset-1				*/
64     long	xrm_default_type; /* Default representation type quark	*/
65     XtPointer	xrm_default_addr; /* Default resource address		*/
66 } XrmResource, *XrmResourceList;
67 
68 typedef unsigned long XtVersionType;
69 
70 #define XT_VERSION 11
71 #ifndef XT_REVISION
72 #define XT_REVISION 6
73 #endif
74 #define XtVersion (XT_VERSION * 1000 + XT_REVISION)
75 #define XtVersionDontCheck 0
76 
77 typedef void (*XtProc)(
78     void
79 );
80 
81 typedef void (*XtWidgetClassProc)(
82     WidgetClass /* class */
83 );
84 
85 typedef void (*XtWidgetProc)(
86     Widget	/* widget */
87 );
88 
89 typedef Boolean (*XtAcceptFocusProc)(
90     Widget	/* widget */,
91     Time*	/* time */
92 );
93 
94 typedef void (*XtArgsProc)(
95     Widget	/* widget */,
96     ArgList	/* args */,
97     Cardinal*	/* num_args */
98 );
99 
100 typedef void (*XtInitProc)(
101     Widget	/* request */,
102     Widget	/* new */,
103     ArgList	/* args */,
104     Cardinal*	/* num_args */
105 );
106 
107 typedef Boolean (*XtSetValuesFunc)(
108     Widget 	/* old */,
109     Widget 	/* request */,
110     Widget 	/* new */,
111     ArgList 	/* args */,
112     Cardinal*	/* num_args */
113 );
114 
115 typedef Boolean (*XtArgsFunc)(
116     Widget	/* widget */,
117     ArgList	/* args */,
118     Cardinal*	/* num_args */
119 );
120 
121 typedef void (*XtAlmostProc)(
122     Widget		/* old */,
123     Widget		/* new */,
124     XtWidgetGeometry*	/* request */,
125     XtWidgetGeometry*	/* reply */
126 );
127 
128 typedef void (*XtExposeProc)(
129     Widget	/* widget */,
130     XEvent*	/* event */,
131     Region	/* region */
132 );
133 
134 /* compress_exposure options*/
135 #define XtExposeNoCompress		((XtEnum)False)
136 #define XtExposeCompressSeries		((XtEnum)True)
137 #define XtExposeCompressMultiple	2
138 #define XtExposeCompressMaximal		3
139 
140 /* modifiers */
141 #define XtExposeGraphicsExpose	  	0x10
142 #define XtExposeGraphicsExposeMerged	0x20
143 #define XtExposeNoExpose	  	0x40
144 #define XtExposeNoRegion		0x80
145 
146 typedef void (*XtRealizeProc)(
147     Widget 		  /* widget */,
148     XtValueMask* 	  /* mask */,
149     XSetWindowAttributes* /* attributes */
150 );
151 
152 typedef XtGeometryResult (*XtGeometryHandler)(
153     Widget		/* widget */,
154     XtWidgetGeometry*	/* request */,
155     XtWidgetGeometry*	/* reply */
156 );
157 
158 typedef void (*XtStringProc)(
159     Widget	/* widget */,
160     String	/* str */
161 );
162 
163 typedef struct {
164     String	name;	/* resource name */
165     String	type;	/* representation type name */
166     XtArgVal	value;	/* representation */
167     int		size;	/* size of representation */
168 } XtTypedArg, *XtTypedArgList;
169 
170 typedef void (*XtAllocateProc)(
171     WidgetClass		/* widget_class */,
172     Cardinal *		/* constraint_size */,
173     Cardinal *		/* more_bytes */,
174     ArgList		/* args */,
175     Cardinal *		/* num_args */,
176     XtTypedArgList	/* typed_args */,
177     Cardinal *		/* num_typed_args */,
178     Widget *		/* widget_return */,
179     XtPointer *		/* more_bytes_return */
180 );
181 
182 typedef void (*XtDeallocateProc)(
183     Widget		/* widget */,
184     XtPointer		/* more_bytes */
185 );
186 
187 struct _XtStateRec;	/* Forward declare before use for C++ */
188 
189 typedef struct _XtTMRec {
190     XtTranslations  translations;	/* private to Translation Manager    */
191     XtBoundActions  proc_table;		/* procedure bindings for actions    */
192     struct _XtStateRec *current_state;  /* Translation Manager state ptr     */
193     unsigned long   lastEventTime;
194 } XtTMRec, *XtTM;
195 
196 #include <X11/CoreP.h>
197 #include <X11/CompositeP.h>
198 #include <X11/ConstrainP.h>
199 #include <X11/ObjectP.h>
200 #include <X11/RectObjP.h>
201 
202 #define XtDisplay(widget)	DisplayOfScreen((widget)->core.screen)
203 #define XtScreen(widget)	((widget)->core.screen)
204 #define XtWindow(widget)	((widget)->core.window)
205 
206 #define XtClass(widget)		((widget)->core.widget_class)
207 #define XtSuperclass(widget)	(XtClass(widget)->core_class.superclass)
208 #define XtIsRealized(object)	(XtWindowOfObject(object) != None)
209 #define XtParent(widget)	((widget)->core.parent)
210 
211 #undef XtIsRectObj
212 extern Boolean XtIsRectObj(Widget);
213 #define XtIsRectObj(obj) \
214     (((Object)(obj))->object.widget_class->core_class.class_inited & 0x02)
215 
216 #undef XtIsWidget
217 extern Boolean XtIsWidget(Widget);
218 #define XtIsWidget(obj) \
219     (((Object)(obj))->object.widget_class->core_class.class_inited & 0x04)
220 
221 #undef XtIsComposite
222 extern Boolean XtIsComposite(Widget);
223 #define XtIsComposite(obj) \
224     (((Object)(obj))->object.widget_class->core_class.class_inited & 0x08)
225 
226 #undef XtIsConstraint
227 extern Boolean XtIsConstraint(Widget);
228 #define XtIsConstraint(obj) \
229     (((Object)(obj))->object.widget_class->core_class.class_inited & 0x10)
230 
231 #undef XtIsShell
232 extern Boolean XtIsShell(Widget);
233 #define XtIsShell(obj) \
234     (((Object)(obj))->object.widget_class->core_class.class_inited & 0x20)
235 
236 #undef XtIsWMShell
237 extern Boolean XtIsWMShell(Widget);
238 #define XtIsWMShell(obj) \
239     (((Object)(obj))->object.widget_class->core_class.class_inited & 0x40)
240 
241 #undef XtIsTopLevelShell
242 extern Boolean XtIsTopLevelShell(Widget);
243 #define XtIsTopLevelShell(obj) \
244     (((Object)(obj))->object.widget_class->core_class.class_inited & 0x80)
245 
246 #ifdef DEBUG
247 #define XtCheckSubclass(w, widget_class_ptr, message)	\
248 	if (!XtIsSubclass(((Widget)(w)), (widget_class_ptr))) {	\
249 	    String dbgArgV[3];				\
250 	    Cardinal dbgArgC = 3;			\
251 	    dbgArgV[0] = ((Widget)(w))->core.widget_class->core_class.class_name;\
252 	    dbgArgV[1] = (widget_class_ptr)->core_class.class_name;	     \
253 	    dbgArgV[2] = (message);					     \
254 	    XtAppErrorMsg(XtWidgetToApplicationContext((Widget)(w)),	     \
255 		    "subclassMismatch", "xtCheckSubclass", "XtToolkitError", \
256 		    "Widget class %s found when subclass of %s expected: %s",\
257 		    dbgArgV, &dbgArgC);			\
258 	}
259 #else
260 #define XtCheckSubclass(w, widget_class, message)	/* nothing */
261 #endif
262 
263 _XFUNCPROTOBEGIN
264 
265 extern Widget _XtWindowedAncestor( /* internal; implementation-dependent */
266     Widget 		/* object */
267 );
268 
269 #if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(LIBXT_COMPILATION)
270 __declspec(dllimport)
271 #else
272 extern
273 #endif
274 void _XtInherit(
275     void
276 );
277 
278 extern void _XtHandleFocus(
279     Widget		/* widget */,
280     XtPointer		/* client_data */,
281     XEvent *		/* event */,
282     Boolean *		/* cont */);
283 
284 extern void XtCreateWindow(
285     Widget 		/* widget */,
286     unsigned int 	/* window_class */,
287     Visual*		/* visual */,
288     XtValueMask		/* value_mask */,
289     XSetWindowAttributes* /* attributes */
290 );
291 
292 extern void XtResizeWidget(
293     Widget 		/* widget */,
294     _XtDimension	/* width */,
295     _XtDimension	/* height */,
296     _XtDimension	/* border_width */
297 );
298 
299 extern void XtMoveWidget(
300     Widget 		/* widget */,
301     _XtPosition		/* x */,
302     _XtPosition		/* y */
303 );
304 
305 extern void XtConfigureWidget(
306     Widget 		/* widget */,
307     _XtPosition		/* x */,
308     _XtPosition		/* y */,
309     _XtDimension	/* width */,
310     _XtDimension	/* height */,
311     _XtDimension	/* border_width */
312 );
313 
314 extern void XtResizeWindow(
315     Widget 		/* widget */
316 );
317 
318 extern void XtProcessLock(
319     void
320 );
321 
322 extern void XtProcessUnlock(
323     void
324 );
325 
326 _XFUNCPROTOEND
327 
328 #endif /* _XtIntrinsicP_h */
329 /* DON'T ADD STUFF AFTER THIS #endif */
330