1706f2543Smrg/*
2706f2543Smrg * Copyright © 2000 SuSE, Inc.
3706f2543Smrg *
4706f2543Smrg * Permission to use, copy, modify, distribute, and sell this software and its
5706f2543Smrg * documentation for any purpose is hereby granted without fee, provided that
6706f2543Smrg * the above copyright notice appear in all copies and that both that
7706f2543Smrg * copyright notice and this permission notice appear in supporting
8706f2543Smrg * documentation, and that the name of SuSE not be used in advertising or
9706f2543Smrg * publicity pertaining to distribution of the software without specific,
10706f2543Smrg * written prior permission.  SuSE makes no representations about the
11706f2543Smrg * suitability of this software for any purpose.  It is provided "as is"
12706f2543Smrg * without express or implied warranty.
13706f2543Smrg *
14706f2543Smrg * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
15706f2543Smrg * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
16706f2543Smrg * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17706f2543Smrg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
18706f2543Smrg * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
19706f2543Smrg * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20706f2543Smrg *
21706f2543Smrg * Author:  Keith Packard, SuSE, Inc.
22706f2543Smrg */
23706f2543Smrg
24706f2543Smrg#ifndef _PICTURESTR_H_
25706f2543Smrg#define _PICTURESTR_H_
26706f2543Smrg
27706f2543Smrg#include "scrnintstr.h"
28706f2543Smrg#include "glyphstr.h"
29706f2543Smrg#include "resource.h"
30706f2543Smrg#include "privates.h"
31706f2543Smrg
32706f2543Smrgtypedef struct _DirectFormat {
33706f2543Smrg    CARD16	    red, redMask;
34706f2543Smrg    CARD16	    green, greenMask;
35706f2543Smrg    CARD16	    blue, blueMask;
36706f2543Smrg    CARD16	    alpha, alphaMask;
37706f2543Smrg} DirectFormatRec;
38706f2543Smrg
39706f2543Smrgtypedef struct _IndexFormat {
40706f2543Smrg    VisualID	    vid;
41706f2543Smrg    ColormapPtr	    pColormap;
42706f2543Smrg    int		    nvalues;
43706f2543Smrg    xIndexValue	    *pValues;
44706f2543Smrg    void	    *devPrivate;
45706f2543Smrg} IndexFormatRec;
46706f2543Smrg
47706f2543Smrgtypedef struct _PictFormat {
48706f2543Smrg    CARD32	    id;
49706f2543Smrg    CARD32	    format;	    /* except bpp */
50706f2543Smrg    unsigned char   type;
51706f2543Smrg    unsigned char   depth;
52706f2543Smrg    DirectFormatRec direct;
53706f2543Smrg    IndexFormatRec  index;
54706f2543Smrg} PictFormatRec;
55706f2543Smrg
56706f2543Smrgtypedef struct pixman_vector PictVector, *PictVectorPtr;
57706f2543Smrgtypedef struct pixman_transform PictTransform, *PictTransformPtr;
58706f2543Smrg
59706f2543Smrg#define pict_f_vector pixman_f_vector
60706f2543Smrg#define pict_f_transform pixman_f_transform
61706f2543Smrg
62706f2543Smrg#define PICT_GRADIENT_STOPTABLE_SIZE 1024
63706f2543Smrg#define SourcePictTypeSolidFill 0
64706f2543Smrg#define SourcePictTypeLinear 1
65706f2543Smrg#define SourcePictTypeRadial 2
66706f2543Smrg#define SourcePictTypeConical 3
67706f2543Smrg
68706f2543Smrg#define SourcePictClassUnknown    0
69706f2543Smrg#define SourcePictClassHorizontal 1
70706f2543Smrg#define SourcePictClassVertical   2
71706f2543Smrg
72706f2543Smrgtypedef struct _PictSolidFill {
73706f2543Smrg    unsigned int type;
74706f2543Smrg    unsigned int class;
75706f2543Smrg    CARD32 color;
76706f2543Smrg} PictSolidFill, *PictSolidFillPtr;
77706f2543Smrg
78706f2543Smrgtypedef struct _PictGradientStop {
79706f2543Smrg    xFixed x;
80706f2543Smrg    xRenderColor color;
81706f2543Smrg} PictGradientStop, *PictGradientStopPtr;
82706f2543Smrg
83706f2543Smrgtypedef struct _PictGradient {
84706f2543Smrg    unsigned int type;
85706f2543Smrg    unsigned int class;
86706f2543Smrg    int nstops;
87706f2543Smrg    PictGradientStopPtr stops;
88706f2543Smrg    int stopRange;
89706f2543Smrg    CARD32 *colorTable;
90706f2543Smrg    int colorTableSize;
91706f2543Smrg} PictGradient, *PictGradientPtr;
92706f2543Smrg
93706f2543Smrgtypedef struct _PictLinearGradient {
94706f2543Smrg    unsigned int type;
95706f2543Smrg    unsigned int class;
96706f2543Smrg    int nstops;
97706f2543Smrg    PictGradientStopPtr stops;
98706f2543Smrg    int stopRange;
99706f2543Smrg    CARD32 *colorTable;
100706f2543Smrg    int colorTableSize;
101706f2543Smrg    xPointFixed p1;
102706f2543Smrg    xPointFixed p2;
103706f2543Smrg} PictLinearGradient, *PictLinearGradientPtr;
104706f2543Smrg
105706f2543Smrgtypedef struct _PictCircle {
106706f2543Smrg    xFixed x;
107706f2543Smrg    xFixed y;
108706f2543Smrg    xFixed radius;
109706f2543Smrg} PictCircle, *PictCirclePtr;
110706f2543Smrg
111706f2543Smrgtypedef struct _PictRadialGradient {
112706f2543Smrg    unsigned int type;
113706f2543Smrg    unsigned int class;
114706f2543Smrg    int nstops;
115706f2543Smrg    PictGradientStopPtr stops;
116706f2543Smrg    int stopRange;
117706f2543Smrg    CARD32 *colorTable;
118706f2543Smrg    int colorTableSize;
119706f2543Smrg    PictCircle c1;
120706f2543Smrg    PictCircle c2;
121706f2543Smrg    double cdx;
122706f2543Smrg    double cdy;
123706f2543Smrg    double dr;
124706f2543Smrg    double A;
125706f2543Smrg} PictRadialGradient, *PictRadialGradientPtr;
126706f2543Smrg
127706f2543Smrgtypedef struct _PictConicalGradient {
128706f2543Smrg    unsigned int type;
129706f2543Smrg    unsigned int class;
130706f2543Smrg    int nstops;
131706f2543Smrg    PictGradientStopPtr stops;
132706f2543Smrg    int stopRange;
133706f2543Smrg    CARD32 *colorTable;
134706f2543Smrg    int colorTableSize;
135706f2543Smrg    xPointFixed center;
136706f2543Smrg    xFixed angle;
137706f2543Smrg} PictConicalGradient, *PictConicalGradientPtr;
138706f2543Smrg
139706f2543Smrgtypedef union _SourcePict {
140706f2543Smrg    unsigned int type;
141706f2543Smrg    PictSolidFill solidFill;
142706f2543Smrg    PictGradient gradient;
143706f2543Smrg    PictLinearGradient linear;
144706f2543Smrg    PictRadialGradient radial;
145706f2543Smrg    PictConicalGradient conical;
146706f2543Smrg} SourcePict, *SourcePictPtr;
147706f2543Smrg
148706f2543Smrgtypedef struct _Picture {
149706f2543Smrg    DrawablePtr	    pDrawable;
150706f2543Smrg    PictFormatPtr   pFormat;
151706f2543Smrg    PictFormatShort format;	    /* PICT_FORMAT */
152706f2543Smrg    int		    refcnt;
153706f2543Smrg    CARD32	    id;
154706f2543Smrg    unsigned int    repeat : 1;
155706f2543Smrg    unsigned int    graphicsExposures : 1;
156706f2543Smrg    unsigned int    subWindowMode : 1;
157706f2543Smrg    unsigned int    polyEdge : 1;
158706f2543Smrg    unsigned int    polyMode : 1;
159706f2543Smrg    unsigned int    freeCompClip : 1;
160706f2543Smrg    unsigned int    clientClipType : 2;
161706f2543Smrg    unsigned int    componentAlpha : 1;
162706f2543Smrg    unsigned int    repeatType : 2;
163706f2543Smrg    unsigned int    filter : 3;
164706f2543Smrg    unsigned int    stateChanges : CPLastBit;
165706f2543Smrg    unsigned int    unused : 18 - CPLastBit;
166706f2543Smrg
167706f2543Smrg    PicturePtr	    pNext;	    /* chain on same drawable */
168706f2543Smrg
169706f2543Smrg    PicturePtr	    alphaMap;
170706f2543Smrg    DDXPointRec	    alphaOrigin;
171706f2543Smrg
172706f2543Smrg    DDXPointRec	    clipOrigin;
173706f2543Smrg    pointer	    clientClip;
174706f2543Smrg
175706f2543Smrg    unsigned long   serialNumber;
176706f2543Smrg
177706f2543Smrg    RegionPtr	    pCompositeClip;
178706f2543Smrg
179706f2543Smrg    PrivateRec	    *devPrivates;
180706f2543Smrg
181706f2543Smrg    PictTransform   *transform;
182706f2543Smrg
183706f2543Smrg    SourcePictPtr   pSourcePict;
184706f2543Smrg    xFixed	    *filter_params;
185706f2543Smrg    int		    filter_nparams;
186706f2543Smrg} PictureRec;
187706f2543Smrg
188706f2543Smrgtypedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id,
189706f2543Smrg						 xFixed *params, int nparams,
190706f2543Smrg						 int *width, int *height);
191706f2543Smrgtypedef struct {
192706f2543Smrg    char			    *name;
193706f2543Smrg    int				    id;
194706f2543Smrg    PictFilterValidateParamsProcPtr ValidateParams;
195706f2543Smrg    int				    width, height;
196706f2543Smrg} PictFilterRec, *PictFilterPtr;
197706f2543Smrg
198706f2543Smrg#define PictFilterNearest	0
199706f2543Smrg#define PictFilterBilinear	1
200706f2543Smrg
201706f2543Smrg#define PictFilterFast		2
202706f2543Smrg#define PictFilterGood		3
203706f2543Smrg#define PictFilterBest		4
204706f2543Smrg
205706f2543Smrg#define PictFilterConvolution	5
206706f2543Smrg/* if you add an 8th filter, expand the filter bitfield above */
207706f2543Smrg
208706f2543Smrgtypedef struct {
209706f2543Smrg    char	    *alias;
210706f2543Smrg    int		    alias_id;
211706f2543Smrg    int		    filter_id;
212706f2543Smrg} PictFilterAliasRec, *PictFilterAliasPtr;
213706f2543Smrg
214706f2543Smrgtypedef int	(*CreatePictureProcPtr)	    (PicturePtr pPicture);
215706f2543Smrgtypedef void	(*DestroyPictureProcPtr)    (PicturePtr pPicture);
216706f2543Smrgtypedef int	(*ChangePictureClipProcPtr) (PicturePtr	pPicture,
217706f2543Smrg					     int	clipType,
218706f2543Smrg					     pointer    value,
219706f2543Smrg					     int	n);
220706f2543Smrgtypedef void	(*DestroyPictureClipProcPtr)(PicturePtr	pPicture);
221706f2543Smrg
222706f2543Smrgtypedef int	(*ChangePictureTransformProcPtr)    (PicturePtr	    pPicture,
223706f2543Smrg						     PictTransform  *transform);
224706f2543Smrg
225706f2543Smrgtypedef int	(*ChangePictureFilterProcPtr)	(PicturePtr	pPicture,
226706f2543Smrg						 int		filter,
227706f2543Smrg						 xFixed		*params,
228706f2543Smrg						 int		nparams);
229706f2543Smrg
230706f2543Smrgtypedef void	(*DestroyPictureFilterProcPtr)	(PicturePtr pPicture);
231706f2543Smrg
232706f2543Smrgtypedef void	(*ChangePictureProcPtr)	    (PicturePtr pPicture,
233706f2543Smrg					     Mask	mask);
234706f2543Smrgtypedef void	(*ValidatePictureProcPtr)    (PicturePtr pPicture,
235706f2543Smrg					     Mask       mask);
236706f2543Smrgtypedef void	(*CompositeProcPtr)	    (CARD8	op,
237706f2543Smrg					     PicturePtr pSrc,
238706f2543Smrg					     PicturePtr pMask,
239706f2543Smrg					     PicturePtr pDst,
240706f2543Smrg					     INT16	xSrc,
241706f2543Smrg					     INT16	ySrc,
242706f2543Smrg					     INT16	xMask,
243706f2543Smrg					     INT16	yMask,
244706f2543Smrg					     INT16	xDst,
245706f2543Smrg					     INT16	yDst,
246706f2543Smrg					     CARD16	width,
247706f2543Smrg					     CARD16	height);
248706f2543Smrg
249706f2543Smrgtypedef void	(*GlyphsProcPtr)	    (CARD8      op,
250706f2543Smrg					     PicturePtr pSrc,
251706f2543Smrg					     PicturePtr pDst,
252706f2543Smrg					     PictFormatPtr  maskFormat,
253706f2543Smrg					     INT16      xSrc,
254706f2543Smrg					     INT16      ySrc,
255706f2543Smrg					     int	nlists,
256706f2543Smrg					     GlyphListPtr   lists,
257706f2543Smrg					     GlyphPtr	*glyphs);
258706f2543Smrg
259706f2543Smrgtypedef void	(*CompositeRectsProcPtr)    (CARD8	    op,
260706f2543Smrg					     PicturePtr	    pDst,
261706f2543Smrg					     xRenderColor   *color,
262706f2543Smrg					     int	    nRect,
263706f2543Smrg					     xRectangle	    *rects);
264706f2543Smrg
265706f2543Smrgtypedef void	(*RasterizeTrapezoidProcPtr)(PicturePtr	    pMask,
266706f2543Smrg					     xTrapezoid	    *trap,
267706f2543Smrg					     int	    x_off,
268706f2543Smrg					     int	    y_off);
269706f2543Smrg
270706f2543Smrgtypedef void	(*TrapezoidsProcPtr)	    (CARD8	    op,
271706f2543Smrg					     PicturePtr	    pSrc,
272706f2543Smrg					     PicturePtr	    pDst,
273706f2543Smrg					     PictFormatPtr  maskFormat,
274706f2543Smrg					     INT16	    xSrc,
275706f2543Smrg					     INT16	    ySrc,
276706f2543Smrg					     int	    ntrap,
277706f2543Smrg					     xTrapezoid	    *traps);
278706f2543Smrg
279706f2543Smrgtypedef void	(*TrianglesProcPtr)	    (CARD8	    op,
280706f2543Smrg					     PicturePtr	    pSrc,
281706f2543Smrg					     PicturePtr	    pDst,
282706f2543Smrg					     PictFormatPtr  maskFormat,
283706f2543Smrg					     INT16	    xSrc,
284706f2543Smrg					     INT16	    ySrc,
285706f2543Smrg					     int	    ntri,
286706f2543Smrg					     xTriangle	    *tris);
287706f2543Smrg
288706f2543Smrgtypedef void	(*TriStripProcPtr)	    (CARD8	    op,
289706f2543Smrg					     PicturePtr	    pSrc,
290706f2543Smrg					     PicturePtr	    pDst,
291706f2543Smrg					     PictFormatPtr  maskFormat,
292706f2543Smrg					     INT16	    xSrc,
293706f2543Smrg					     INT16	    ySrc,
294706f2543Smrg					     int	    npoint,
295706f2543Smrg					     xPointFixed    *points);
296706f2543Smrg
297706f2543Smrgtypedef void	(*TriFanProcPtr)	    (CARD8	    op,
298706f2543Smrg					     PicturePtr	    pSrc,
299706f2543Smrg					     PicturePtr	    pDst,
300706f2543Smrg					     PictFormatPtr  maskFormat,
301706f2543Smrg					     INT16	    xSrc,
302706f2543Smrg					     INT16	    ySrc,
303706f2543Smrg					     int	    npoint,
304706f2543Smrg					     xPointFixed    *points);
305706f2543Smrg
306706f2543Smrgtypedef Bool	(*InitIndexedProcPtr)	    (ScreenPtr	    pScreen,
307706f2543Smrg					     PictFormatPtr  pFormat);
308706f2543Smrg
309706f2543Smrgtypedef void	(*CloseIndexedProcPtr)	    (ScreenPtr	    pScreen,
310706f2543Smrg					     PictFormatPtr  pFormat);
311706f2543Smrg
312706f2543Smrgtypedef void	(*UpdateIndexedProcPtr)	    (ScreenPtr	    pScreen,
313706f2543Smrg					     PictFormatPtr  pFormat,
314706f2543Smrg					     int	    ndef,
315706f2543Smrg					     xColorItem	    *pdef);
316706f2543Smrg
317706f2543Smrgtypedef void	(*AddTrapsProcPtr)	    (PicturePtr	    pPicture,
318706f2543Smrg					     INT16	    xOff,
319706f2543Smrg					     INT16	    yOff,
320706f2543Smrg					     int	    ntrap,
321706f2543Smrg					     xTrap	    *traps);
322706f2543Smrg
323706f2543Smrgtypedef void	(*AddTrianglesProcPtr)	    (PicturePtr	    pPicture,
324706f2543Smrg					     INT16	    xOff,
325706f2543Smrg					     INT16	    yOff,
326706f2543Smrg					     int	    ntri,
327706f2543Smrg					     xTriangle	    *tris);
328706f2543Smrg
329706f2543Smrgtypedef Bool	(*RealizeGlyphProcPtr)	    (ScreenPtr	    pScreen,
330706f2543Smrg					     GlyphPtr	    glyph);
331706f2543Smrg
332706f2543Smrgtypedef void	(*UnrealizeGlyphProcPtr)    (ScreenPtr	    pScreen,
333706f2543Smrg					     GlyphPtr	    glyph);
334706f2543Smrg
335706f2543Smrgtypedef struct _PictureScreen {
336706f2543Smrg    PictFormatPtr		formats;
337706f2543Smrg    PictFormatPtr		fallback;
338706f2543Smrg    int				nformats;
339706f2543Smrg
340706f2543Smrg    CreatePictureProcPtr	CreatePicture;
341706f2543Smrg    DestroyPictureProcPtr	DestroyPicture;
342706f2543Smrg    ChangePictureClipProcPtr	ChangePictureClip;
343706f2543Smrg    DestroyPictureClipProcPtr	DestroyPictureClip;
344706f2543Smrg
345706f2543Smrg    ChangePictureProcPtr	ChangePicture;
346706f2543Smrg    ValidatePictureProcPtr	ValidatePicture;
347706f2543Smrg
348706f2543Smrg    CompositeProcPtr		Composite;
349706f2543Smrg    GlyphsProcPtr		Glyphs; /* unused */
350706f2543Smrg    CompositeRectsProcPtr	CompositeRects;
351706f2543Smrg
352706f2543Smrg    DestroyWindowProcPtr	DestroyWindow;
353706f2543Smrg    CloseScreenProcPtr		CloseScreen;
354706f2543Smrg
355706f2543Smrg    StoreColorsProcPtr		StoreColors;
356706f2543Smrg
357706f2543Smrg    InitIndexedProcPtr		InitIndexed;
358706f2543Smrg    CloseIndexedProcPtr		CloseIndexed;
359706f2543Smrg    UpdateIndexedProcPtr	UpdateIndexed;
360706f2543Smrg
361706f2543Smrg    int				subpixel;
362706f2543Smrg
363706f2543Smrg    PictFilterPtr		filters;
364706f2543Smrg    int				nfilters;
365706f2543Smrg    PictFilterAliasPtr		filterAliases;
366706f2543Smrg    int				nfilterAliases;
367706f2543Smrg
368706f2543Smrg    /**
369706f2543Smrg     * Called immediately after a picture's transform is changed through the
370706f2543Smrg     * SetPictureTransform request.  Not called for source-only pictures.
371706f2543Smrg     */
372706f2543Smrg    ChangePictureTransformProcPtr   ChangePictureTransform;
373706f2543Smrg
374706f2543Smrg    /**
375706f2543Smrg     * Called immediately after a picture's transform is changed through the
376706f2543Smrg     * SetPictureFilter request.  Not called for source-only pictures.
377706f2543Smrg     */
378706f2543Smrg    ChangePictureFilterProcPtr	ChangePictureFilter;
379706f2543Smrg
380706f2543Smrg    DestroyPictureFilterProcPtr	DestroyPictureFilter;
381706f2543Smrg
382706f2543Smrg    TrapezoidsProcPtr		Trapezoids;
383706f2543Smrg    TrianglesProcPtr		Triangles;
384706f2543Smrg    TriStripProcPtr		TriStrip;
385706f2543Smrg    TriFanProcPtr		TriFan;
386706f2543Smrg
387706f2543Smrg    RasterizeTrapezoidProcPtr	RasterizeTrapezoid;
388706f2543Smrg
389706f2543Smrg    AddTrianglesProcPtr		AddTriangles;
390706f2543Smrg
391706f2543Smrg    AddTrapsProcPtr		AddTraps;
392706f2543Smrg
393706f2543Smrg    RealizeGlyphProcPtr   	RealizeGlyph;
394706f2543Smrg    UnrealizeGlyphProcPtr 	UnrealizeGlyph;
395706f2543Smrg
396706f2543Smrg} PictureScreenRec, *PictureScreenPtr;
397706f2543Smrg
398706f2543Smrgextern _X_EXPORT DevPrivateKeyRec PictureScreenPrivateKeyRec;
399706f2543Smrg#define PictureScreenPrivateKey (&PictureScreenPrivateKeyRec)
400706f2543Smrg
401706f2543Smrgextern _X_EXPORT DevPrivateKeyRec PictureWindowPrivateKeyRec;
402706f2543Smrg#define	PictureWindowPrivateKey (&PictureWindowPrivateKeyRec)
403706f2543Smrg
404706f2543Smrgextern _X_EXPORT RESTYPE	PictureType;
405706f2543Smrgextern _X_EXPORT RESTYPE	PictFormatType;
406706f2543Smrgextern _X_EXPORT RESTYPE	GlyphSetType;
407706f2543Smrg
408706f2543Smrg#define GetPictureScreen(s) ((PictureScreenPtr)dixLookupPrivate(&(s)->devPrivates, PictureScreenPrivateKey))
409706f2543Smrg#define GetPictureScreenIfSet(s) (dixPrivateKeyRegistered(PictureScreenPrivateKey) ? GetPictureScreen(s) : NULL)
410706f2543Smrg#define SetPictureScreen(s,p) dixSetPrivate(&(s)->devPrivates, PictureScreenPrivateKey, p)
411706f2543Smrg#define GetPictureWindow(w) ((PicturePtr)dixLookupPrivate(&(w)->devPrivates, PictureWindowPrivateKey))
412706f2543Smrg#define SetPictureWindow(w,p) dixSetPrivate(&(w)->devPrivates, PictureWindowPrivateKey, p)
413706f2543Smrg
414706f2543Smrg#define VERIFY_PICTURE(pPicture, pid, client, mode) {\
415706f2543Smrg    int rc = dixLookupResourceByType((pointer)&(pPicture), pid,\
416706f2543Smrg	                             PictureType, client, mode);\
417706f2543Smrg    if (rc != Success)\
418706f2543Smrg	return rc;\
419706f2543Smrg}
420706f2543Smrg
421706f2543Smrg#define VERIFY_ALPHA(pPicture, pid, client, mode) {\
422706f2543Smrg    if (pid == None) \
423706f2543Smrg	pPicture = 0; \
424706f2543Smrg    else { \
425706f2543Smrg	VERIFY_PICTURE(pPicture, pid, client, mode); \
426706f2543Smrg    } \
427706f2543Smrg} \
428706f2543Smrg
429706f2543Smrgextern _X_EXPORT Bool
430706f2543SmrgPictureDestroyWindow (WindowPtr pWindow);
431706f2543Smrg
432706f2543Smrgextern _X_EXPORT Bool
433706f2543SmrgPictureCloseScreen (int Index, ScreenPtr pScreen);
434706f2543Smrg
435706f2543Smrgextern _X_EXPORT void
436706f2543SmrgPictureStoreColors (ColormapPtr pColormap, int ndef, xColorItem *pdef);
437706f2543Smrg
438706f2543Smrgextern _X_EXPORT Bool
439706f2543SmrgPictureInitIndexedFormat (ScreenPtr pScreen, PictFormatPtr format);
440706f2543Smrg
441706f2543Smrgextern _X_EXPORT Bool
442706f2543SmrgPictureSetSubpixelOrder (ScreenPtr pScreen, int subpixel);
443706f2543Smrg
444706f2543Smrgextern _X_EXPORT int
445706f2543SmrgPictureGetSubpixelOrder (ScreenPtr pScreen);
446706f2543Smrg
447706f2543Smrgextern _X_EXPORT PictFormatPtr
448706f2543SmrgPictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp);
449706f2543Smrg
450706f2543Smrgextern _X_EXPORT PictFormatPtr
451706f2543SmrgPictureMatchVisual (ScreenPtr pScreen, int depth, VisualPtr pVisual);
452706f2543Smrg
453706f2543Smrgextern _X_EXPORT PictFormatPtr
454706f2543SmrgPictureMatchFormat (ScreenPtr pScreen, int depth, CARD32 format);
455706f2543Smrg
456706f2543Smrgextern _X_EXPORT Bool
457706f2543SmrgPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats);
458706f2543Smrg
459706f2543Smrgextern _X_EXPORT int
460706f2543SmrgPictureGetFilterId (char *filter, int len, Bool makeit);
461706f2543Smrg
462706f2543Smrgextern _X_EXPORT char *
463706f2543SmrgPictureGetFilterName (int id);
464706f2543Smrg
465706f2543Smrgextern _X_EXPORT int
466706f2543SmrgPictureAddFilter (ScreenPtr			    pScreen,
467706f2543Smrg		  char				    *filter,
468706f2543Smrg		  PictFilterValidateParamsProcPtr   ValidateParams,
469706f2543Smrg		  int				    width,
470706f2543Smrg		  int				    height);
471706f2543Smrg
472706f2543Smrgextern _X_EXPORT Bool
473706f2543SmrgPictureSetFilterAlias (ScreenPtr pScreen, char *filter, char *alias);
474706f2543Smrg
475706f2543Smrgextern _X_EXPORT Bool
476706f2543SmrgPictureSetDefaultFilters (ScreenPtr pScreen);
477706f2543Smrg
478706f2543Smrgextern _X_EXPORT void
479706f2543SmrgPictureResetFilters (ScreenPtr pScreen);
480706f2543Smrg
481706f2543Smrgextern _X_EXPORT PictFilterPtr
482706f2543SmrgPictureFindFilter (ScreenPtr pScreen, char *name, int len);
483706f2543Smrg
484706f2543Smrgextern _X_EXPORT int
485706f2543SmrgSetPicturePictFilter (PicturePtr pPicture, PictFilterPtr pFilter,
486706f2543Smrg		      xFixed *params, int nparams);
487706f2543Smrg
488706f2543Smrgextern _X_EXPORT int
489706f2543SmrgSetPictureFilter (PicturePtr pPicture, char *name, int len,
490706f2543Smrg		  xFixed *params, int nparams);
491706f2543Smrg
492706f2543Smrgextern _X_EXPORT Bool
493706f2543SmrgPictureFinishInit (void);
494706f2543Smrg
495706f2543Smrgextern _X_EXPORT void
496706f2543SmrgSetPictureToDefaults (PicturePtr pPicture);
497706f2543Smrg
498706f2543Smrgextern _X_EXPORT PicturePtr
499706f2543SmrgCreatePicture (Picture		pid,
500706f2543Smrg	       DrawablePtr	pDrawable,
501706f2543Smrg	       PictFormatPtr	pFormat,
502706f2543Smrg	       Mask		mask,
503706f2543Smrg	       XID		*list,
504706f2543Smrg	       ClientPtr	client,
505706f2543Smrg	       int		*error);
506706f2543Smrg
507706f2543Smrgextern _X_EXPORT int
508706f2543SmrgChangePicture (PicturePtr	pPicture,
509706f2543Smrg	       Mask		vmask,
510706f2543Smrg	       XID		*vlist,
511706f2543Smrg	       DevUnion		*ulist,
512706f2543Smrg	       ClientPtr	client);
513706f2543Smrg
514706f2543Smrgextern _X_EXPORT int
515706f2543SmrgSetPictureClipRects (PicturePtr	pPicture,
516706f2543Smrg		     int	xOrigin,
517706f2543Smrg		     int	yOrigin,
518706f2543Smrg		     int	nRect,
519706f2543Smrg		     xRectangle	*rects);
520706f2543Smrg
521706f2543Smrgextern _X_EXPORT int
522706f2543SmrgSetPictureClipRegion (PicturePtr    pPicture,
523706f2543Smrg		      int	    xOrigin,
524706f2543Smrg		      int	    yOrigin,
525706f2543Smrg		      RegionPtr	    pRegion);
526706f2543Smrg
527706f2543Smrgextern _X_EXPORT int
528706f2543SmrgSetPictureTransform (PicturePtr	    pPicture,
529706f2543Smrg		     PictTransform  *transform);
530706f2543Smrg
531706f2543Smrgextern _X_EXPORT void
532706f2543SmrgCopyPicture (PicturePtr	pSrc,
533706f2543Smrg	     Mask	mask,
534706f2543Smrg	     PicturePtr	pDst);
535706f2543Smrg
536706f2543Smrgextern _X_EXPORT void
537706f2543SmrgValidatePicture(PicturePtr pPicture);
538706f2543Smrg
539706f2543Smrgextern _X_EXPORT int
540706f2543SmrgFreePicture (pointer	pPicture,
541706f2543Smrg	     XID	pid);
542706f2543Smrg
543706f2543Smrgextern _X_EXPORT int
544706f2543SmrgFreePictFormat (pointer	pPictFormat,
545706f2543Smrg		XID     pid);
546706f2543Smrg
547706f2543Smrgextern _X_EXPORT void
548706f2543SmrgCompositePicture (CARD8		op,
549706f2543Smrg		  PicturePtr	pSrc,
550706f2543Smrg		  PicturePtr	pMask,
551706f2543Smrg		  PicturePtr	pDst,
552706f2543Smrg		  INT16		xSrc,
553706f2543Smrg		  INT16		ySrc,
554706f2543Smrg		  INT16		xMask,
555706f2543Smrg		  INT16		yMask,
556706f2543Smrg		  INT16		xDst,
557706f2543Smrg		  INT16		yDst,
558706f2543Smrg		  CARD16	width,
559706f2543Smrg		  CARD16	height);
560706f2543Smrg
561706f2543Smrgextern _X_EXPORT void
562706f2543SmrgCompositeGlyphs (CARD8		op,
563706f2543Smrg		 PicturePtr	pSrc,
564706f2543Smrg		 PicturePtr	pDst,
565706f2543Smrg		 PictFormatPtr	maskFormat,
566706f2543Smrg		 INT16		xSrc,
567706f2543Smrg		 INT16		ySrc,
568706f2543Smrg		 int		nlist,
569706f2543Smrg		 GlyphListPtr	lists,
570706f2543Smrg		 GlyphPtr	*glyphs);
571706f2543Smrg
572706f2543Smrgextern _X_EXPORT void
573706f2543SmrgCompositeRects (CARD8		op,
574706f2543Smrg		PicturePtr	pDst,
575706f2543Smrg		xRenderColor	*color,
576706f2543Smrg		int		nRect,
577706f2543Smrg		xRectangle      *rects);
578706f2543Smrg
579706f2543Smrgextern _X_EXPORT void
580706f2543SmrgCompositeTrapezoids (CARD8	    op,
581706f2543Smrg		     PicturePtr	    pSrc,
582706f2543Smrg		     PicturePtr	    pDst,
583706f2543Smrg		     PictFormatPtr  maskFormat,
584706f2543Smrg		     INT16	    xSrc,
585706f2543Smrg		     INT16	    ySrc,
586706f2543Smrg		     int	    ntrap,
587706f2543Smrg		     xTrapezoid	    *traps);
588706f2543Smrg
589706f2543Smrgextern _X_EXPORT void
590706f2543SmrgCompositeTriangles (CARD8	    op,
591706f2543Smrg		    PicturePtr	    pSrc,
592706f2543Smrg		    PicturePtr	    pDst,
593706f2543Smrg		    PictFormatPtr   maskFormat,
594706f2543Smrg		    INT16	    xSrc,
595706f2543Smrg		    INT16	    ySrc,
596706f2543Smrg		    int		    ntriangles,
597706f2543Smrg		    xTriangle	    *triangles);
598706f2543Smrg
599706f2543Smrgextern _X_EXPORT void
600706f2543SmrgCompositeTriStrip (CARD8	    op,
601706f2543Smrg		   PicturePtr	    pSrc,
602706f2543Smrg		   PicturePtr	    pDst,
603706f2543Smrg		   PictFormatPtr    maskFormat,
604706f2543Smrg		   INT16	    xSrc,
605706f2543Smrg		   INT16	    ySrc,
606706f2543Smrg		   int		    npoints,
607706f2543Smrg		   xPointFixed	    *points);
608706f2543Smrg
609706f2543Smrgextern _X_EXPORT void
610706f2543SmrgCompositeTriFan (CARD8		op,
611706f2543Smrg		 PicturePtr	pSrc,
612706f2543Smrg		 PicturePtr	pDst,
613706f2543Smrg		 PictFormatPtr	maskFormat,
614706f2543Smrg		 INT16		xSrc,
615706f2543Smrg		 INT16		ySrc,
616706f2543Smrg		 int		npoints,
617706f2543Smrg		 xPointFixed	*points);
618706f2543Smrg
619706f2543Smrgextern _X_EXPORT CARD32
620706f2543SmrgPictureGradientColor (PictGradientStopPtr stop1,
621706f2543Smrg		      PictGradientStopPtr stop2,
622706f2543Smrg		      CARD32	          x);
623706f2543Smrg
624706f2543Smrgextern _X_EXPORT void RenderExtensionInit (void);
625706f2543Smrg
626706f2543SmrgBool
627706f2543SmrgAnimCurInit (ScreenPtr pScreen);
628706f2543Smrg
629706f2543Smrgint
630706f2543SmrgAnimCursorCreate (CursorPtr *cursors, CARD32 *deltas, int ncursor, CursorPtr *ppCursor, ClientPtr client, XID cid);
631706f2543Smrg
632706f2543Smrgextern _X_EXPORT void
633706f2543SmrgAddTraps (PicturePtr	pPicture,
634706f2543Smrg	  INT16		xOff,
635706f2543Smrg	  INT16		yOff,
636706f2543Smrg	  int		ntraps,
637706f2543Smrg	  xTrap		*traps);
638706f2543Smrg
639706f2543Smrgextern _X_EXPORT PicturePtr
640706f2543SmrgCreateSolidPicture (Picture pid,
641706f2543Smrg                    xRenderColor *color,
642706f2543Smrg                    int *error);
643706f2543Smrg
644706f2543Smrgextern _X_EXPORT PicturePtr
645706f2543SmrgCreateLinearGradientPicture (Picture pid,
646706f2543Smrg                             xPointFixed *p1,
647706f2543Smrg                             xPointFixed *p2,
648706f2543Smrg                             int nStops,
649706f2543Smrg                             xFixed *stops,
650706f2543Smrg                             xRenderColor *colors,
651706f2543Smrg                             int *error);
652706f2543Smrg
653706f2543Smrgextern _X_EXPORT PicturePtr
654706f2543SmrgCreateRadialGradientPicture (Picture pid,
655706f2543Smrg                             xPointFixed *inner,
656706f2543Smrg                             xPointFixed *outer,
657706f2543Smrg                             xFixed innerRadius,
658706f2543Smrg                             xFixed outerRadius,
659706f2543Smrg                             int nStops,
660706f2543Smrg                             xFixed *stops,
661706f2543Smrg                             xRenderColor *colors,
662706f2543Smrg                             int *error);
663706f2543Smrg
664706f2543Smrgextern _X_EXPORT PicturePtr
665706f2543SmrgCreateConicalGradientPicture (Picture pid,
666706f2543Smrg                              xPointFixed *center,
667706f2543Smrg                              xFixed angle,
668706f2543Smrg                              int nStops,
669706f2543Smrg                              xFixed *stops,
670706f2543Smrg                              xRenderColor *colors,
671706f2543Smrg                              int *error);
672706f2543Smrg
673706f2543Smrg#ifdef PANORAMIX
674706f2543Smrgextern _X_EXPORT void PanoramiXRenderInit (void);
675706f2543Smrgextern _X_EXPORT void PanoramiXRenderReset (void);
676706f2543Smrg#endif
677706f2543Smrg
678706f2543Smrg/*
679706f2543Smrg * matrix.c
680706f2543Smrg */
681706f2543Smrg
682706f2543Smrgextern _X_EXPORT void
683706f2543SmrgPictTransform_from_xRenderTransform (PictTransformPtr pict,
684706f2543Smrg				     xRenderTransform *render);
685706f2543Smrg
686706f2543Smrgextern _X_EXPORT void
687706f2543SmrgxRenderTransform_from_PictTransform (xRenderTransform *render,
688706f2543Smrg				     PictTransformPtr pict);
689706f2543Smrg
690706f2543Smrgextern _X_EXPORT Bool
691706f2543SmrgPictureTransformPoint (PictTransformPtr transform,
692706f2543Smrg		       PictVectorPtr	vector);
693706f2543Smrg
694706f2543Smrgextern _X_EXPORT Bool
695706f2543SmrgPictureTransformPoint3d (PictTransformPtr transform,
696706f2543Smrg                         PictVectorPtr	vector);
697706f2543Smrg
698706f2543Smrg#endif /* _PICTURESTR_H_ */
699