picturestr.h revision 35c4bbdf
105b261ecSmrg/*
205b261ecSmrg * Copyright © 2000 SuSE, Inc.
305b261ecSmrg *
405b261ecSmrg * Permission to use, copy, modify, distribute, and sell this software and its
505b261ecSmrg * documentation for any purpose is hereby granted without fee, provided that
605b261ecSmrg * the above copyright notice appear in all copies and that both that
705b261ecSmrg * copyright notice and this permission notice appear in supporting
805b261ecSmrg * documentation, and that the name of SuSE not be used in advertising or
905b261ecSmrg * publicity pertaining to distribution of the software without specific,
1005b261ecSmrg * written prior permission.  SuSE makes no representations about the
1105b261ecSmrg * suitability of this software for any purpose.  It is provided "as is"
1205b261ecSmrg * without express or implied warranty.
1305b261ecSmrg *
1405b261ecSmrg * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
1505b261ecSmrg * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
1605b261ecSmrg * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1705b261ecSmrg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
1805b261ecSmrg * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
1905b261ecSmrg * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2005b261ecSmrg *
2105b261ecSmrg * Author:  Keith Packard, SuSE, Inc.
2205b261ecSmrg */
2305b261ecSmrg
2405b261ecSmrg#ifndef _PICTURESTR_H_
2505b261ecSmrg#define _PICTURESTR_H_
2605b261ecSmrg
2705b261ecSmrg#include "scrnintstr.h"
2805b261ecSmrg#include "glyphstr.h"
2905b261ecSmrg#include "resource.h"
304642e01fSmrg#include "privates.h"
3105b261ecSmrg
3205b261ecSmrgtypedef struct _DirectFormat {
3335c4bbdfSmrg    CARD16 red, redMask;
3435c4bbdfSmrg    CARD16 green, greenMask;
3535c4bbdfSmrg    CARD16 blue, blueMask;
3635c4bbdfSmrg    CARD16 alpha, alphaMask;
3705b261ecSmrg} DirectFormatRec;
3805b261ecSmrg
3905b261ecSmrgtypedef struct _IndexFormat {
4035c4bbdfSmrg    VisualID vid;
4135c4bbdfSmrg    ColormapPtr pColormap;
4235c4bbdfSmrg    int nvalues;
4335c4bbdfSmrg    xIndexValue *pValues;
4435c4bbdfSmrg    void *devPrivate;
4505b261ecSmrg} IndexFormatRec;
4605b261ecSmrg
4705b261ecSmrgtypedef struct _PictFormat {
4835c4bbdfSmrg    CARD32 id;
4935c4bbdfSmrg    CARD32 format;              /* except bpp */
5035c4bbdfSmrg    unsigned char type;
5135c4bbdfSmrg    unsigned char depth;
5205b261ecSmrg    DirectFormatRec direct;
5335c4bbdfSmrg    IndexFormatRec index;
5405b261ecSmrg} PictFormatRec;
5505b261ecSmrg
5605b261ecSmrgtypedef struct pixman_vector PictVector, *PictVectorPtr;
5705b261ecSmrgtypedef struct pixman_transform PictTransform, *PictTransformPtr;
5805b261ecSmrg
594642e01fSmrg#define pict_f_vector pixman_f_vector
604642e01fSmrg#define pict_f_transform pixman_f_transform
614642e01fSmrg
6205b261ecSmrg#define PICT_GRADIENT_STOPTABLE_SIZE 1024
6305b261ecSmrg#define SourcePictTypeSolidFill 0
6405b261ecSmrg#define SourcePictTypeLinear 1
6505b261ecSmrg#define SourcePictTypeRadial 2
6605b261ecSmrg#define SourcePictTypeConical 3
6705b261ecSmrg
6805b261ecSmrgtypedef struct _PictSolidFill {
6905b261ecSmrg    unsigned int type;
7005b261ecSmrg    CARD32 color;
7105b261ecSmrg} PictSolidFill, *PictSolidFillPtr;
7205b261ecSmrg
7305b261ecSmrgtypedef struct _PictGradientStop {
7405b261ecSmrg    xFixed x;
7505b261ecSmrg    xRenderColor color;
7605b261ecSmrg} PictGradientStop, *PictGradientStopPtr;
7705b261ecSmrg
7805b261ecSmrgtypedef struct _PictGradient {
7905b261ecSmrg    unsigned int type;
8005b261ecSmrg    int nstops;
8105b261ecSmrg    PictGradientStopPtr stops;
8205b261ecSmrg} PictGradient, *PictGradientPtr;
8305b261ecSmrg
8405b261ecSmrgtypedef struct _PictLinearGradient {
8505b261ecSmrg    unsigned int type;
8605b261ecSmrg    int nstops;
8705b261ecSmrg    PictGradientStopPtr stops;
8805b261ecSmrg    xPointFixed p1;
8905b261ecSmrg    xPointFixed p2;
9005b261ecSmrg} PictLinearGradient, *PictLinearGradientPtr;
9105b261ecSmrg
9205b261ecSmrgtypedef struct _PictCircle {
9305b261ecSmrg    xFixed x;
9405b261ecSmrg    xFixed y;
9505b261ecSmrg    xFixed radius;
9605b261ecSmrg} PictCircle, *PictCirclePtr;
9705b261ecSmrg
9805b261ecSmrgtypedef struct _PictRadialGradient {
9905b261ecSmrg    unsigned int type;
10005b261ecSmrg    int nstops;
10105b261ecSmrg    PictGradientStopPtr stops;
10205b261ecSmrg    PictCircle c1;
10305b261ecSmrg    PictCircle c2;
10405b261ecSmrg} PictRadialGradient, *PictRadialGradientPtr;
10505b261ecSmrg
10605b261ecSmrgtypedef struct _PictConicalGradient {
10705b261ecSmrg    unsigned int type;
10805b261ecSmrg    int nstops;
10905b261ecSmrg    PictGradientStopPtr stops;
11005b261ecSmrg    xPointFixed center;
11105b261ecSmrg    xFixed angle;
11205b261ecSmrg} PictConicalGradient, *PictConicalGradientPtr;
11305b261ecSmrg
11405b261ecSmrgtypedef union _SourcePict {
11505b261ecSmrg    unsigned int type;
11605b261ecSmrg    PictSolidFill solidFill;
11705b261ecSmrg    PictGradient gradient;
11805b261ecSmrg    PictLinearGradient linear;
11905b261ecSmrg    PictRadialGradient radial;
12005b261ecSmrg    PictConicalGradient conical;
12105b261ecSmrg} SourcePict, *SourcePictPtr;
12205b261ecSmrg
12305b261ecSmrgtypedef struct _Picture {
12435c4bbdfSmrg    DrawablePtr pDrawable;
12535c4bbdfSmrg    PictFormatPtr pFormat;
12635c4bbdfSmrg    PictFormatShort format;     /* PICT_FORMAT */
12735c4bbdfSmrg    int refcnt;
12835c4bbdfSmrg    CARD32 id;
12935c4bbdfSmrg    unsigned int repeat:1;
13035c4bbdfSmrg    unsigned int graphicsExposures:1;
13135c4bbdfSmrg    unsigned int subWindowMode:1;
13235c4bbdfSmrg    unsigned int polyEdge:1;
13335c4bbdfSmrg    unsigned int polyMode:1;
13435c4bbdfSmrg    unsigned int freeCompClip:1;
13535c4bbdfSmrg    unsigned int componentAlpha:1;
13635c4bbdfSmrg    unsigned int repeatType:2;
13735c4bbdfSmrg    unsigned int filter:3;
13835c4bbdfSmrg    unsigned int stateChanges:CPLastBit;
13935c4bbdfSmrg    unsigned int unused:18 - CPLastBit;
14035c4bbdfSmrg
14135c4bbdfSmrg    PicturePtr pNext;           /* chain on same drawable */
14235c4bbdfSmrg
14335c4bbdfSmrg    PicturePtr alphaMap;
14435c4bbdfSmrg    DDXPointRec alphaOrigin;
14535c4bbdfSmrg
14635c4bbdfSmrg    DDXPointRec clipOrigin;
14735c4bbdfSmrg    RegionPtr clientClip;
14835c4bbdfSmrg
14935c4bbdfSmrg    unsigned long serialNumber;
15035c4bbdfSmrg
15135c4bbdfSmrg    RegionPtr pCompositeClip;
15235c4bbdfSmrg
15335c4bbdfSmrg    PrivateRec *devPrivates;
15435c4bbdfSmrg
15535c4bbdfSmrg    PictTransform *transform;
15635c4bbdfSmrg
15735c4bbdfSmrg    SourcePictPtr pSourcePict;
15835c4bbdfSmrg    xFixed *filter_params;
15935c4bbdfSmrg    int filter_nparams;
16005b261ecSmrg} PictureRec;
16105b261ecSmrg
1624642e01fSmrgtypedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id,
16335c4bbdfSmrg                                                 xFixed * params, int nparams,
16435c4bbdfSmrg                                                 int *width, int *height);
16505b261ecSmrgtypedef struct {
16635c4bbdfSmrg    char *name;
16735c4bbdfSmrg    int id;
16805b261ecSmrg    PictFilterValidateParamsProcPtr ValidateParams;
16935c4bbdfSmrg    int width, height;
17005b261ecSmrg} PictFilterRec, *PictFilterPtr;
17105b261ecSmrg
17205b261ecSmrg#define PictFilterNearest	0
17305b261ecSmrg#define PictFilterBilinear	1
17405b261ecSmrg
17505b261ecSmrg#define PictFilterFast		2
17605b261ecSmrg#define PictFilterGood		3
17705b261ecSmrg#define PictFilterBest		4
17805b261ecSmrg
17905b261ecSmrg#define PictFilterConvolution	5
1809ace9065Smrg/* if you add an 8th filter, expand the filter bitfield above */
18105b261ecSmrg
18205b261ecSmrgtypedef struct {
18335c4bbdfSmrg    char *alias;
18435c4bbdfSmrg    int alias_id;
18535c4bbdfSmrg    int filter_id;
18605b261ecSmrg} PictFilterAliasRec, *PictFilterAliasPtr;
18705b261ecSmrg
18835c4bbdfSmrgtypedef int (*CreatePictureProcPtr) (PicturePtr pPicture);
18935c4bbdfSmrgtypedef void (*DestroyPictureProcPtr) (PicturePtr pPicture);
19035c4bbdfSmrgtypedef int (*ChangePictureClipProcPtr) (PicturePtr pPicture,
19135c4bbdfSmrg                                         int clipType, void *value, int n);
19235c4bbdfSmrgtypedef void (*DestroyPictureClipProcPtr) (PicturePtr pPicture);
19335c4bbdfSmrg
19435c4bbdfSmrgtypedef int (*ChangePictureTransformProcPtr) (PicturePtr pPicture,
19535c4bbdfSmrg                                              PictTransform * transform);
19635c4bbdfSmrg
19735c4bbdfSmrgtypedef int (*ChangePictureFilterProcPtr) (PicturePtr pPicture,
19835c4bbdfSmrg                                           int filter,
19935c4bbdfSmrg                                           xFixed * params, int nparams);
20035c4bbdfSmrg
20135c4bbdfSmrgtypedef void (*DestroyPictureFilterProcPtr) (PicturePtr pPicture);
20235c4bbdfSmrg
20335c4bbdfSmrgtypedef void (*ChangePictureProcPtr) (PicturePtr pPicture, Mask mask);
20435c4bbdfSmrgtypedef void (*ValidatePictureProcPtr) (PicturePtr pPicture, Mask mask);
20535c4bbdfSmrgtypedef void (*CompositeProcPtr) (CARD8 op,
20635c4bbdfSmrg                                  PicturePtr pSrc,
20735c4bbdfSmrg                                  PicturePtr pMask,
20835c4bbdfSmrg                                  PicturePtr pDst,
20935c4bbdfSmrg                                  INT16 xSrc,
21035c4bbdfSmrg                                  INT16 ySrc,
21135c4bbdfSmrg                                  INT16 xMask,
21235c4bbdfSmrg                                  INT16 yMask,
21335c4bbdfSmrg                                  INT16 xDst,
21435c4bbdfSmrg                                  INT16 yDst, CARD16 width, CARD16 height);
21535c4bbdfSmrg
21635c4bbdfSmrgtypedef void (*GlyphsProcPtr) (CARD8 op,
21735c4bbdfSmrg                               PicturePtr pSrc,
21835c4bbdfSmrg                               PicturePtr pDst,
21935c4bbdfSmrg                               PictFormatPtr maskFormat,
22035c4bbdfSmrg                               INT16 xSrc,
22135c4bbdfSmrg                               INT16 ySrc,
22235c4bbdfSmrg                               int nlists,
22335c4bbdfSmrg                               GlyphListPtr lists, GlyphPtr * glyphs);
22435c4bbdfSmrg
22535c4bbdfSmrgtypedef void (*CompositeRectsProcPtr) (CARD8 op,
22635c4bbdfSmrg                                       PicturePtr pDst,
22735c4bbdfSmrg                                       xRenderColor * color,
22835c4bbdfSmrg                                       int nRect, xRectangle *rects);
22935c4bbdfSmrg
23035c4bbdfSmrgtypedef void (*RasterizeTrapezoidProcPtr) (PicturePtr pMask,
23135c4bbdfSmrg                                           xTrapezoid * trap,
23235c4bbdfSmrg                                           int x_off, int y_off);
23335c4bbdfSmrg
23435c4bbdfSmrgtypedef void (*TrapezoidsProcPtr) (CARD8 op,
23535c4bbdfSmrg                                   PicturePtr pSrc,
23635c4bbdfSmrg                                   PicturePtr pDst,
23735c4bbdfSmrg                                   PictFormatPtr maskFormat,
23835c4bbdfSmrg                                   INT16 xSrc,
23935c4bbdfSmrg                                   INT16 ySrc, int ntrap, xTrapezoid * traps);
24035c4bbdfSmrg
24135c4bbdfSmrgtypedef void (*TrianglesProcPtr) (CARD8 op,
24235c4bbdfSmrg                                  PicturePtr pSrc,
24335c4bbdfSmrg                                  PicturePtr pDst,
24435c4bbdfSmrg                                  PictFormatPtr maskFormat,
24535c4bbdfSmrg                                  INT16 xSrc,
24635c4bbdfSmrg                                  INT16 ySrc, int ntri, xTriangle * tris);
24735c4bbdfSmrg
24835c4bbdfSmrgtypedef void (*TriStripProcPtr) (CARD8 op,
24935c4bbdfSmrg                                 PicturePtr pSrc,
25035c4bbdfSmrg                                 PicturePtr pDst,
25135c4bbdfSmrg                                 PictFormatPtr maskFormat,
25235c4bbdfSmrg                                 INT16 xSrc,
25335c4bbdfSmrg                                 INT16 ySrc, int npoint, xPointFixed * points);
25435c4bbdfSmrg
25535c4bbdfSmrgtypedef void (*TriFanProcPtr) (CARD8 op,
25635c4bbdfSmrg                               PicturePtr pSrc,
25735c4bbdfSmrg                               PicturePtr pDst,
25835c4bbdfSmrg                               PictFormatPtr maskFormat,
25935c4bbdfSmrg                               INT16 xSrc,
26035c4bbdfSmrg                               INT16 ySrc, int npoint, xPointFixed * points);
26135c4bbdfSmrg
26235c4bbdfSmrgtypedef Bool (*InitIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat);
26335c4bbdfSmrg
26435c4bbdfSmrgtypedef void (*CloseIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat);
26535c4bbdfSmrg
26635c4bbdfSmrgtypedef void (*UpdateIndexedProcPtr) (ScreenPtr pScreen,
26735c4bbdfSmrg                                      PictFormatPtr pFormat,
26835c4bbdfSmrg                                      int ndef, xColorItem * pdef);
26935c4bbdfSmrg
27035c4bbdfSmrgtypedef void (*AddTrapsProcPtr) (PicturePtr pPicture,
27135c4bbdfSmrg                                 INT16 xOff,
27235c4bbdfSmrg                                 INT16 yOff, int ntrap, xTrap * traps);
27335c4bbdfSmrg
27435c4bbdfSmrgtypedef void (*AddTrianglesProcPtr) (PicturePtr pPicture,
27535c4bbdfSmrg                                     INT16 xOff,
27635c4bbdfSmrg                                     INT16 yOff, int ntri, xTriangle * tris);
27735c4bbdfSmrg
27835c4bbdfSmrgtypedef Bool (*RealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph);
27935c4bbdfSmrg
28035c4bbdfSmrgtypedef void (*UnrealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph);
28105b261ecSmrg
28205b261ecSmrgtypedef struct _PictureScreen {
28335c4bbdfSmrg    PictFormatPtr formats;
28435c4bbdfSmrg    PictFormatPtr fallback;
28535c4bbdfSmrg    int nformats;
28605b261ecSmrg
28735c4bbdfSmrg    CreatePictureProcPtr CreatePicture;
28835c4bbdfSmrg    DestroyPictureProcPtr DestroyPicture;
28935c4bbdfSmrg    ChangePictureClipProcPtr ChangePictureClip;
29035c4bbdfSmrg    DestroyPictureClipProcPtr DestroyPictureClip;
29105b261ecSmrg
29235c4bbdfSmrg    ChangePictureProcPtr ChangePicture;
29335c4bbdfSmrg    ValidatePictureProcPtr ValidatePicture;
29405b261ecSmrg
29535c4bbdfSmrg    CompositeProcPtr Composite;
29635c4bbdfSmrg    GlyphsProcPtr Glyphs;       /* unused */
29735c4bbdfSmrg    CompositeRectsProcPtr CompositeRects;
29805b261ecSmrg
29935c4bbdfSmrg    DestroyWindowProcPtr DestroyWindow;
30035c4bbdfSmrg    CloseScreenProcPtr CloseScreen;
30105b261ecSmrg
30235c4bbdfSmrg    StoreColorsProcPtr StoreColors;
30305b261ecSmrg
30435c4bbdfSmrg    InitIndexedProcPtr InitIndexed;
30535c4bbdfSmrg    CloseIndexedProcPtr CloseIndexed;
30635c4bbdfSmrg    UpdateIndexedProcPtr UpdateIndexed;
30705b261ecSmrg
30835c4bbdfSmrg    int subpixel;
30905b261ecSmrg
31035c4bbdfSmrg    PictFilterPtr filters;
31135c4bbdfSmrg    int nfilters;
31235c4bbdfSmrg    PictFilterAliasPtr filterAliases;
31335c4bbdfSmrg    int nfilterAliases;
31405b261ecSmrg
31505b261ecSmrg    /**
31605b261ecSmrg     * Called immediately after a picture's transform is changed through the
31705b261ecSmrg     * SetPictureTransform request.  Not called for source-only pictures.
31805b261ecSmrg     */
31935c4bbdfSmrg    ChangePictureTransformProcPtr ChangePictureTransform;
32005b261ecSmrg
32105b261ecSmrg    /**
32205b261ecSmrg     * Called immediately after a picture's transform is changed through the
32305b261ecSmrg     * SetPictureFilter request.  Not called for source-only pictures.
32405b261ecSmrg     */
32535c4bbdfSmrg    ChangePictureFilterProcPtr ChangePictureFilter;
32605b261ecSmrg
32735c4bbdfSmrg    DestroyPictureFilterProcPtr DestroyPictureFilter;
32805b261ecSmrg
32935c4bbdfSmrg    TrapezoidsProcPtr Trapezoids;
33035c4bbdfSmrg    TrianglesProcPtr Triangles;
33105b261ecSmrg
33235c4bbdfSmrg    RasterizeTrapezoidProcPtr RasterizeTrapezoid;
33305b261ecSmrg
33435c4bbdfSmrg    AddTrianglesProcPtr AddTriangles;
33505b261ecSmrg
33635c4bbdfSmrg    AddTrapsProcPtr AddTraps;
33705b261ecSmrg
33835c4bbdfSmrg    RealizeGlyphProcPtr RealizeGlyph;
33935c4bbdfSmrg    UnrealizeGlyphProcPtr UnrealizeGlyph;
34005b261ecSmrg
34135c4bbdfSmrg#define PICTURE_SCREEN_VERSION 2
34235c4bbdfSmrg    TriStripProcPtr TriStrip;
34335c4bbdfSmrg    TriFanProcPtr TriFan;
34405b261ecSmrg} PictureScreenRec, *PictureScreenPtr;
34505b261ecSmrg
3466747b715Smrgextern _X_EXPORT DevPrivateKeyRec PictureScreenPrivateKeyRec;
3476747b715Smrg#define PictureScreenPrivateKey (&PictureScreenPrivateKeyRec)
3486747b715Smrg
3496747b715Smrgextern _X_EXPORT DevPrivateKeyRec PictureWindowPrivateKeyRec;
3506747b715Smrg#define	PictureWindowPrivateKey (&PictureWindowPrivateKeyRec)
3516747b715Smrg
35235c4bbdfSmrgextern RESTYPE PictureType;
35335c4bbdfSmrgextern RESTYPE PictFormatType;
35435c4bbdfSmrgextern RESTYPE GlyphSetType;
35505b261ecSmrg
3564642e01fSmrg#define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, PictureScreenPrivateKey))
3576747b715Smrg#define GetPictureScreenIfSet(s) (dixPrivateKeyRegistered(PictureScreenPrivateKey) ? GetPictureScreen(s) : NULL)
3584642e01fSmrg#define SetPictureScreen(s,p) dixSetPrivate(&(s)->devPrivates, PictureScreenPrivateKey, p)
3594642e01fSmrg#define GetPictureWindow(w) ((PicturePtr)dixLookupPrivate(&(w)->devPrivates, PictureWindowPrivateKey))
3604642e01fSmrg#define SetPictureWindow(w,p) dixSetPrivate(&(w)->devPrivates, PictureWindowPrivateKey, p)
36105b261ecSmrg
3626747b715Smrg#define VERIFY_PICTURE(pPicture, pid, client, mode) {\
36335c4bbdfSmrg    int tmprc = dixLookupResourceByType((void *)&(pPicture), pid,\
36435c4bbdfSmrg	                                PictureType, client, mode);\
36535c4bbdfSmrg    if (tmprc != Success)\
36635c4bbdfSmrg	return tmprc;\
36705b261ecSmrg}
36805b261ecSmrg
3696747b715Smrg#define VERIFY_ALPHA(pPicture, pid, client, mode) {\
37005b261ecSmrg    if (pid == None) \
37105b261ecSmrg	pPicture = 0; \
37205b261ecSmrg    else { \
3736747b715Smrg	VERIFY_PICTURE(pPicture, pid, client, mode); \
37405b261ecSmrg    } \
37505b261ecSmrg} \
37605b261ecSmrg
37735c4bbdfSmrgextern _X_EXPORT PictFormatPtr
37835c4bbdfSmrg PictureWindowFormat(WindowPtr pWindow);
37905b261ecSmrg
3806747b715Smrgextern _X_EXPORT Bool
38135c4bbdfSmrg PictureSetSubpixelOrder(ScreenPtr pScreen, int subpixel);
38205b261ecSmrg
3836747b715Smrgextern _X_EXPORT int
38435c4bbdfSmrg PictureGetSubpixelOrder(ScreenPtr pScreen);
38505b261ecSmrg
3866747b715Smrgextern _X_EXPORT PictFormatPtr
38735c4bbdfSmrgPictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual);
38805b261ecSmrg
3896747b715Smrgextern _X_EXPORT PictFormatPtr
39035c4bbdfSmrgPictureMatchFormat(ScreenPtr pScreen, int depth, CARD32 format);
39105b261ecSmrg
3926747b715Smrgextern _X_EXPORT Bool
39335c4bbdfSmrg PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
39405b261ecSmrg
3956747b715Smrgextern _X_EXPORT int
39635c4bbdfSmrg PictureGetFilterId(const char *filter, int len, Bool makeit);
39705b261ecSmrg
39835c4bbdfSmrgextern _X_EXPORT char *PictureGetFilterName(int id);
39905b261ecSmrg
4006747b715Smrgextern _X_EXPORT int
40135c4bbdfSmrgPictureAddFilter(ScreenPtr pScreen,
40235c4bbdfSmrg                 const char *filter,
40335c4bbdfSmrg                 PictFilterValidateParamsProcPtr ValidateParams,
40435c4bbdfSmrg                 int width, int height);
40505b261ecSmrg
4066747b715Smrgextern _X_EXPORT Bool
40735c4bbdfSmrgPictureSetFilterAlias(ScreenPtr pScreen, const char *filter, const char *alias);
40805b261ecSmrg
4096747b715Smrgextern _X_EXPORT Bool
41035c4bbdfSmrg PictureSetDefaultFilters(ScreenPtr pScreen);
41105b261ecSmrg
4126747b715Smrgextern _X_EXPORT void
41335c4bbdfSmrg PictureResetFilters(ScreenPtr pScreen);
41405b261ecSmrg
4156747b715Smrgextern _X_EXPORT PictFilterPtr
41635c4bbdfSmrgPictureFindFilter(ScreenPtr pScreen, char *name, int len);
41705b261ecSmrg
4186747b715Smrgextern _X_EXPORT int
41935c4bbdfSmrgSetPicturePictFilter(PicturePtr pPicture, PictFilterPtr pFilter,
42035c4bbdfSmrg                     xFixed * params, int nparams);
4214642e01fSmrg
4226747b715Smrgextern _X_EXPORT int
42335c4bbdfSmrgSetPictureFilter(PicturePtr pPicture, char *name, int len,
42435c4bbdfSmrg                 xFixed * params, int nparams);
42505b261ecSmrg
4266747b715Smrgextern _X_EXPORT Bool
42735c4bbdfSmrg PictureFinishInit(void);
42805b261ecSmrg
4296747b715Smrgextern _X_EXPORT PicturePtr
43035c4bbdfSmrgCreatePicture(Picture pid,
43135c4bbdfSmrg              DrawablePtr pDrawable,
43235c4bbdfSmrg              PictFormatPtr pFormat,
43335c4bbdfSmrg              Mask mask, XID *list, ClientPtr client, int *error);
43405b261ecSmrg
4356747b715Smrgextern _X_EXPORT int
43635c4bbdfSmrgChangePicture(PicturePtr pPicture,
43735c4bbdfSmrg              Mask vmask, XID *vlist, DevUnion *ulist, ClientPtr client);
43805b261ecSmrg
4396747b715Smrgextern _X_EXPORT int
44005b261ecSmrg
44135c4bbdfSmrgSetPictureClipRects(PicturePtr pPicture,
44235c4bbdfSmrg                    int xOrigin, int yOrigin, int nRect, xRectangle *rects);
44305b261ecSmrg
4446747b715Smrgextern _X_EXPORT int
44535c4bbdfSmrgSetPictureClipRegion(PicturePtr pPicture,
44635c4bbdfSmrg                     int xOrigin, int yOrigin, RegionPtr pRegion);
44705b261ecSmrg
44835c4bbdfSmrgextern _X_EXPORT int
44935c4bbdfSmrg SetPictureTransform(PicturePtr pPicture, PictTransform * transform);
45005b261ecSmrg
4516747b715Smrgextern _X_EXPORT void
45235c4bbdfSmrg ValidatePicture(PicturePtr pPicture);
45305b261ecSmrg
4546747b715Smrgextern _X_EXPORT int
45535c4bbdfSmrg FreePicture(void *pPicture, XID pid);
45605b261ecSmrg
4576747b715Smrgextern _X_EXPORT void
45835c4bbdfSmrgCompositePicture(CARD8 op,
45935c4bbdfSmrg                 PicturePtr pSrc,
46035c4bbdfSmrg                 PicturePtr pMask,
46135c4bbdfSmrg                 PicturePtr pDst,
46235c4bbdfSmrg                 INT16 xSrc,
46335c4bbdfSmrg                 INT16 ySrc,
46435c4bbdfSmrg                 INT16 xMask,
46535c4bbdfSmrg                 INT16 yMask,
46635c4bbdfSmrg                 INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
46705b261ecSmrg
4686747b715Smrgextern _X_EXPORT void
46935c4bbdfSmrgCompositeGlyphs(CARD8 op,
47035c4bbdfSmrg                PicturePtr pSrc,
47135c4bbdfSmrg                PicturePtr pDst,
47235c4bbdfSmrg                PictFormatPtr maskFormat,
47335c4bbdfSmrg                INT16 xSrc,
47435c4bbdfSmrg                INT16 ySrc, int nlist, GlyphListPtr lists, GlyphPtr * glyphs);
47505b261ecSmrg
4766747b715Smrgextern _X_EXPORT void
47735c4bbdfSmrgCompositeRects(CARD8 op,
47835c4bbdfSmrg               PicturePtr pDst,
47935c4bbdfSmrg               xRenderColor * color, int nRect, xRectangle *rects);
48005b261ecSmrg
4816747b715Smrgextern _X_EXPORT void
48235c4bbdfSmrgCompositeTrapezoids(CARD8 op,
48335c4bbdfSmrg                    PicturePtr pSrc,
48435c4bbdfSmrg                    PicturePtr pDst,
48535c4bbdfSmrg                    PictFormatPtr maskFormat,
48635c4bbdfSmrg                    INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
48705b261ecSmrg
4886747b715Smrgextern _X_EXPORT void
48935c4bbdfSmrgCompositeTriangles(CARD8 op,
49035c4bbdfSmrg                   PicturePtr pSrc,
49135c4bbdfSmrg                   PicturePtr pDst,
49235c4bbdfSmrg                   PictFormatPtr maskFormat,
49335c4bbdfSmrg                   INT16 xSrc,
49435c4bbdfSmrg                   INT16 ySrc, int ntriangles, xTriangle * triangles);
49505b261ecSmrg
4966747b715Smrgextern _X_EXPORT void
49735c4bbdfSmrgCompositeTriStrip(CARD8 op,
49835c4bbdfSmrg                  PicturePtr pSrc,
49935c4bbdfSmrg                  PicturePtr pDst,
50035c4bbdfSmrg                  PictFormatPtr maskFormat,
50135c4bbdfSmrg                  INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
50205b261ecSmrg
5036747b715Smrgextern _X_EXPORT void
50435c4bbdfSmrgCompositeTriFan(CARD8 op,
50535c4bbdfSmrg                PicturePtr pSrc,
50635c4bbdfSmrg                PicturePtr pDst,
50735c4bbdfSmrg                PictFormatPtr maskFormat,
50835c4bbdfSmrg                INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
50905b261ecSmrg
51005b261ecSmrgBool
51135c4bbdfSmrg AnimCurInit(ScreenPtr pScreen);
51205b261ecSmrg
51305b261ecSmrgint
51435c4bbdfSmrgAnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
51535c4bbdfSmrg                 CursorPtr *ppCursor, ClientPtr client, XID cid);
51605b261ecSmrg
5176747b715Smrgextern _X_EXPORT void
51835c4bbdfSmrgAddTraps(PicturePtr pPicture,
51935c4bbdfSmrg         INT16 xOff, INT16 yOff, int ntraps, xTrap * traps);
52005b261ecSmrg
5216747b715Smrgextern _X_EXPORT PicturePtr
52235c4bbdfSmrgCreateSolidPicture(Picture pid, xRenderColor * color, int *error);
52305b261ecSmrg
5246747b715Smrgextern _X_EXPORT PicturePtr
52535c4bbdfSmrgCreateLinearGradientPicture(Picture pid,
52635c4bbdfSmrg                            xPointFixed * p1,
52735c4bbdfSmrg                            xPointFixed * p2,
52835c4bbdfSmrg                            int nStops,
52935c4bbdfSmrg                            xFixed * stops, xRenderColor * colors, int *error);
53005b261ecSmrg
5316747b715Smrgextern _X_EXPORT PicturePtr
53235c4bbdfSmrgCreateRadialGradientPicture(Picture pid,
53335c4bbdfSmrg                            xPointFixed * inner,
53435c4bbdfSmrg                            xPointFixed * outer,
53535c4bbdfSmrg                            xFixed innerRadius,
53635c4bbdfSmrg                            xFixed outerRadius,
53735c4bbdfSmrg                            int nStops,
53835c4bbdfSmrg                            xFixed * stops, xRenderColor * colors, int *error);
53905b261ecSmrg
5406747b715Smrgextern _X_EXPORT PicturePtr
54135c4bbdfSmrgCreateConicalGradientPicture(Picture pid,
54235c4bbdfSmrg                             xPointFixed * center,
54335c4bbdfSmrg                             xFixed angle,
54435c4bbdfSmrg                             int nStops,
54535c4bbdfSmrg                             xFixed * stops, xRenderColor * colors, int *error);
54605b261ecSmrg
54705b261ecSmrg#ifdef PANORAMIX
54835c4bbdfSmrgextern void PanoramiXRenderInit(void);
54935c4bbdfSmrgextern void PanoramiXRenderReset(void);
55005b261ecSmrg#endif
55105b261ecSmrg
5524642e01fSmrg/*
5534642e01fSmrg * matrix.c
5544642e01fSmrg */
5554642e01fSmrg
5566747b715Smrgextern _X_EXPORT void
55735c4bbdfSmrgPictTransform_from_xRenderTransform(PictTransformPtr pict,
55835c4bbdfSmrg                                    xRenderTransform * render);
5594642e01fSmrg
5606747b715Smrgextern _X_EXPORT void
56135c4bbdfSmrgxRenderTransform_from_PictTransform(xRenderTransform * render,
56235c4bbdfSmrg                                    PictTransformPtr pict);
5634642e01fSmrg
5646747b715Smrgextern _X_EXPORT Bool
56535c4bbdfSmrg PictureTransformPoint(PictTransformPtr transform, PictVectorPtr vector);
5664642e01fSmrg
5676747b715Smrgextern _X_EXPORT Bool
56835c4bbdfSmrg PictureTransformPoint3d(PictTransformPtr transform, PictVectorPtr vector);
5694642e01fSmrg
57035c4bbdfSmrg#endif                          /* _PICTURESTR_H_ */
571