xref: /OK3568_Linux_fs/external/xserver/miext/shadow/shadow.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright © 2000 Keith Packard
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Permission to use, copy, modify, distribute, and sell this software and its
6*4882a593Smuzhiyun  * documentation for any purpose is hereby granted without fee, provided that
7*4882a593Smuzhiyun  * the above copyright notice appear in all copies and that both that
8*4882a593Smuzhiyun  * copyright notice and this permission notice appear in supporting
9*4882a593Smuzhiyun  * documentation, and that the name of Keith Packard not be used in
10*4882a593Smuzhiyun  * advertising or publicity pertaining to distribution of the software without
11*4882a593Smuzhiyun  * specific, written prior permission.  Keith Packard makes no
12*4882a593Smuzhiyun  * representations about the suitability of this software for any purpose.  It
13*4882a593Smuzhiyun  * is provided "as is" without express or implied warranty.
14*4882a593Smuzhiyun  *
15*4882a593Smuzhiyun  * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16*4882a593Smuzhiyun  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
17*4882a593Smuzhiyun  * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
18*4882a593Smuzhiyun  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
19*4882a593Smuzhiyun  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
20*4882a593Smuzhiyun  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
21*4882a593Smuzhiyun  * PERFORMANCE OF THIS SOFTWARE.
22*4882a593Smuzhiyun  */
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #ifndef _SHADOW_H_
25*4882a593Smuzhiyun #define _SHADOW_H_
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun #include "scrnintstr.h"
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #include "picturestr.h"
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #include "damage.h"
32*4882a593Smuzhiyun #include "damagestr.h"
33*4882a593Smuzhiyun typedef struct _shadowBuf *shadowBufPtr;
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun typedef void (*ShadowUpdateProc) (ScreenPtr pScreen, shadowBufPtr pBuf);
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define SHADOW_WINDOW_RELOCATE 1
38*4882a593Smuzhiyun #define SHADOW_WINDOW_READ 2
39*4882a593Smuzhiyun #define SHADOW_WINDOW_WRITE 4
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun typedef void *(*ShadowWindowProc) (ScreenPtr pScreen,
42*4882a593Smuzhiyun                                    CARD32 row,
43*4882a593Smuzhiyun                                    CARD32 offset,
44*4882a593Smuzhiyun                                    int mode, CARD32 *size, void *closure);
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun typedef struct _shadowBuf {
47*4882a593Smuzhiyun     DamagePtr pDamage;
48*4882a593Smuzhiyun     ShadowUpdateProc update;
49*4882a593Smuzhiyun     ShadowWindowProc window;
50*4882a593Smuzhiyun     PixmapPtr pPixmap;
51*4882a593Smuzhiyun     void *closure;
52*4882a593Smuzhiyun     int randr;
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun     /* screen wrappers */
55*4882a593Smuzhiyun     GetImageProcPtr GetImage;
56*4882a593Smuzhiyun     CloseScreenProcPtr CloseScreen;
57*4882a593Smuzhiyun     ScreenBlockHandlerProcPtr BlockHandler;
58*4882a593Smuzhiyun } shadowBufRec;
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun /* Match defines from randr extension */
61*4882a593Smuzhiyun #define SHADOW_ROTATE_0	    1
62*4882a593Smuzhiyun #define SHADOW_ROTATE_90    2
63*4882a593Smuzhiyun #define SHADOW_ROTATE_180   4
64*4882a593Smuzhiyun #define SHADOW_ROTATE_270   8
65*4882a593Smuzhiyun #define SHADOW_ROTATE_ALL   (SHADOW_ROTATE_0|SHADOW_ROTATE_90|\
66*4882a593Smuzhiyun 			     SHADOW_ROTATE_180|SHADOW_ROTATE_270)
67*4882a593Smuzhiyun #define SHADOW_REFLECT_X    16
68*4882a593Smuzhiyun #define SHADOW_REFLECT_Y    32
69*4882a593Smuzhiyun #define SHADOW_REFLECT_ALL  (SHADOW_REFLECT_X|SHADOW_REFLECT_Y)
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun extern _X_EXPORT Bool
72*4882a593Smuzhiyun  shadowSetup(ScreenPtr pScreen);
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun extern _X_EXPORT Bool
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun shadowAdd(ScreenPtr pScreen,
77*4882a593Smuzhiyun           PixmapPtr pPixmap,
78*4882a593Smuzhiyun           ShadowUpdateProc update,
79*4882a593Smuzhiyun           ShadowWindowProc window, int randr, void *closure);
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun extern _X_EXPORT void
82*4882a593Smuzhiyun  shadowRemove(ScreenPtr pScreen, PixmapPtr pPixmap);
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun extern _X_EXPORT void
85*4882a593Smuzhiyun  shadowUpdateAfb4(ScreenPtr pScreen, shadowBufPtr pBuf);
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun extern _X_EXPORT void
88*4882a593Smuzhiyun  shadowUpdateAfb8(ScreenPtr pScreen, shadowBufPtr pBuf);
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun extern _X_EXPORT void
91*4882a593Smuzhiyun  shadowUpdateIplan2p4(ScreenPtr pScreen, shadowBufPtr pBuf);
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun extern _X_EXPORT void
94*4882a593Smuzhiyun  shadowUpdateIplan2p8(ScreenPtr pScreen, shadowBufPtr pBuf);
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun extern _X_EXPORT void
97*4882a593Smuzhiyun  shadowUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf);
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun extern _X_EXPORT void
100*4882a593Smuzhiyun  shadowUpdatePlanar4(ScreenPtr pScreen, shadowBufPtr pBuf);
101*4882a593Smuzhiyun 
102*4882a593Smuzhiyun extern _X_EXPORT void
103*4882a593Smuzhiyun  shadowUpdatePlanar4x8(ScreenPtr pScreen, shadowBufPtr pBuf);
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun extern _X_EXPORT void
106*4882a593Smuzhiyun  shadowUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf);
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun extern _X_EXPORT void
109*4882a593Smuzhiyun  shadowUpdateRotate8_90(ScreenPtr pScreen, shadowBufPtr pBuf);
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun extern _X_EXPORT void
112*4882a593Smuzhiyun  shadowUpdateRotate16_90(ScreenPtr pScreen, shadowBufPtr pBuf);
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun extern _X_EXPORT void
115*4882a593Smuzhiyun  shadowUpdateRotate16_90YX(ScreenPtr pScreen, shadowBufPtr pBuf);
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun extern _X_EXPORT void
118*4882a593Smuzhiyun  shadowUpdateRotate32_90(ScreenPtr pScreen, shadowBufPtr pBuf);
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun extern _X_EXPORT void
121*4882a593Smuzhiyun  shadowUpdateRotate8_180(ScreenPtr pScreen, shadowBufPtr pBuf);
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun extern _X_EXPORT void
124*4882a593Smuzhiyun  shadowUpdateRotate16_180(ScreenPtr pScreen, shadowBufPtr pBuf);
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun extern _X_EXPORT void
127*4882a593Smuzhiyun  shadowUpdateRotate32_180(ScreenPtr pScreen, shadowBufPtr pBuf);
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun extern _X_EXPORT void
130*4882a593Smuzhiyun  shadowUpdateRotate8_270(ScreenPtr pScreen, shadowBufPtr pBuf);
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun extern _X_EXPORT void
133*4882a593Smuzhiyun  shadowUpdateRotate16_270(ScreenPtr pScreen, shadowBufPtr pBuf);
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun extern _X_EXPORT void
136*4882a593Smuzhiyun  shadowUpdateRotate16_270YX(ScreenPtr pScreen, shadowBufPtr pBuf);
137*4882a593Smuzhiyun 
138*4882a593Smuzhiyun extern _X_EXPORT void
139*4882a593Smuzhiyun  shadowUpdateRotate32_270(ScreenPtr pScreen, shadowBufPtr pBuf);
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun extern _X_EXPORT void
142*4882a593Smuzhiyun  shadowUpdateRotate8(ScreenPtr pScreen, shadowBufPtr pBuf);
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun extern _X_EXPORT void
145*4882a593Smuzhiyun  shadowUpdateRotate16(ScreenPtr pScreen, shadowBufPtr pBuf);
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun extern _X_EXPORT void
148*4882a593Smuzhiyun  shadowUpdateRotate32(ScreenPtr pScreen, shadowBufPtr pBuf);
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun extern _X_EXPORT void
151*4882a593Smuzhiyun  shadowUpdate32to24(ScreenPtr pScreen, shadowBufPtr pBuf);
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun typedef void (*shadowUpdateProc) (ScreenPtr, shadowBufPtr);
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #endif                          /* _SHADOW_H_ */
156