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;
711b5d61b8Smrg    xRenderColor fullcolor;
7205b261ecSmrg} PictSolidFill, *PictSolidFillPtr;
7305b261ecSmrg
7405b261ecSmrgtypedef struct _PictGradientStop {
7505b261ecSmrg    xFixed x;
7605b261ecSmrg    xRenderColor color;
7705b261ecSmrg} PictGradientStop, *PictGradientStopPtr;
7805b261ecSmrg
7905b261ecSmrgtypedef struct _PictGradient {
8005b261ecSmrg    unsigned int type;
8105b261ecSmrg    int nstops;
8205b261ecSmrg    PictGradientStopPtr stops;
8305b261ecSmrg} PictGradient, *PictGradientPtr;
8405b261ecSmrg
8505b261ecSmrgtypedef struct _PictLinearGradient {
8605b261ecSmrg    unsigned int type;
8705b261ecSmrg    int nstops;
8805b261ecSmrg    PictGradientStopPtr stops;
8905b261ecSmrg    xPointFixed p1;
9005b261ecSmrg    xPointFixed p2;
9105b261ecSmrg} PictLinearGradient, *PictLinearGradientPtr;
9205b261ecSmrg
9305b261ecSmrgtypedef struct _PictCircle {
9405b261ecSmrg    xFixed x;
9505b261ecSmrg    xFixed y;
9605b261ecSmrg    xFixed radius;
9705b261ecSmrg} PictCircle, *PictCirclePtr;
9805b261ecSmrg
9905b261ecSmrgtypedef struct _PictRadialGradient {
10005b261ecSmrg    unsigned int type;
10105b261ecSmrg    int nstops;
10205b261ecSmrg    PictGradientStopPtr stops;
10305b261ecSmrg    PictCircle c1;
10405b261ecSmrg    PictCircle c2;
10505b261ecSmrg} PictRadialGradient, *PictRadialGradientPtr;
10605b261ecSmrg
10705b261ecSmrgtypedef struct _PictConicalGradient {
10805b261ecSmrg    unsigned int type;
10905b261ecSmrg    int nstops;
11005b261ecSmrg    PictGradientStopPtr stops;
11105b261ecSmrg    xPointFixed center;
11205b261ecSmrg    xFixed angle;
11305b261ecSmrg} PictConicalGradient, *PictConicalGradientPtr;
11405b261ecSmrg
11505b261ecSmrgtypedef union _SourcePict {
11605b261ecSmrg    unsigned int type;
11705b261ecSmrg    PictSolidFill solidFill;
11805b261ecSmrg    PictGradient gradient;
11905b261ecSmrg    PictLinearGradient linear;
12005b261ecSmrg    PictRadialGradient radial;
12105b261ecSmrg    PictConicalGradient conical;
12205b261ecSmrg} SourcePict, *SourcePictPtr;
12305b261ecSmrg
12405b261ecSmrgtypedef struct _Picture {
12535c4bbdfSmrg    DrawablePtr pDrawable;
12635c4bbdfSmrg    PictFormatPtr pFormat;
12735c4bbdfSmrg    PictFormatShort format;     /* PICT_FORMAT */
12835c4bbdfSmrg    int refcnt;
12935c4bbdfSmrg    CARD32 id;
13035c4bbdfSmrg    unsigned int repeat:1;
13135c4bbdfSmrg    unsigned int graphicsExposures:1;
13235c4bbdfSmrg    unsigned int subWindowMode:1;
13335c4bbdfSmrg    unsigned int polyEdge:1;
13435c4bbdfSmrg    unsigned int polyMode:1;
13535c4bbdfSmrg    unsigned int freeCompClip:1;
13635c4bbdfSmrg    unsigned int componentAlpha:1;
13735c4bbdfSmrg    unsigned int repeatType:2;
13835c4bbdfSmrg    unsigned int filter:3;
13935c4bbdfSmrg    unsigned int stateChanges:CPLastBit;
14035c4bbdfSmrg    unsigned int unused:18 - CPLastBit;
14135c4bbdfSmrg
14235c4bbdfSmrg    PicturePtr pNext;           /* chain on same drawable */
14335c4bbdfSmrg
14435c4bbdfSmrg    PicturePtr alphaMap;
14535c4bbdfSmrg    DDXPointRec alphaOrigin;
14635c4bbdfSmrg
14735c4bbdfSmrg    DDXPointRec clipOrigin;
14835c4bbdfSmrg    RegionPtr clientClip;
14935c4bbdfSmrg
15035c4bbdfSmrg    unsigned long serialNumber;
15135c4bbdfSmrg
15235c4bbdfSmrg    RegionPtr pCompositeClip;
15335c4bbdfSmrg
15435c4bbdfSmrg    PrivateRec *devPrivates;
15535c4bbdfSmrg
15635c4bbdfSmrg    PictTransform *transform;
15735c4bbdfSmrg
15835c4bbdfSmrg    SourcePictPtr pSourcePict;
15935c4bbdfSmrg    xFixed *filter_params;
16035c4bbdfSmrg    int filter_nparams;
16105b261ecSmrg} PictureRec;
16205b261ecSmrg
1634642e01fSmrgtypedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id,
16435c4bbdfSmrg                                                 xFixed * params, int nparams,
16535c4bbdfSmrg                                                 int *width, int *height);
16605b261ecSmrgtypedef struct {
16735c4bbdfSmrg    char *name;
16835c4bbdfSmrg    int id;
16905b261ecSmrg    PictFilterValidateParamsProcPtr ValidateParams;
17035c4bbdfSmrg    int width, height;
17105b261ecSmrg} PictFilterRec, *PictFilterPtr;
17205b261ecSmrg
17305b261ecSmrg#define PictFilterNearest	0
17405b261ecSmrg#define PictFilterBilinear	1
17505b261ecSmrg
17605b261ecSmrg#define PictFilterFast		2
17705b261ecSmrg#define PictFilterGood		3
17805b261ecSmrg#define PictFilterBest		4
17905b261ecSmrg
18005b261ecSmrg#define PictFilterConvolution	5
1819ace9065Smrg/* if you add an 8th filter, expand the filter bitfield above */
18205b261ecSmrg
18305b261ecSmrgtypedef struct {
18435c4bbdfSmrg    char *alias;
18535c4bbdfSmrg    int alias_id;
18635c4bbdfSmrg    int filter_id;
18705b261ecSmrg} PictFilterAliasRec, *PictFilterAliasPtr;
18805b261ecSmrg
18935c4bbdfSmrgtypedef int (*CreatePictureProcPtr) (PicturePtr pPicture);
19035c4bbdfSmrgtypedef void (*DestroyPictureProcPtr) (PicturePtr pPicture);
19135c4bbdfSmrgtypedef int (*ChangePictureClipProcPtr) (PicturePtr pPicture,
19235c4bbdfSmrg                                         int clipType, void *value, int n);
19335c4bbdfSmrgtypedef void (*DestroyPictureClipProcPtr) (PicturePtr pPicture);
19435c4bbdfSmrg
19535c4bbdfSmrgtypedef int (*ChangePictureTransformProcPtr) (PicturePtr pPicture,
19635c4bbdfSmrg                                              PictTransform * transform);
19735c4bbdfSmrg
19835c4bbdfSmrgtypedef int (*ChangePictureFilterProcPtr) (PicturePtr pPicture,
19935c4bbdfSmrg                                           int filter,
20035c4bbdfSmrg                                           xFixed * params, int nparams);
20135c4bbdfSmrg
20235c4bbdfSmrgtypedef void (*DestroyPictureFilterProcPtr) (PicturePtr pPicture);
20335c4bbdfSmrg
20435c4bbdfSmrgtypedef void (*ChangePictureProcPtr) (PicturePtr pPicture, Mask mask);
20535c4bbdfSmrgtypedef void (*ValidatePictureProcPtr) (PicturePtr pPicture, Mask mask);
20635c4bbdfSmrgtypedef void (*CompositeProcPtr) (CARD8 op,
20735c4bbdfSmrg                                  PicturePtr pSrc,
20835c4bbdfSmrg                                  PicturePtr pMask,
20935c4bbdfSmrg                                  PicturePtr pDst,
21035c4bbdfSmrg                                  INT16 xSrc,
21135c4bbdfSmrg                                  INT16 ySrc,
21235c4bbdfSmrg                                  INT16 xMask,
21335c4bbdfSmrg                                  INT16 yMask,
21435c4bbdfSmrg                                  INT16 xDst,
21535c4bbdfSmrg                                  INT16 yDst, CARD16 width, CARD16 height);
21635c4bbdfSmrg
21735c4bbdfSmrgtypedef void (*GlyphsProcPtr) (CARD8 op,
21835c4bbdfSmrg                               PicturePtr pSrc,
21935c4bbdfSmrg                               PicturePtr pDst,
22035c4bbdfSmrg                               PictFormatPtr maskFormat,
22135c4bbdfSmrg                               INT16 xSrc,
22235c4bbdfSmrg                               INT16 ySrc,
22335c4bbdfSmrg                               int nlists,
22435c4bbdfSmrg                               GlyphListPtr lists, GlyphPtr * glyphs);
22535c4bbdfSmrg
22635c4bbdfSmrgtypedef void (*CompositeRectsProcPtr) (CARD8 op,
22735c4bbdfSmrg                                       PicturePtr pDst,
22835c4bbdfSmrg                                       xRenderColor * color,
22935c4bbdfSmrg                                       int nRect, xRectangle *rects);
23035c4bbdfSmrg
23135c4bbdfSmrgtypedef void (*RasterizeTrapezoidProcPtr) (PicturePtr pMask,
23235c4bbdfSmrg                                           xTrapezoid * trap,
23335c4bbdfSmrg                                           int x_off, int y_off);
23435c4bbdfSmrg
23535c4bbdfSmrgtypedef void (*TrapezoidsProcPtr) (CARD8 op,
23635c4bbdfSmrg                                   PicturePtr pSrc,
23735c4bbdfSmrg                                   PicturePtr pDst,
23835c4bbdfSmrg                                   PictFormatPtr maskFormat,
23935c4bbdfSmrg                                   INT16 xSrc,
24035c4bbdfSmrg                                   INT16 ySrc, int ntrap, xTrapezoid * traps);
24135c4bbdfSmrg
24235c4bbdfSmrgtypedef void (*TrianglesProcPtr) (CARD8 op,
24335c4bbdfSmrg                                  PicturePtr pSrc,
24435c4bbdfSmrg                                  PicturePtr pDst,
24535c4bbdfSmrg                                  PictFormatPtr maskFormat,
24635c4bbdfSmrg                                  INT16 xSrc,
24735c4bbdfSmrg                                  INT16 ySrc, int ntri, xTriangle * tris);
24835c4bbdfSmrg
24935c4bbdfSmrgtypedef void (*TriStripProcPtr) (CARD8 op,
25035c4bbdfSmrg                                 PicturePtr pSrc,
25135c4bbdfSmrg                                 PicturePtr pDst,
25235c4bbdfSmrg                                 PictFormatPtr maskFormat,
25335c4bbdfSmrg                                 INT16 xSrc,
25435c4bbdfSmrg                                 INT16 ySrc, int npoint, xPointFixed * points);
25535c4bbdfSmrg
25635c4bbdfSmrgtypedef void (*TriFanProcPtr) (CARD8 op,
25735c4bbdfSmrg                               PicturePtr pSrc,
25835c4bbdfSmrg                               PicturePtr pDst,
25935c4bbdfSmrg                               PictFormatPtr maskFormat,
26035c4bbdfSmrg                               INT16 xSrc,
26135c4bbdfSmrg                               INT16 ySrc, int npoint, xPointFixed * points);
26235c4bbdfSmrg
26335c4bbdfSmrgtypedef Bool (*InitIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat);
26435c4bbdfSmrg
26535c4bbdfSmrgtypedef void (*CloseIndexedProcPtr) (ScreenPtr pScreen, PictFormatPtr pFormat);
26635c4bbdfSmrg
26735c4bbdfSmrgtypedef void (*UpdateIndexedProcPtr) (ScreenPtr pScreen,
26835c4bbdfSmrg                                      PictFormatPtr pFormat,
26935c4bbdfSmrg                                      int ndef, xColorItem * pdef);
27035c4bbdfSmrg
27135c4bbdfSmrgtypedef void (*AddTrapsProcPtr) (PicturePtr pPicture,
27235c4bbdfSmrg                                 INT16 xOff,
27335c4bbdfSmrg                                 INT16 yOff, int ntrap, xTrap * traps);
27435c4bbdfSmrg
27535c4bbdfSmrgtypedef void (*AddTrianglesProcPtr) (PicturePtr pPicture,
27635c4bbdfSmrg                                     INT16 xOff,
27735c4bbdfSmrg                                     INT16 yOff, int ntri, xTriangle * tris);
27835c4bbdfSmrg
27935c4bbdfSmrgtypedef Bool (*RealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph);
28035c4bbdfSmrg
28135c4bbdfSmrgtypedef void (*UnrealizeGlyphProcPtr) (ScreenPtr pScreen, GlyphPtr glyph);
28205b261ecSmrg
28305b261ecSmrgtypedef struct _PictureScreen {
28435c4bbdfSmrg    PictFormatPtr formats;
28535c4bbdfSmrg    PictFormatPtr fallback;
28635c4bbdfSmrg    int nformats;
28705b261ecSmrg
28835c4bbdfSmrg    CreatePictureProcPtr CreatePicture;
28935c4bbdfSmrg    DestroyPictureProcPtr DestroyPicture;
29035c4bbdfSmrg    ChangePictureClipProcPtr ChangePictureClip;
29135c4bbdfSmrg    DestroyPictureClipProcPtr DestroyPictureClip;
29205b261ecSmrg
29335c4bbdfSmrg    ChangePictureProcPtr ChangePicture;
29435c4bbdfSmrg    ValidatePictureProcPtr ValidatePicture;
29505b261ecSmrg
29635c4bbdfSmrg    CompositeProcPtr Composite;
29735c4bbdfSmrg    GlyphsProcPtr Glyphs;       /* unused */
29835c4bbdfSmrg    CompositeRectsProcPtr CompositeRects;
29905b261ecSmrg
30035c4bbdfSmrg    DestroyWindowProcPtr DestroyWindow;
30135c4bbdfSmrg    CloseScreenProcPtr CloseScreen;
30205b261ecSmrg
30335c4bbdfSmrg    StoreColorsProcPtr StoreColors;
30405b261ecSmrg
30535c4bbdfSmrg    InitIndexedProcPtr InitIndexed;
30635c4bbdfSmrg    CloseIndexedProcPtr CloseIndexed;
30735c4bbdfSmrg    UpdateIndexedProcPtr UpdateIndexed;
30805b261ecSmrg
30935c4bbdfSmrg    int subpixel;
31005b261ecSmrg
31135c4bbdfSmrg    PictFilterPtr filters;
31235c4bbdfSmrg    int nfilters;
31335c4bbdfSmrg    PictFilterAliasPtr filterAliases;
31435c4bbdfSmrg    int nfilterAliases;
31505b261ecSmrg
31605b261ecSmrg    /**
31705b261ecSmrg     * Called immediately after a picture's transform is changed through the
31805b261ecSmrg     * SetPictureTransform request.  Not called for source-only pictures.
31905b261ecSmrg     */
32035c4bbdfSmrg    ChangePictureTransformProcPtr ChangePictureTransform;
32105b261ecSmrg
32205b261ecSmrg    /**
32305b261ecSmrg     * Called immediately after a picture's transform is changed through the
32405b261ecSmrg     * SetPictureFilter request.  Not called for source-only pictures.
32505b261ecSmrg     */
32635c4bbdfSmrg    ChangePictureFilterProcPtr ChangePictureFilter;
32705b261ecSmrg
32835c4bbdfSmrg    DestroyPictureFilterProcPtr DestroyPictureFilter;
32905b261ecSmrg
33035c4bbdfSmrg    TrapezoidsProcPtr Trapezoids;
33135c4bbdfSmrg    TrianglesProcPtr Triangles;
33205b261ecSmrg
33335c4bbdfSmrg    RasterizeTrapezoidProcPtr RasterizeTrapezoid;
33405b261ecSmrg
33535c4bbdfSmrg    AddTrianglesProcPtr AddTriangles;
33605b261ecSmrg
33735c4bbdfSmrg    AddTrapsProcPtr AddTraps;
33805b261ecSmrg
33935c4bbdfSmrg    RealizeGlyphProcPtr RealizeGlyph;
34035c4bbdfSmrg    UnrealizeGlyphProcPtr UnrealizeGlyph;
34105b261ecSmrg
34235c4bbdfSmrg#define PICTURE_SCREEN_VERSION 2
34335c4bbdfSmrg    TriStripProcPtr TriStrip;
34435c4bbdfSmrg    TriFanProcPtr TriFan;
34505b261ecSmrg} PictureScreenRec, *PictureScreenPtr;
34605b261ecSmrg
3476747b715Smrgextern _X_EXPORT DevPrivateKeyRec PictureScreenPrivateKeyRec;
3486747b715Smrg#define PictureScreenPrivateKey (&PictureScreenPrivateKeyRec)
3496747b715Smrg
3506747b715Smrgextern _X_EXPORT DevPrivateKeyRec PictureWindowPrivateKeyRec;
3516747b715Smrg#define	PictureWindowPrivateKey (&PictureWindowPrivateKeyRec)
3526747b715Smrg
35335c4bbdfSmrgextern RESTYPE PictureType;
35435c4bbdfSmrgextern RESTYPE PictFormatType;
35535c4bbdfSmrgextern RESTYPE GlyphSetType;
35605b261ecSmrg
3574642e01fSmrg#define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, PictureScreenPrivateKey))
3586747b715Smrg#define GetPictureScreenIfSet(s) (dixPrivateKeyRegistered(PictureScreenPrivateKey) ? GetPictureScreen(s) : NULL)
3594642e01fSmrg#define SetPictureScreen(s,p) dixSetPrivate(&(s)->devPrivates, PictureScreenPrivateKey, p)
3604642e01fSmrg#define GetPictureWindow(w) ((PicturePtr)dixLookupPrivate(&(w)->devPrivates, PictureWindowPrivateKey))
3614642e01fSmrg#define SetPictureWindow(w,p) dixSetPrivate(&(w)->devPrivates, PictureWindowPrivateKey, p)
36205b261ecSmrg
3636747b715Smrg#define VERIFY_PICTURE(pPicture, pid, client, mode) {\
36435c4bbdfSmrg    int tmprc = dixLookupResourceByType((void *)&(pPicture), pid,\
36535c4bbdfSmrg	                                PictureType, client, mode);\
36635c4bbdfSmrg    if (tmprc != Success)\
36735c4bbdfSmrg	return tmprc;\
36805b261ecSmrg}
36905b261ecSmrg
3706747b715Smrg#define VERIFY_ALPHA(pPicture, pid, client, mode) {\
37105b261ecSmrg    if (pid == None) \
37205b261ecSmrg	pPicture = 0; \
37305b261ecSmrg    else { \
3746747b715Smrg	VERIFY_PICTURE(pPicture, pid, client, mode); \
37505b261ecSmrg    } \
37605b261ecSmrg} \
37705b261ecSmrg
37835c4bbdfSmrgextern _X_EXPORT PictFormatPtr
37935c4bbdfSmrg PictureWindowFormat(WindowPtr pWindow);
38005b261ecSmrg
3816747b715Smrgextern _X_EXPORT Bool
38235c4bbdfSmrg PictureSetSubpixelOrder(ScreenPtr pScreen, int subpixel);
38305b261ecSmrg
3846747b715Smrgextern _X_EXPORT int
38535c4bbdfSmrg PictureGetSubpixelOrder(ScreenPtr pScreen);
38605b261ecSmrg
3876747b715Smrgextern _X_EXPORT PictFormatPtr
38835c4bbdfSmrgPictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual);
38905b261ecSmrg
3906747b715Smrgextern _X_EXPORT PictFormatPtr
39135c4bbdfSmrgPictureMatchFormat(ScreenPtr pScreen, int depth, CARD32 format);
39205b261ecSmrg
3936747b715Smrgextern _X_EXPORT Bool
39435c4bbdfSmrg PictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
39505b261ecSmrg
3966747b715Smrgextern _X_EXPORT int
39735c4bbdfSmrg PictureGetFilterId(const char *filter, int len, Bool makeit);
39805b261ecSmrg
39935c4bbdfSmrgextern _X_EXPORT char *PictureGetFilterName(int id);
40005b261ecSmrg
4016747b715Smrgextern _X_EXPORT int
40235c4bbdfSmrgPictureAddFilter(ScreenPtr pScreen,
40335c4bbdfSmrg                 const char *filter,
40435c4bbdfSmrg                 PictFilterValidateParamsProcPtr ValidateParams,
40535c4bbdfSmrg                 int width, int height);
40605b261ecSmrg
4076747b715Smrgextern _X_EXPORT Bool
40835c4bbdfSmrgPictureSetFilterAlias(ScreenPtr pScreen, const char *filter, const char *alias);
40905b261ecSmrg
4106747b715Smrgextern _X_EXPORT Bool
41135c4bbdfSmrg PictureSetDefaultFilters(ScreenPtr pScreen);
41205b261ecSmrg
4136747b715Smrgextern _X_EXPORT void
41435c4bbdfSmrg PictureResetFilters(ScreenPtr pScreen);
41505b261ecSmrg
4166747b715Smrgextern _X_EXPORT PictFilterPtr
41735c4bbdfSmrgPictureFindFilter(ScreenPtr pScreen, char *name, int len);
41805b261ecSmrg
4196747b715Smrgextern _X_EXPORT int
42035c4bbdfSmrgSetPicturePictFilter(PicturePtr pPicture, PictFilterPtr pFilter,
42135c4bbdfSmrg                     xFixed * params, int nparams);
4224642e01fSmrg
4236747b715Smrgextern _X_EXPORT int
42435c4bbdfSmrgSetPictureFilter(PicturePtr pPicture, char *name, int len,
42535c4bbdfSmrg                 xFixed * params, int nparams);
42605b261ecSmrg
4276747b715Smrgextern _X_EXPORT Bool
42835c4bbdfSmrg PictureFinishInit(void);
42905b261ecSmrg
4306747b715Smrgextern _X_EXPORT PicturePtr
43135c4bbdfSmrgCreatePicture(Picture pid,
43235c4bbdfSmrg              DrawablePtr pDrawable,
43335c4bbdfSmrg              PictFormatPtr pFormat,
43435c4bbdfSmrg              Mask mask, XID *list, ClientPtr client, int *error);
43505b261ecSmrg
4366747b715Smrgextern _X_EXPORT int
43735c4bbdfSmrgChangePicture(PicturePtr pPicture,
43835c4bbdfSmrg              Mask vmask, XID *vlist, DevUnion *ulist, ClientPtr client);
43905b261ecSmrg
4406747b715Smrgextern _X_EXPORT int
44105b261ecSmrg
44235c4bbdfSmrgSetPictureClipRects(PicturePtr pPicture,
44335c4bbdfSmrg                    int xOrigin, int yOrigin, int nRect, xRectangle *rects);
44405b261ecSmrg
4456747b715Smrgextern _X_EXPORT int
44635c4bbdfSmrgSetPictureClipRegion(PicturePtr pPicture,
44735c4bbdfSmrg                     int xOrigin, int yOrigin, RegionPtr pRegion);
44805b261ecSmrg
44935c4bbdfSmrgextern _X_EXPORT int
45035c4bbdfSmrg SetPictureTransform(PicturePtr pPicture, PictTransform * transform);
45105b261ecSmrg
4526747b715Smrgextern _X_EXPORT void
45335c4bbdfSmrg ValidatePicture(PicturePtr pPicture);
45405b261ecSmrg
4556747b715Smrgextern _X_EXPORT int
45635c4bbdfSmrg FreePicture(void *pPicture, XID pid);
45705b261ecSmrg
4586747b715Smrgextern _X_EXPORT void
45935c4bbdfSmrgCompositePicture(CARD8 op,
46035c4bbdfSmrg                 PicturePtr pSrc,
46135c4bbdfSmrg                 PicturePtr pMask,
46235c4bbdfSmrg                 PicturePtr pDst,
46335c4bbdfSmrg                 INT16 xSrc,
46435c4bbdfSmrg                 INT16 ySrc,
46535c4bbdfSmrg                 INT16 xMask,
46635c4bbdfSmrg                 INT16 yMask,
46735c4bbdfSmrg                 INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
46805b261ecSmrg
4696747b715Smrgextern _X_EXPORT void
47035c4bbdfSmrgCompositeGlyphs(CARD8 op,
47135c4bbdfSmrg                PicturePtr pSrc,
47235c4bbdfSmrg                PicturePtr pDst,
47335c4bbdfSmrg                PictFormatPtr maskFormat,
47435c4bbdfSmrg                INT16 xSrc,
47535c4bbdfSmrg                INT16 ySrc, int nlist, GlyphListPtr lists, GlyphPtr * glyphs);
47605b261ecSmrg
4776747b715Smrgextern _X_EXPORT void
47835c4bbdfSmrgCompositeRects(CARD8 op,
47935c4bbdfSmrg               PicturePtr pDst,
48035c4bbdfSmrg               xRenderColor * color, int nRect, xRectangle *rects);
48105b261ecSmrg
4826747b715Smrgextern _X_EXPORT void
48335c4bbdfSmrgCompositeTrapezoids(CARD8 op,
48435c4bbdfSmrg                    PicturePtr pSrc,
48535c4bbdfSmrg                    PicturePtr pDst,
48635c4bbdfSmrg                    PictFormatPtr maskFormat,
48735c4bbdfSmrg                    INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
48805b261ecSmrg
4896747b715Smrgextern _X_EXPORT void
49035c4bbdfSmrgCompositeTriangles(CARD8 op,
49135c4bbdfSmrg                   PicturePtr pSrc,
49235c4bbdfSmrg                   PicturePtr pDst,
49335c4bbdfSmrg                   PictFormatPtr maskFormat,
49435c4bbdfSmrg                   INT16 xSrc,
49535c4bbdfSmrg                   INT16 ySrc, int ntriangles, xTriangle * triangles);
49605b261ecSmrg
4976747b715Smrgextern _X_EXPORT void
49835c4bbdfSmrgCompositeTriStrip(CARD8 op,
49935c4bbdfSmrg                  PicturePtr pSrc,
50035c4bbdfSmrg                  PicturePtr pDst,
50135c4bbdfSmrg                  PictFormatPtr maskFormat,
50235c4bbdfSmrg                  INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
50305b261ecSmrg
5046747b715Smrgextern _X_EXPORT void
50535c4bbdfSmrgCompositeTriFan(CARD8 op,
50635c4bbdfSmrg                PicturePtr pSrc,
50735c4bbdfSmrg                PicturePtr pDst,
50835c4bbdfSmrg                PictFormatPtr maskFormat,
50935c4bbdfSmrg                INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);
51005b261ecSmrg
51105b261ecSmrgBool
51235c4bbdfSmrg AnimCurInit(ScreenPtr pScreen);
51305b261ecSmrg
51405b261ecSmrgint
51535c4bbdfSmrgAnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
51635c4bbdfSmrg                 CursorPtr *ppCursor, ClientPtr client, XID cid);
51705b261ecSmrg
5186747b715Smrgextern _X_EXPORT void
51935c4bbdfSmrgAddTraps(PicturePtr pPicture,
52035c4bbdfSmrg         INT16 xOff, INT16 yOff, int ntraps, xTrap * traps);
52105b261ecSmrg
5226747b715Smrgextern _X_EXPORT PicturePtr
52335c4bbdfSmrgCreateSolidPicture(Picture pid, xRenderColor * color, int *error);
52405b261ecSmrg
5256747b715Smrgextern _X_EXPORT PicturePtr
52635c4bbdfSmrgCreateLinearGradientPicture(Picture pid,
52735c4bbdfSmrg                            xPointFixed * p1,
52835c4bbdfSmrg                            xPointFixed * p2,
52935c4bbdfSmrg                            int nStops,
53035c4bbdfSmrg                            xFixed * stops, xRenderColor * colors, int *error);
53105b261ecSmrg
5326747b715Smrgextern _X_EXPORT PicturePtr
53335c4bbdfSmrgCreateRadialGradientPicture(Picture pid,
53435c4bbdfSmrg                            xPointFixed * inner,
53535c4bbdfSmrg                            xPointFixed * outer,
53635c4bbdfSmrg                            xFixed innerRadius,
53735c4bbdfSmrg                            xFixed outerRadius,
53835c4bbdfSmrg                            int nStops,
53935c4bbdfSmrg                            xFixed * stops, xRenderColor * colors, int *error);
54005b261ecSmrg
5416747b715Smrgextern _X_EXPORT PicturePtr
54235c4bbdfSmrgCreateConicalGradientPicture(Picture pid,
54335c4bbdfSmrg                             xPointFixed * center,
54435c4bbdfSmrg                             xFixed angle,
54535c4bbdfSmrg                             int nStops,
54635c4bbdfSmrg                             xFixed * stops, xRenderColor * colors, int *error);
54705b261ecSmrg
54805b261ecSmrg#ifdef PANORAMIX
54935c4bbdfSmrgextern void PanoramiXRenderInit(void);
55035c4bbdfSmrgextern void PanoramiXRenderReset(void);
55105b261ecSmrg#endif
55205b261ecSmrg
5534642e01fSmrg/*
5544642e01fSmrg * matrix.c
5554642e01fSmrg */
5564642e01fSmrg
5576747b715Smrgextern _X_EXPORT void
55835c4bbdfSmrgPictTransform_from_xRenderTransform(PictTransformPtr pict,
55935c4bbdfSmrg                                    xRenderTransform * render);
5604642e01fSmrg
5616747b715Smrgextern _X_EXPORT void
56235c4bbdfSmrgxRenderTransform_from_PictTransform(xRenderTransform * render,
56335c4bbdfSmrg                                    PictTransformPtr pict);
5644642e01fSmrg
5656747b715Smrgextern _X_EXPORT Bool
56635c4bbdfSmrg PictureTransformPoint(PictTransformPtr transform, PictVectorPtr vector);
5674642e01fSmrg
5686747b715Smrgextern _X_EXPORT Bool
56935c4bbdfSmrg PictureTransformPoint3d(PictTransformPtr transform, PictVectorPtr vector);
5704642e01fSmrg
57135c4bbdfSmrg#endif                          /* _PICTURESTR_H_ */
572