Commit | Line | Data |
---|---|---|
a09e091a JB |
1 | /*********************************************************** |
2 | ||
3 | Copyright 1987, 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 | Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. | |
26 | ||
27 | All Rights Reserved | |
28 | ||
29 | Permission to use, copy, modify, and distribute this software and its | |
30 | documentation for any purpose and without fee is hereby granted, | |
31 | provided that the above copyright notice appear in all copies and that | |
32 | both that copyright notice and this permission notice appear in | |
33 | supporting documentation, and that the name of Digital not be | |
34 | used in advertising or publicity pertaining to distribution of the | |
35 | software without specific, written prior permission. | |
36 | ||
37 | DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING | |
38 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL | |
39 | DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR | |
40 | ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | |
41 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | |
42 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS | |
43 | SOFTWARE. | |
44 | ||
45 | ******************************************************************/ | |
46 | ||
47 | #ifndef PIXMAP_H | |
48 | #define PIXMAP_H | |
49 | ||
50 | #include "misc.h" | |
51 | #include "screenint.h" | |
52 | #include "regionstr.h" | |
53 | ||
54 | /* types for Drawable */ | |
55 | #define DRAWABLE_WINDOW 0 | |
56 | #define DRAWABLE_PIXMAP 1 | |
57 | #define UNDRAWABLE_WINDOW 2 | |
58 | ||
59 | /* corresponding type masks for dixLookupDrawable() */ | |
60 | #define M_DRAWABLE_WINDOW (1<<0) | |
61 | #define M_DRAWABLE_PIXMAP (1<<1) | |
62 | #define M_UNDRAWABLE_WINDOW (1<<2) | |
63 | #define M_ANY (-1) | |
64 | #define M_WINDOW (M_DRAWABLE_WINDOW|M_UNDRAWABLE_WINDOW) | |
65 | #define M_DRAWABLE (M_DRAWABLE_WINDOW|M_DRAWABLE_PIXMAP) | |
66 | #define M_UNDRAWABLE (M_UNDRAWABLE_WINDOW) | |
67 | ||
68 | /* flags to PaintWindow() */ | |
69 | #define PW_BACKGROUND 0 | |
70 | #define PW_BORDER 1 | |
71 | ||
72 | #define NullPixmap ((PixmapPtr)0) | |
73 | ||
74 | typedef struct _Drawable *DrawablePtr; | |
75 | typedef struct _Pixmap *PixmapPtr; | |
76 | ||
77 | typedef struct _PixmapDirtyUpdate *PixmapDirtyUpdatePtr; | |
78 | ||
79 | typedef union _PixUnion { | |
80 | PixmapPtr pixmap; | |
81 | unsigned long pixel; | |
82 | } PixUnion; | |
83 | ||
84 | #define SamePixUnion(a,b,isPixel)\ | |
85 | ((isPixel) ? (a).pixel == (b).pixel : (a).pixmap == (b).pixmap) | |
86 | ||
87 | #define EqualPixUnion(as, a, bs, b) \ | |
88 | ((as) == (bs) && (SamePixUnion (a, b, as))) | |
89 | ||
90 | #define OnScreenDrawable(type) \ | |
91 | (type == DRAWABLE_WINDOW) | |
92 | ||
93 | #define WindowDrawable(type) \ | |
94 | ((type == DRAWABLE_WINDOW) || (type == UNDRAWABLE_WINDOW)) | |
95 | ||
96 | extern _X_EXPORT PixmapPtr GetScratchPixmapHeader(ScreenPtr /*pScreen */ , | |
97 | int /*width */ , | |
98 | int /*height */ , | |
99 | int /*depth */ , | |
100 | int /*bitsPerPixel */ , | |
101 | int /*devKind */ , | |
102 | pointer /*pPixData */ ); | |
103 | ||
104 | extern _X_EXPORT void FreeScratchPixmapHeader(PixmapPtr /*pPixmap */ ); | |
105 | ||
106 | extern _X_EXPORT Bool CreateScratchPixmapsForScreen(ScreenPtr /*pScreen */ ); | |
107 | ||
108 | extern _X_EXPORT void FreeScratchPixmapsForScreen(ScreenPtr /*pScreen */ ); | |
109 | ||
110 | extern _X_EXPORT PixmapPtr AllocatePixmap(ScreenPtr /*pScreen */ , | |
111 | int /*pixDataSize */ ); | |
112 | ||
113 | extern _X_EXPORT void FreePixmap(PixmapPtr /*pPixmap */ ); | |
114 | ||
115 | extern _X_EXPORT PixmapPtr | |
116 | PixmapShareToSlave(PixmapPtr pixmap, ScreenPtr slave); | |
117 | ||
118 | extern _X_EXPORT Bool | |
119 | PixmapStartDirtyTracking(PixmapPtr src, | |
120 | PixmapPtr slave_dst, | |
121 | int x, int y); | |
122 | ||
123 | extern _X_EXPORT Bool | |
124 | PixmapStopDirtyTracking(PixmapPtr src, PixmapPtr slave_dst); | |
125 | ||
126 | /* helper function, drivers can do this themselves if they can do it more | |
127 | efficently */ | |
128 | extern _X_EXPORT Bool | |
129 | PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty, RegionPtr dirty_region); | |
130 | ||
131 | #endif /* PIXMAP_H */ |