1 /*
2  * shape.h --
3  *
4  *	The public platform-independent C interface to the
5  *	non-rectangular window extension.
6  *
7  * Copyright (c) 1997-2000 by Donal K. Fellows
8  *
9  * See "license.txt" for details of the license this file is made
10  * available under.
11  *
12  * $Id$
13  */
14 
15 #ifndef SHAPE_SHAPE_H
16 #define SHAPE_SHAPE_H
17 
18 #include <tcl.h>
19 #include <tk.h>
20 #include <X11/Xutil.h>			/* For Region declaration. */
21 
22 #define SHAPE_VERSION_MAJOR	0
23 #define SHAPE_VERSION_MINOR	4
24 #define SHAPE_VERSION_PATCH	4
25 #define SHAPE_VERSION		STRINGIFY(SHAPE_VERSION_MAJOR) "." STRINGIFY(SHAPE_VERSION_MINOR)
26 #define SHAPE_PATCHLEVEL	SHAPE_VERSION "." STRINGIFY(SHAPE_VERSION_PATCH)
27 
28 #define SHAPE_KIND_BOUNDING (1<<0)
29 #define SHAPE_KIND_CLIP     (1<<1)
30 #define SHAPE_KIND_BOTH     (SHAPE_KIND_BOUNDING | SHAPE_KIND_CLIP)
31 #define SHAPE_KIND_TOPLEVEL (1<<8)
32 #define SHAPE_KIND_ALL	    (SHAPE_KIND_BOTH | SHAPE_KIND_TOPLEVEL)
33 #define SHAPE_BOUND_MASK    (SHAPE_KIND_BOUNDING | SHAPE_KIND_TOPLEVEL)
34 #define SHAPE_CLIP_MASK     (SHAPE_KIND_CLIP | SHAPE_KIND_TOPLEVEL)
35 
36 #ifndef ShapeSet
37 /* Taken from /usr/include/X11/extensions/shape.h */
38 #define ShapeSet                        0
39 #define ShapeUnion                      1
40 #define ShapeIntersect                  2
41 #define ShapeSubtract                   3
42 #define ShapeInvert                     4
43 #endif /* ShapeSet */
44 
45 #define SHAPE_OP_SET		ShapeSet
46 #define SHAPE_OP_UNION		ShapeUnion
47 #define SHAPE_OP_INTERSECT	ShapeIntersect
48 #define SHAPE_OP_SUBTRACT	ShapeSubtract
49 #define SHAPE_OP_INVERT		ShapeInvert
50 
51 EXTERN int
52 Shape_GetBbox _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, int getClip,
53 			   int *valid, int *x1, int *y1, int *x2, int *y2));
54 EXTERN int
55 Shape_GetShapeRectanglesObj _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
56 					 int getClip));
57 EXTERN int
58 Shape_MoveShape _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
59 			     int kind, int x, int y));
60 EXTERN int
61 Shape_CombineBitmap _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
62 				 int kind, int op, int x, int y,
63 				 Pixmap bitmap));
64 EXTERN int
65 Shape_CombineRectangles _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
66 				     int kind, int op,
67 				     int rectc, XRectangle *rectv));
68 EXTERN int
69 Shape_CombineRectanglesOrdered _ANSI_ARGS_((Tcl_Interp *interp,Tk_Window tkwin,
70 					    int kind, int op,
71 					    int rectc, XRectangle *rectv));
72 EXTERN int
73 Shape_CombineWindow _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
74 				 int kind, int op, int x, int y,
75 				 Tk_Window srcwin));
76 EXTERN int
77 Shape_CombineRegion _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
78 				 int kind, int op, int x, int y,
79 				 Region region));
80 EXTERN int
81 Shape_Reset _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin, int kind));
82 EXTERN int
83 Shape_QueryVersion _ANSI_ARGS_((Tk_Window tkwin,
84 				int *majorPtr, int *minorPtr));
85 EXTERN int
86 Shape_ExtensionPresent _ANSI_ARGS_((Tk_Window tkwin));
87 
88 #endif /* SHAPE_SHAPE_H */
89