shadow.h revision 35c4bbdf
105b261ecSmrg/* 205b261ecSmrg * 305b261ecSmrg * Copyright © 2000 Keith Packard 405b261ecSmrg * 505b261ecSmrg * Permission to use, copy, modify, distribute, and sell this software and its 605b261ecSmrg * documentation for any purpose is hereby granted without fee, provided that 705b261ecSmrg * the above copyright notice appear in all copies and that both that 805b261ecSmrg * copyright notice and this permission notice appear in supporting 905b261ecSmrg * documentation, and that the name of Keith Packard not be used in 1005b261ecSmrg * advertising or publicity pertaining to distribution of the software without 1105b261ecSmrg * specific, written prior permission. Keith Packard makes no 1205b261ecSmrg * representations about the suitability of this software for any purpose. It 1305b261ecSmrg * is provided "as is" without express or implied warranty. 1405b261ecSmrg * 1505b261ecSmrg * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 1605b261ecSmrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 1705b261ecSmrg * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR 1805b261ecSmrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 1905b261ecSmrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 2005b261ecSmrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 2105b261ecSmrg * PERFORMANCE OF THIS SOFTWARE. 2205b261ecSmrg */ 2305b261ecSmrg 2405b261ecSmrg#ifndef _SHADOW_H_ 2505b261ecSmrg#define _SHADOW_H_ 2605b261ecSmrg 2705b261ecSmrg#include "scrnintstr.h" 2805b261ecSmrg 2905b261ecSmrg#include "picturestr.h" 3005b261ecSmrg 3105b261ecSmrg#include "damage.h" 3205b261ecSmrg#include "damagestr.h" 3335c4bbdfSmrgtypedef struct _shadowBuf *shadowBufPtr; 3405b261ecSmrg 3535c4bbdfSmrgtypedef void (*ShadowUpdateProc) (ScreenPtr pScreen, shadowBufPtr pBuf); 3605b261ecSmrg 3705b261ecSmrg#define SHADOW_WINDOW_RELOCATE 1 3805b261ecSmrg#define SHADOW_WINDOW_READ 2 3905b261ecSmrg#define SHADOW_WINDOW_WRITE 4 4005b261ecSmrg 4135c4bbdfSmrgtypedef void *(*ShadowWindowProc) (ScreenPtr pScreen, 4235c4bbdfSmrg CARD32 row, 4335c4bbdfSmrg CARD32 offset, 4435c4bbdfSmrg int mode, CARD32 *size, void *closure); 4505b261ecSmrg 4605b261ecSmrgtypedef struct _shadowBuf { 4735c4bbdfSmrg DamagePtr pDamage; 4835c4bbdfSmrg ShadowUpdateProc update; 4935c4bbdfSmrg ShadowWindowProc window; 5035c4bbdfSmrg PixmapPtr pPixmap; 5135c4bbdfSmrg void *closure; 5235c4bbdfSmrg int randr; 5305b261ecSmrg 5405b261ecSmrg /* screen wrappers */ 5535c4bbdfSmrg GetImageProcPtr GetImage; 5635c4bbdfSmrg CloseScreenProcPtr CloseScreen; 5705b261ecSmrg} shadowBufRec; 5805b261ecSmrg 5905b261ecSmrg/* Match defines from randr extension */ 6005b261ecSmrg#define SHADOW_ROTATE_0 1 6105b261ecSmrg#define SHADOW_ROTATE_90 2 6205b261ecSmrg#define SHADOW_ROTATE_180 4 6305b261ecSmrg#define SHADOW_ROTATE_270 8 6405b261ecSmrg#define SHADOW_ROTATE_ALL (SHADOW_ROTATE_0|SHADOW_ROTATE_90|\ 6505b261ecSmrg SHADOW_ROTATE_180|SHADOW_ROTATE_270) 6605b261ecSmrg#define SHADOW_REFLECT_X 16 6705b261ecSmrg#define SHADOW_REFLECT_Y 32 6805b261ecSmrg#define SHADOW_REFLECT_ALL (SHADOW_REFLECT_X|SHADOW_REFLECT_Y) 6905b261ecSmrg 706747b715Smrgextern _X_EXPORT DevPrivateKey shadowScrPrivateKey; 7105b261ecSmrg 724642e01fSmrg#define shadowGetBuf(pScr) ((shadowBufPtr) \ 734642e01fSmrg dixLookupPrivate(&(pScr)->devPrivates, shadowScrPrivateKey)) 7405b261ecSmrg#define shadowBuf(pScr) shadowBufPtr pBuf = shadowGetBuf(pScr) 7535c4bbdfSmrg#define shadowDamage(pBuf) DamageRegion(pBuf->pDamage) 7605b261ecSmrg 776747b715Smrgextern _X_EXPORT Bool 7835c4bbdfSmrg shadowSetup(ScreenPtr pScreen); 7905b261ecSmrg 806747b715Smrgextern _X_EXPORT Bool 8135c4bbdfSmrg 8235c4bbdfSmrgshadowAdd(ScreenPtr pScreen, 8335c4bbdfSmrg PixmapPtr pPixmap, 8435c4bbdfSmrg ShadowUpdateProc update, 8535c4bbdfSmrg ShadowWindowProc window, int randr, void *closure); 8605b261ecSmrg 876747b715Smrgextern _X_EXPORT void 8835c4bbdfSmrg shadowRemove(ScreenPtr pScreen, PixmapPtr pPixmap); 8905b261ecSmrg 9035c4bbdfSmrgextern _X_EXPORT void *shadowAlloc(int width, int height, int bpp); 9105b261ecSmrg 9235c4bbdfSmrgextern _X_EXPORT void 9335c4bbdfSmrg shadowUpdateAfb4(ScreenPtr pScreen, shadowBufPtr pBuf); 9435c4bbdfSmrg 9535c4bbdfSmrgextern _X_EXPORT void 9635c4bbdfSmrg shadowUpdateAfb8(ScreenPtr pScreen, shadowBufPtr pBuf); 9735c4bbdfSmrg 9835c4bbdfSmrgextern _X_EXPORT void 9935c4bbdfSmrg shadowUpdateIplan2p4(ScreenPtr pScreen, shadowBufPtr pBuf); 10035c4bbdfSmrg 10135c4bbdfSmrgextern _X_EXPORT void 10235c4bbdfSmrg shadowUpdateIplan2p8(ScreenPtr pScreen, shadowBufPtr pBuf); 10305b261ecSmrg 1046747b715Smrgextern _X_EXPORT void 10535c4bbdfSmrg shadowUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf); 10605b261ecSmrg 1076747b715Smrgextern _X_EXPORT void 10835c4bbdfSmrg shadowUpdatePlanar4(ScreenPtr pScreen, shadowBufPtr pBuf); 10905b261ecSmrg 1106747b715Smrgextern _X_EXPORT void 11135c4bbdfSmrg shadowUpdatePlanar4x8(ScreenPtr pScreen, shadowBufPtr pBuf); 11205b261ecSmrg 1136747b715Smrgextern _X_EXPORT void 11435c4bbdfSmrg shadowUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf); 11505b261ecSmrg 1166747b715Smrgextern _X_EXPORT void 11735c4bbdfSmrg shadowUpdateRotate8_90(ScreenPtr pScreen, shadowBufPtr pBuf); 11805b261ecSmrg 1196747b715Smrgextern _X_EXPORT void 12035c4bbdfSmrg shadowUpdateRotate16_90(ScreenPtr pScreen, shadowBufPtr pBuf); 12105b261ecSmrg 1226747b715Smrgextern _X_EXPORT void 12335c4bbdfSmrg shadowUpdateRotate16_90YX(ScreenPtr pScreen, shadowBufPtr pBuf); 12405b261ecSmrg 1256747b715Smrgextern _X_EXPORT void 12635c4bbdfSmrg shadowUpdateRotate32_90(ScreenPtr pScreen, shadowBufPtr pBuf); 12705b261ecSmrg 1286747b715Smrgextern _X_EXPORT void 12935c4bbdfSmrg shadowUpdateRotate8_180(ScreenPtr pScreen, shadowBufPtr pBuf); 13005b261ecSmrg 1316747b715Smrgextern _X_EXPORT void 13235c4bbdfSmrg shadowUpdateRotate16_180(ScreenPtr pScreen, shadowBufPtr pBuf); 13305b261ecSmrg 1346747b715Smrgextern _X_EXPORT void 13535c4bbdfSmrg shadowUpdateRotate32_180(ScreenPtr pScreen, shadowBufPtr pBuf); 13605b261ecSmrg 1376747b715Smrgextern _X_EXPORT void 13835c4bbdfSmrg shadowUpdateRotate8_270(ScreenPtr pScreen, shadowBufPtr pBuf); 13905b261ecSmrg 1406747b715Smrgextern _X_EXPORT void 14135c4bbdfSmrg shadowUpdateRotate16_270(ScreenPtr pScreen, shadowBufPtr pBuf); 14205b261ecSmrg 1436747b715Smrgextern _X_EXPORT void 14435c4bbdfSmrg shadowUpdateRotate16_270YX(ScreenPtr pScreen, shadowBufPtr pBuf); 14505b261ecSmrg 1466747b715Smrgextern _X_EXPORT void 14735c4bbdfSmrg shadowUpdateRotate32_270(ScreenPtr pScreen, shadowBufPtr pBuf); 14805b261ecSmrg 1496747b715Smrgextern _X_EXPORT void 15035c4bbdfSmrg shadowUpdateRotate8(ScreenPtr pScreen, shadowBufPtr pBuf); 15105b261ecSmrg 1526747b715Smrgextern _X_EXPORT void 15335c4bbdfSmrg shadowUpdateRotate16(ScreenPtr pScreen, shadowBufPtr pBuf); 15405b261ecSmrg 1556747b715Smrgextern _X_EXPORT void 15635c4bbdfSmrg shadowUpdateRotate32(ScreenPtr pScreen, shadowBufPtr pBuf); 15705b261ecSmrg 15835c4bbdfSmrgtypedef void (*shadowUpdateProc) (ScreenPtr, shadowBufPtr); 15905b261ecSmrg 1606747b715Smrgextern _X_EXPORT shadowUpdateProc shadowUpdatePackedWeak(void); 1616747b715Smrgextern _X_EXPORT shadowUpdateProc shadowUpdatePlanar4Weak(void); 1626747b715Smrgextern _X_EXPORT shadowUpdateProc shadowUpdatePlanar4x8Weak(void); 1636747b715Smrgextern _X_EXPORT shadowUpdateProc shadowUpdateRotatePackedWeak(void); 16405b261ecSmrg 16535c4bbdfSmrg#endif /* _SHADOW_H_ */ 166