1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright © 2000 SuSE, Inc. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Permission to use, copy, modify, distribute, and sell this software and its 5*4882a593Smuzhiyun * documentation for any purpose is hereby granted without fee, provided that 6*4882a593Smuzhiyun * the above copyright notice appear in all copies and that both that 7*4882a593Smuzhiyun * copyright notice and this permission notice appear in supporting 8*4882a593Smuzhiyun * documentation, and that the name of SuSE not be used in advertising or 9*4882a593Smuzhiyun * publicity pertaining to distribution of the software without specific, 10*4882a593Smuzhiyun * written prior permission. SuSE makes no representations about the 11*4882a593Smuzhiyun * suitability of this software for any purpose. It is provided "as is" 12*4882a593Smuzhiyun * without express or implied warranty. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 15*4882a593Smuzhiyun * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE 16*4882a593Smuzhiyun * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17*4882a593Smuzhiyun * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 18*4882a593Smuzhiyun * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 19*4882a593Smuzhiyun * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20*4882a593Smuzhiyun * 21*4882a593Smuzhiyun * Author: Keith Packard, SuSE, Inc. 22*4882a593Smuzhiyun */ 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #ifndef _PICTURESTR_H_ 25*4882a593Smuzhiyun #define _PICTURESTR_H_ 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #include "scrnintstr.h" 28*4882a593Smuzhiyun #include "glyphstr.h" 29*4882a593Smuzhiyun #include "resource.h" 30*4882a593Smuzhiyun #include "privates.h" 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun typedef struct _DirectFormat { 33*4882a593Smuzhiyun CARD16 red, redMask; 34*4882a593Smuzhiyun CARD16 green, greenMask; 35*4882a593Smuzhiyun CARD16 blue, blueMask; 36*4882a593Smuzhiyun CARD16 alpha, alphaMask; 37*4882a593Smuzhiyun } DirectFormatRec; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun typedef struct _IndexFormat { 40*4882a593Smuzhiyun VisualID vid; 41*4882a593Smuzhiyun ColormapPtr pColormap; 42*4882a593Smuzhiyun int nvalues; 43*4882a593Smuzhiyun xIndexValue *pValues; 44*4882a593Smuzhiyun void *devPrivate; 45*4882a593Smuzhiyun } IndexFormatRec; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun typedef struct _PictFormat { 48*4882a593Smuzhiyun CARD32 id; 49*4882a593Smuzhiyun CARD32 format; /* except bpp */ 50*4882a593Smuzhiyun unsigned char type; 51*4882a593Smuzhiyun unsigned char depth; 52*4882a593Smuzhiyun DirectFormatRec direct; 53*4882a593Smuzhiyun IndexFormatRec index; 54*4882a593Smuzhiyun } PictFormatRec; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun typedef struct pixman_vector PictVector, *PictVectorPtr; 57*4882a593Smuzhiyun typedef struct pixman_transform PictTransform, *PictTransformPtr; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #define pict_f_vector pixman_f_vector 60*4882a593Smuzhiyun #define pict_f_transform pixman_f_transform 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #define PICT_GRADIENT_STOPTABLE_SIZE 1024 63*4882a593Smuzhiyun #define SourcePictTypeSolidFill 0 64*4882a593Smuzhiyun #define SourcePictTypeLinear 1 65*4882a593Smuzhiyun #define SourcePictTypeRadial 2 66*4882a593Smuzhiyun #define SourcePictTypeConical 3 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun typedef struct _PictSolidFill { 69*4882a593Smuzhiyun unsigned int type; 70*4882a593Smuzhiyun CARD32 color; 71*4882a593Smuzhiyun xRenderColor fullcolor; 72*4882a593Smuzhiyun } PictSolidFill, *PictSolidFillPtr; 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun typedef struct _PictGradientStop { 75*4882a593Smuzhiyun xFixed x; 76*4882a593Smuzhiyun xRenderColor color; 77*4882a593Smuzhiyun } PictGradientStop, *PictGradientStopPtr; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun typedef struct _PictGradient { 80*4882a593Smuzhiyun unsigned int type; 81*4882a593Smuzhiyun int nstops; 82*4882a593Smuzhiyun PictGradientStopPtr stops; 83*4882a593Smuzhiyun } PictGradient, *PictGradientPtr; 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun typedef struct _PictLinearGradient { 86*4882a593Smuzhiyun unsigned int type; 87*4882a593Smuzhiyun int nstops; 88*4882a593Smuzhiyun PictGradientStopPtr stops; 89*4882a593Smuzhiyun xPointFixed p1; 90*4882a593Smuzhiyun xPointFixed p2; 91*4882a593Smuzhiyun } PictLinearGradient, *PictLinearGradientPtr; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun typedef struct _PictCircle { 94*4882a593Smuzhiyun xFixed x; 95*4882a593Smuzhiyun xFixed y; 96*4882a593Smuzhiyun xFixed radius; 97*4882a593Smuzhiyun } PictCircle, *PictCirclePtr; 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun typedef struct _PictRadialGradient { 100*4882a593Smuzhiyun unsigned int type; 101*4882a593Smuzhiyun int nstops; 102*4882a593Smuzhiyun PictGradientStopPtr stops; 103*4882a593Smuzhiyun PictCircle c1; 104*4882a593Smuzhiyun PictCircle c2; 105*4882a593Smuzhiyun } PictRadialGradient, *PictRadialGradientPtr; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun typedef struct _PictConicalGradient { 108*4882a593Smuzhiyun unsigned int type; 109*4882a593Smuzhiyun int nstops; 110*4882a593Smuzhiyun PictGradientStopPtr stops; 111*4882a593Smuzhiyun xPointFixed center; 112*4882a593Smuzhiyun xFixed angle; 113*4882a593Smuzhiyun } PictConicalGradient, *PictConicalGradientPtr; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun typedef union _SourcePict { 116*4882a593Smuzhiyun unsigned int type; 117*4882a593Smuzhiyun PictSolidFill solidFill; 118*4882a593Smuzhiyun PictGradient gradient; 119*4882a593Smuzhiyun PictLinearGradient linear; 120*4882a593Smuzhiyun PictRadialGradient radial; 121*4882a593Smuzhiyun PictConicalGradient conical; 122*4882a593Smuzhiyun } SourcePict, *SourcePictPtr; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun typedef struct _Picture { 125*4882a593Smuzhiyun DrawablePtr pDrawable; 126*4882a593Smuzhiyun PictFormatPtr pFormat; 127*4882a593Smuzhiyun PictFormatShort format; /* PICT_FORMAT */ 128*4882a593Smuzhiyun int refcnt; 129*4882a593Smuzhiyun CARD32 id; 130*4882a593Smuzhiyun unsigned int repeat:1; 131*4882a593Smuzhiyun unsigned int graphicsExposures:1; 132*4882a593Smuzhiyun unsigned int subWindowMode:1; 133*4882a593Smuzhiyun unsigned int polyEdge:1; 134*4882a593Smuzhiyun unsigned int polyMode:1; 135*4882a593Smuzhiyun unsigned int freeCompClip:1; 136*4882a593Smuzhiyun unsigned int componentAlpha:1; 137*4882a593Smuzhiyun unsigned int repeatType:2; 138*4882a593Smuzhiyun unsigned int filter:3; 139*4882a593Smuzhiyun unsigned int stateChanges:CPLastBit; 140*4882a593Smuzhiyun unsigned int unused:18 - CPLastBit; 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun PicturePtr pNext; /* chain on same drawable */ 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun PicturePtr alphaMap; 145*4882a593Smuzhiyun DDXPointRec alphaOrigin; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun DDXPointRec clipOrigin; 148*4882a593Smuzhiyun RegionPtr clientClip; 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun unsigned long serialNumber; 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun RegionPtr pCompositeClip; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun PrivateRec *devPrivates; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun PictTransform *transform; 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun SourcePictPtr pSourcePict; 159*4882a593Smuzhiyun xFixed *filter_params; 160*4882a593Smuzhiyun int filter_nparams; 161*4882a593Smuzhiyun } PictureRec; 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun typedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id, 164*4882a593Smuzhiyun xFixed * params, int nparams, 165*4882a593Smuzhiyun int *width, int *height); 166*4882a593Smuzhiyun typedef struct { 167*4882a593Smuzhiyun char *name; 168*4882a593Smuzhiyun int id; 169*4882a593Smuzhiyun PictFilterValidateParamsProcPtr ValidateParams; 170*4882a593Smuzhiyun int width, height; 171*4882a593Smuzhiyun } PictFilterRec, *PictFilterPtr; 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun #define PictFilterNearest 0 174*4882a593Smuzhiyun #define PictFilterBilinear 1 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun #define PictFilterFast 2 177*4882a593Smuzhiyun #define PictFilterGood 3 178*4882a593Smuzhiyun #define PictFilterBest 4 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun #define PictFilterConvolution 5 181*4882a593Smuzhiyun /* if you add an 8th filter, expand the filter bitfield above */ 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun typedef struct { 184*4882a593Smuzhiyun char *alias; 185*4882a593Smuzhiyun int alias_id; 186*4882a593Smuzhiyun int filter_id; 187*4882a593Smuzhiyun } PictFilterAliasRec, *PictFilterAliasPtr; 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun typedef int (*CreatePictureProcPtr) (PicturePtr pPicture); 190*4882a593Smuzhiyun typedef void (*DestroyPictureProcPtr) (PicturePtr pPicture); 191*4882a593Smuzhiyun typedef int (*ChangePictureClipProcPtr) (PicturePtr pPicture, 192*4882a593Smuzhiyun int clipType, void *value, int n); 193*4882a593Smuzhiyun typedef void (*DestroyPictureClipProcPtr) (PicturePtr pPicture); 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun typedef int (*ChangePictureTransformProcPtr) (PicturePtr pPicture, 196*4882a593Smuzhiyun PictTransform * transform); 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun typedef int (*ChangePictureFilterProcPtr) (PicturePtr pPicture, 199*4882a593Smuzhiyun int filter, 200*4882a593Smuzhiyun xFixed * params, int nparams); 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun typedef void (*DestroyPictureFilterProcPtr) (PicturePtr pPicture); 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun typedef void (*ChangePictureProcPtr) (PicturePtr pPicture, Mask mask); 205*4882a593Smuzhiyun typedef void (*ValidatePictureProcPtr) (PicturePtr pPicture, Mask mask); 206*4882a593Smuzhiyun typedef void (*CompositeProcPtr) (CARD8 op, 207*4882a593Smuzhiyun PicturePtr pSrc, 208*4882a593Smuzhiyun PicturePtr pMask, 209*4882a593Smuzhiyun PicturePtr pDst, 210*4882a593Smuzhiyun INT16 xSrc, 211*4882a593Smuzhiyun INT16 ySrc, 212*4882a593Smuzhiyun INT16 xMask, 213*4882a593Smuzhiyun INT16 yMask, 214*4882a593Smuzhiyun INT16 xDst, 215*4882a593Smuzhiyun INT16 yDst, CARD16 width, CARD16 height); 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun typedef void (*GlyphsProcPtr) (CARD8 op, 218*4882a593Smuzhiyun PicturePtr pSrc, 219*4882a593Smuzhiyun PicturePtr pDst, 220*4882a593Smuzhiyun PictFormatPtr maskFormat, 221*4882a593Smuzhiyun INT16 xSrc, 222*4882a593Smuzhiyun INT16 ySrc, 223*4882a593Smuzhiyun int nlists, 224*4882a593Smuzhiyun GlyphListPtr lists, GlyphPtr * glyphs); 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun typedef void (*CompositeRectsProcPtr) (CARD8 op, 227*4882a593Smuzhiyun PicturePtr pDst, 228*4882a593Smuzhiyun xRenderColor * color, 229*4882a593Smuzhiyun int nRect, xRectangle *rects); 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun typedef void (*RasterizeTrapezoidProcPtr) (PicturePtr pMask, 232*4882a593Smuzhiyun xTrapezoid * trap, 233*4882a593Smuzhiyun int x_off, int y_off); 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun typedef void (*TrapezoidsProcPtr) (CARD8 op, 236*4882a593Smuzhiyun PicturePtr pSrc, 237*4882a593Smuzhiyun PicturePtr pDst, 238*4882a593Smuzhiyun PictFormatPtr maskFormat, 239*4882a593Smuzhiyun INT16 xSrc, 240*4882a593Smuzhiyun INT16 ySrc, int ntrap, xTrapezoid * traps); 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun typedef void (*TrianglesProcPtr) (CARD8 op, 243*4882a593Smuzhiyun PicturePtr pSrc, 244*4882a593Smuzhiyun PicturePtr pDst, 245*4882a593Smuzhiyun PictFormatPtr maskFormat, 246*4882a593Smuzhiyun INT16 xSrc, 247*4882a593Smuzhiyun INT16 ySrc, int ntri, xTriangle * tris); 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun typedef void (*TriStripProcPtr) (CARD8 op, 250*4882a593Smuzhiyun PicturePtr pSrc, 251*4882a593Smuzhiyun PicturePtr pDst, 252*4882a593Smuzhiyun PictFormatPtr maskFormat, 253*4882a593Smuzhiyun INT16 xSrc, 254*4882a593Smuzhiyun INT16 ySrc, int npoint, xPointFixed * points); 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun typedef void (*TriFanProcPtr) (CARD8 op, 257*4882a593Smuzhiyun PicturePtr pSrc, 258*4882a593Smuzhiyun PicturePtr pDst, 259*4882a593Smuzhiyun PictFormatPtr maskFormat, 260*4882a593Smuzhiyun INT16 xSrc, 261*4882a593Smuzhiyun INT16 ySrc, int npoint, xPointFixed * points); 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun typedef Bool (*InitIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat); 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun typedef void (*CloseIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat); 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun typedef void (*UpdateIndexedProcPtr) (ScreenPtr pScreen, 268*4882a593Smuzhiyun PictFormatPtr pFormat, 269*4882a593Smuzhiyun int ndef, xColorItem * pdef); 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun typedef void (*AddTrapsProcPtr) (PicturePtr pPicture, 272*4882a593Smuzhiyun INT16 xOff, 273*4882a593Smuzhiyun INT16 yOff, int ntrap, xTrap * traps); 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun typedef void (*AddTrianglesProcPtr) (PicturePtr pPicture, 276*4882a593Smuzhiyun INT16 xOff, 277*4882a593Smuzhiyun INT16 yOff, int ntri, xTriangle * tris); 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun typedef Bool (*RealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph); 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun typedef void (*UnrealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph); 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun typedef struct _PictureScreen { 284*4882a593Smuzhiyun PictFormatPtr formats; 285*4882a593Smuzhiyun PictFormatPtr fallback; 286*4882a593Smuzhiyun int nformats; 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun CreatePictureProcPtr CreatePicture; 289*4882a593Smuzhiyun DestroyPictureProcPtr DestroyPicture; 290*4882a593Smuzhiyun ChangePictureClipProcPtr ChangePictureClip; 291*4882a593Smuzhiyun DestroyPictureClipProcPtr DestroyPictureClip; 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun ChangePictureProcPtr ChangePicture; 294*4882a593Smuzhiyun ValidatePictureProcPtr ValidatePicture; 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun CompositeProcPtr Composite; 297*4882a593Smuzhiyun GlyphsProcPtr Glyphs; /* unused */ 298*4882a593Smuzhiyun CompositeRectsProcPtr CompositeRects; 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun DestroyWindowProcPtr DestroyWindow; 301*4882a593Smuzhiyun CloseScreenProcPtr CloseScreen; 302*4882a593Smuzhiyun 303*4882a593Smuzhiyun StoreColorsProcPtr StoreColors; 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun InitIndexedProcPtr InitIndexed; 306*4882a593Smuzhiyun CloseIndexedProcPtr CloseIndexed; 307*4882a593Smuzhiyun UpdateIndexedProcPtr UpdateIndexed; 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun int subpixel; 310*4882a593Smuzhiyun 311*4882a593Smuzhiyun PictFilterPtr filters; 312*4882a593Smuzhiyun int nfilters; 313*4882a593Smuzhiyun PictFilterAliasPtr filterAliases; 314*4882a593Smuzhiyun int nfilterAliases; 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun /** 317*4882a593Smuzhiyun * Called immediately after a picture's transform is changed through the 318*4882a593Smuzhiyun * SetPictureTransform request. Not called for source-only pictures. 319*4882a593Smuzhiyun */ 320*4882a593Smuzhiyun ChangePictureTransformProcPtr ChangePictureTransform; 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun /** 323*4882a593Smuzhiyun * Called immediately after a picture's transform is changed through the 324*4882a593Smuzhiyun * SetPictureFilter request. Not called for source-only pictures. 325*4882a593Smuzhiyun */ 326*4882a593Smuzhiyun ChangePictureFilterProcPtr ChangePictureFilter; 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun DestroyPictureFilterProcPtr DestroyPictureFilter; 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun TrapezoidsProcPtr Trapezoids; 331*4882a593Smuzhiyun TrianglesProcPtr Triangles; 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun RasterizeTrapezoidProcPtr RasterizeTrapezoid; 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun AddTrianglesProcPtr AddTriangles; 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun AddTrapsProcPtr AddTraps; 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun RealizeGlyphProcPtr RealizeGlyph; 340*4882a593Smuzhiyun UnrealizeGlyphProcPtr UnrealizeGlyph; 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun #define PICTURE_SCREEN_VERSION 2 343*4882a593Smuzhiyun TriStripProcPtr TriStrip; 344*4882a593Smuzhiyun TriFanProcPtr TriFan; 345*4882a593Smuzhiyun } PictureScreenRec, *PictureScreenPtr; 346*4882a593Smuzhiyun 347*4882a593Smuzhiyun extern _X_EXPORT DevPrivateKeyRec PictureScreenPrivateKeyRec; 348*4882a593Smuzhiyun #define PictureScreenPrivateKey (&PictureScreenPrivateKeyRec) 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun extern _X_EXPORT DevPrivateKeyRec PictureWindowPrivateKeyRec; 351*4882a593Smuzhiyun #define PictureWindowPrivateKey (&PictureWindowPrivateKeyRec) 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun extern RESTYPE PictureType; 354*4882a593Smuzhiyun extern RESTYPE PictFormatType; 355*4882a593Smuzhiyun extern RESTYPE GlyphSetType; 356*4882a593Smuzhiyun 357*4882a593Smuzhiyun #define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, PictureScreenPrivateKey)) 358*4882a593Smuzhiyun #define GetPictureScreenIfSet(s) (dixPrivateKeyRegistered(PictureScreenPrivateKey) ? GetPictureScreen(s) : NULL) 359*4882a593Smuzhiyun #define SetPictureScreen(s,p) dixSetPrivate(&(s)->devPrivates, PictureScreenPrivateKey, p) 360*4882a593Smuzhiyun #define GetPictureWindow(w) ((PicturePtr)dixLookupPrivate(&(w)->devPrivates, PictureWindowPrivateKey)) 361*4882a593Smuzhiyun #define SetPictureWindow(w,p) dixSetPrivate(&(w)->devPrivates, PictureWindowPrivateKey, p) 362*4882a593Smuzhiyun 363*4882a593Smuzhiyun #define VERIFY_PICTURE(pPicture, pid, client, mode) {\ 364*4882a593Smuzhiyun int tmprc = dixLookupResourceByType((void *)&(pPicture), pid,\ 365*4882a593Smuzhiyun PictureType, client, mode);\ 366*4882a593Smuzhiyun if (tmprc != Success)\ 367*4882a593Smuzhiyun return tmprc;\ 368*4882a593Smuzhiyun } 369*4882a593Smuzhiyun 370*4882a593Smuzhiyun #define VERIFY_ALPHA(pPicture, pid, client, mode) {\ 371*4882a593Smuzhiyun if (pid == None) \ 372*4882a593Smuzhiyun pPicture = 0; \ 373*4882a593Smuzhiyun else { \ 374*4882a593Smuzhiyun VERIFY_PICTURE(pPicture, pid, client, mode); \ 375*4882a593Smuzhiyun } \ 376*4882a593Smuzhiyun } \ 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun extern _X_EXPORT PictFormatPtr 379*4882a593Smuzhiyun PictureWindowFormat(WindowPtr pWindow); 380*4882a593Smuzhiyun 381*4882a593Smuzhiyun extern _X_EXPORT Bool 382*4882a593Smuzhiyun PictureSetSubpixelOrder(ScreenPtr pScreen, int subpixel); 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun extern _X_EXPORT int 385*4882a593Smuzhiyun PictureGetSubpixelOrder(ScreenPtr pScreen); 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun extern _X_EXPORT PictFormatPtr 388*4882a593Smuzhiyun PictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual); 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun extern _X_EXPORT PictFormatPtr 391*4882a593Smuzhiyun PictureMatchFormat(ScreenPtr pScreen, int depth, CARD32 format); 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun extern _X_EXPORT Bool 394*4882a593Smuzhiyun PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats); 395*4882a593Smuzhiyun 396*4882a593Smuzhiyun extern _X_EXPORT int 397*4882a593Smuzhiyun PictureGetFilterId(const char *filter, int len, Bool makeit); 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun extern _X_EXPORT char *PictureGetFilterName(int id); 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun extern _X_EXPORT int 402*4882a593Smuzhiyun PictureAddFilter(ScreenPtr pScreen, 403*4882a593Smuzhiyun const char *filter, 404*4882a593Smuzhiyun PictFilterValidateParamsProcPtr ValidateParams, 405*4882a593Smuzhiyun int width, int height); 406*4882a593Smuzhiyun 407*4882a593Smuzhiyun extern _X_EXPORT Bool 408*4882a593Smuzhiyun PictureSetFilterAlias(ScreenPtr pScreen, const char *filter, const char *alias); 409*4882a593Smuzhiyun 410*4882a593Smuzhiyun extern _X_EXPORT Bool 411*4882a593Smuzhiyun PictureSetDefaultFilters(ScreenPtr pScreen); 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun extern _X_EXPORT void 414*4882a593Smuzhiyun PictureResetFilters(ScreenPtr pScreen); 415*4882a593Smuzhiyun 416*4882a593Smuzhiyun extern _X_EXPORT PictFilterPtr 417*4882a593Smuzhiyun PictureFindFilter(ScreenPtr pScreen, char *name, int len); 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun extern _X_EXPORT int 420*4882a593Smuzhiyun SetPicturePictFilter(PicturePtr pPicture, PictFilterPtr pFilter, 421*4882a593Smuzhiyun xFixed * params, int nparams); 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun extern _X_EXPORT int 424*4882a593Smuzhiyun SetPictureFilter(PicturePtr pPicture, char *name, int len, 425*4882a593Smuzhiyun xFixed * params, int nparams); 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun extern _X_EXPORT Bool 428*4882a593Smuzhiyun PictureFinishInit(void); 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun extern _X_EXPORT PicturePtr 431*4882a593Smuzhiyun CreatePicture(Picture pid, 432*4882a593Smuzhiyun DrawablePtr pDrawable, 433*4882a593Smuzhiyun PictFormatPtr pFormat, 434*4882a593Smuzhiyun Mask mask, XID *list, ClientPtr client, int *error); 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun extern _X_EXPORT int 437*4882a593Smuzhiyun ChangePicture(PicturePtr pPicture, 438*4882a593Smuzhiyun Mask vmask, XID *vlist, DevUnion *ulist, ClientPtr client); 439*4882a593Smuzhiyun 440*4882a593Smuzhiyun extern _X_EXPORT int 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun SetPictureClipRects(PicturePtr pPicture, 443*4882a593Smuzhiyun int xOrigin, int yOrigin, int nRect, xRectangle *rects); 444*4882a593Smuzhiyun 445*4882a593Smuzhiyun extern _X_EXPORT int 446*4882a593Smuzhiyun SetPictureClipRegion(PicturePtr pPicture, 447*4882a593Smuzhiyun int xOrigin, int yOrigin, RegionPtr pRegion); 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun extern _X_EXPORT int 450*4882a593Smuzhiyun SetPictureTransform(PicturePtr pPicture, PictTransform * transform); 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun extern _X_EXPORT void 453*4882a593Smuzhiyun ValidatePicture(PicturePtr pPicture); 454*4882a593Smuzhiyun 455*4882a593Smuzhiyun extern _X_EXPORT int 456*4882a593Smuzhiyun FreePicture(void *pPicture, XID pid); 457*4882a593Smuzhiyun 458*4882a593Smuzhiyun extern _X_EXPORT void 459*4882a593Smuzhiyun CompositePicture(CARD8 op, 460*4882a593Smuzhiyun PicturePtr pSrc, 461*4882a593Smuzhiyun PicturePtr pMask, 462*4882a593Smuzhiyun PicturePtr pDst, 463*4882a593Smuzhiyun INT16 xSrc, 464*4882a593Smuzhiyun INT16 ySrc, 465*4882a593Smuzhiyun INT16 xMask, 466*4882a593Smuzhiyun INT16 yMask, 467*4882a593Smuzhiyun INT16 xDst, INT16 yDst, CARD16 width, CARD16 height); 468*4882a593Smuzhiyun 469*4882a593Smuzhiyun extern _X_EXPORT void 470*4882a593Smuzhiyun CompositeGlyphs(CARD8 op, 471*4882a593Smuzhiyun PicturePtr pSrc, 472*4882a593Smuzhiyun PicturePtr pDst, 473*4882a593Smuzhiyun PictFormatPtr maskFormat, 474*4882a593Smuzhiyun INT16 xSrc, 475*4882a593Smuzhiyun INT16 ySrc, int nlist, GlyphListPtr lists, GlyphPtr * glyphs); 476*4882a593Smuzhiyun 477*4882a593Smuzhiyun extern _X_EXPORT void 478*4882a593Smuzhiyun CompositeRects(CARD8 op, 479*4882a593Smuzhiyun PicturePtr pDst, 480*4882a593Smuzhiyun xRenderColor * color, int nRect, xRectangle *rects); 481*4882a593Smuzhiyun 482*4882a593Smuzhiyun extern _X_EXPORT void 483*4882a593Smuzhiyun CompositeTrapezoids(CARD8 op, 484*4882a593Smuzhiyun PicturePtr pSrc, 485*4882a593Smuzhiyun PicturePtr pDst, 486*4882a593Smuzhiyun PictFormatPtr maskFormat, 487*4882a593Smuzhiyun INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps); 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun extern _X_EXPORT void 490*4882a593Smuzhiyun CompositeTriangles(CARD8 op, 491*4882a593Smuzhiyun PicturePtr pSrc, 492*4882a593Smuzhiyun PicturePtr pDst, 493*4882a593Smuzhiyun PictFormatPtr maskFormat, 494*4882a593Smuzhiyun INT16 xSrc, 495*4882a593Smuzhiyun INT16 ySrc, int ntriangles, xTriangle * triangles); 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun extern _X_EXPORT void 498*4882a593Smuzhiyun CompositeTriStrip(CARD8 op, 499*4882a593Smuzhiyun PicturePtr pSrc, 500*4882a593Smuzhiyun PicturePtr pDst, 501*4882a593Smuzhiyun PictFormatPtr maskFormat, 502*4882a593Smuzhiyun INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points); 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun extern _X_EXPORT void 505*4882a593Smuzhiyun CompositeTriFan(CARD8 op, 506*4882a593Smuzhiyun PicturePtr pSrc, 507*4882a593Smuzhiyun PicturePtr pDst, 508*4882a593Smuzhiyun PictFormatPtr maskFormat, 509*4882a593Smuzhiyun INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points); 510*4882a593Smuzhiyun 511*4882a593Smuzhiyun Bool 512*4882a593Smuzhiyun AnimCurInit(ScreenPtr pScreen); 513*4882a593Smuzhiyun 514*4882a593Smuzhiyun int 515*4882a593Smuzhiyun AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor, 516*4882a593Smuzhiyun CursorPtr *ppCursor, ClientPtr client, XID cid); 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun extern _X_EXPORT void 519*4882a593Smuzhiyun AddTraps(PicturePtr pPicture, 520*4882a593Smuzhiyun INT16 xOff, INT16 yOff, int ntraps, xTrap * traps); 521*4882a593Smuzhiyun 522*4882a593Smuzhiyun extern _X_EXPORT PicturePtr 523*4882a593Smuzhiyun CreateSolidPicture(Picture pid, xRenderColor * color, int *error); 524*4882a593Smuzhiyun 525*4882a593Smuzhiyun extern _X_EXPORT PicturePtr 526*4882a593Smuzhiyun CreateLinearGradientPicture(Picture pid, 527*4882a593Smuzhiyun xPointFixed * p1, 528*4882a593Smuzhiyun xPointFixed * p2, 529*4882a593Smuzhiyun int nStops, 530*4882a593Smuzhiyun xFixed * stops, xRenderColor * colors, int *error); 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun extern _X_EXPORT PicturePtr 533*4882a593Smuzhiyun CreateRadialGradientPicture(Picture pid, 534*4882a593Smuzhiyun xPointFixed * inner, 535*4882a593Smuzhiyun xPointFixed * outer, 536*4882a593Smuzhiyun xFixed innerRadius, 537*4882a593Smuzhiyun xFixed outerRadius, 538*4882a593Smuzhiyun int nStops, 539*4882a593Smuzhiyun xFixed * stops, xRenderColor * colors, int *error); 540*4882a593Smuzhiyun 541*4882a593Smuzhiyun extern _X_EXPORT PicturePtr 542*4882a593Smuzhiyun CreateConicalGradientPicture(Picture pid, 543*4882a593Smuzhiyun xPointFixed * center, 544*4882a593Smuzhiyun xFixed angle, 545*4882a593Smuzhiyun int nStops, 546*4882a593Smuzhiyun xFixed * stops, xRenderColor * colors, int *error); 547*4882a593Smuzhiyun 548*4882a593Smuzhiyun #ifdef PANORAMIX 549*4882a593Smuzhiyun extern void PanoramiXRenderInit(void); 550*4882a593Smuzhiyun extern void PanoramiXRenderReset(void); 551*4882a593Smuzhiyun #endif 552*4882a593Smuzhiyun 553*4882a593Smuzhiyun /* 554*4882a593Smuzhiyun * matrix.c 555*4882a593Smuzhiyun */ 556*4882a593Smuzhiyun 557*4882a593Smuzhiyun extern _X_EXPORT void 558*4882a593Smuzhiyun PictTransform_from_xRenderTransform(PictTransformPtr pict, 559*4882a593Smuzhiyun xRenderTransform * render); 560*4882a593Smuzhiyun 561*4882a593Smuzhiyun extern _X_EXPORT void 562*4882a593Smuzhiyun xRenderTransform_from_PictTransform(xRenderTransform * render, 563*4882a593Smuzhiyun PictTransformPtr pict); 564*4882a593Smuzhiyun 565*4882a593Smuzhiyun extern _X_EXPORT Bool 566*4882a593Smuzhiyun PictureTransformPoint(PictTransformPtr transform, PictVectorPtr vector); 567*4882a593Smuzhiyun 568*4882a593Smuzhiyun extern _X_EXPORT Bool 569*4882a593Smuzhiyun PictureTransformPoint3d(PictTransformPtr transform, PictVectorPtr vector); 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun #endif /* _PICTURESTR_H_ */ 572