1706f2543Smrg/*
2706f2543Smrg *
3706f2543Smrg * Copyright © 2000 SuSE, Inc.
4706f2543Smrg *
5706f2543Smrg * Permission to use, copy, modify, distribute, and sell this software and its
6706f2543Smrg * documentation for any purpose is hereby granted without fee, provided that
7706f2543Smrg * the above copyright notice appear in all copies and that both that
8706f2543Smrg * copyright notice and this permission notice appear in supporting
9706f2543Smrg * documentation, and that the name of SuSE not be used in advertising or
10706f2543Smrg * publicity pertaining to distribution of the software without specific,
11706f2543Smrg * written prior permission.  SuSE makes no representations about the
12706f2543Smrg * suitability of this software for any purpose.  It is provided "as is"
13706f2543Smrg * without express or implied warranty.
14706f2543Smrg *
15706f2543Smrg * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
16706f2543Smrg * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
17706f2543Smrg * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18706f2543Smrg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
19706f2543Smrg * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20706f2543Smrg * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21706f2543Smrg *
22706f2543Smrg * Author:  Keith Packard, SuSE, Inc.
23706f2543Smrg */
24706f2543Smrg
25706f2543Smrg#ifndef _MIPICT_H_
26706f2543Smrg#define _MIPICT_H_
27706f2543Smrg
28706f2543Smrg#include "picturestr.h"
29706f2543Smrg
30706f2543Smrg#define MI_MAX_INDEXED	256 /* XXX depth must be <= 8 */
31706f2543Smrg
32706f2543Smrg#if MI_MAX_INDEXED <= 256
33706f2543Smrgtypedef CARD8 miIndexType;
34706f2543Smrg#endif
35706f2543Smrg
36706f2543Smrgtypedef struct _miIndexed {
37706f2543Smrg    Bool	color;
38706f2543Smrg    CARD32	rgba[MI_MAX_INDEXED];
39706f2543Smrg    miIndexType	ent[32768];
40706f2543Smrg} miIndexedRec, *miIndexedPtr;
41706f2543Smrg
42706f2543Smrg#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \
43706f2543Smrg			     (((s) >> 6) & 0x03e0) | \
44706f2543Smrg			     (((s) >> 9) & 0x7c00))
45706f2543Smrg#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15])
46706f2543Smrg#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24))
47706f2543Smrg
48706f2543Smrg#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)])
49706f2543Smrg
50706f2543Smrgextern _X_EXPORT int
51706f2543SmrgmiCreatePicture (PicturePtr pPicture);
52706f2543Smrg
53706f2543Smrgextern _X_EXPORT void
54706f2543SmrgmiDestroyPicture (PicturePtr pPicture);
55706f2543Smrg
56706f2543Smrgextern _X_EXPORT void
57706f2543SmrgmiDestroyPictureClip (PicturePtr pPicture);
58706f2543Smrg
59706f2543Smrgextern _X_EXPORT int
60706f2543SmrgmiChangePictureClip (PicturePtr    pPicture,
61706f2543Smrg		     int	   type,
62706f2543Smrg		     pointer	   value,
63706f2543Smrg		     int	   n);
64706f2543Smrg
65706f2543Smrgextern _X_EXPORT void
66706f2543SmrgmiChangePicture (PicturePtr pPicture,
67706f2543Smrg		 Mask       mask);
68706f2543Smrg
69706f2543Smrgextern _X_EXPORT void
70706f2543SmrgmiValidatePicture (PicturePtr pPicture,
71706f2543Smrg		   Mask       mask);
72706f2543Smrg
73706f2543Smrgextern _X_EXPORT int
74706f2543SmrgmiChangePictureTransform (PicturePtr	pPicture,
75706f2543Smrg			  PictTransform *transform);
76706f2543Smrg
77706f2543Smrgextern _X_EXPORT int
78706f2543SmrgmiChangePictureFilter (PicturePtr pPicture,
79706f2543Smrg		       int	  filter,
80706f2543Smrg		       xFixed     *params,
81706f2543Smrg		       int	  nparams);
82706f2543Smrg
83706f2543Smrgextern _X_EXPORT void
84706f2543SmrgmiCompositeSourceValidate (PicturePtr	pPicture,
85706f2543Smrg			   INT16	x,
86706f2543Smrg			   INT16	y,
87706f2543Smrg			   CARD16	width,
88706f2543Smrg			   CARD16	height);
89706f2543Smrgextern _X_EXPORT Bool
90706f2543SmrgmiComputeCompositeRegion (RegionPtr	pRegion,
91706f2543Smrg			  PicturePtr	pSrc,
92706f2543Smrg			  PicturePtr	pMask,
93706f2543Smrg			  PicturePtr	pDst,
94706f2543Smrg			  INT16		xSrc,
95706f2543Smrg			  INT16		ySrc,
96706f2543Smrg			  INT16		xMask,
97706f2543Smrg			  INT16		yMask,
98706f2543Smrg			  INT16		xDst,
99706f2543Smrg			  INT16		yDst,
100706f2543Smrg			  CARD16	width,
101706f2543Smrg			  CARD16	height);
102706f2543Smrg
103706f2543Smrgextern _X_EXPORT Bool
104706f2543SmrgmiPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats);
105706f2543Smrg
106706f2543Smrgextern _X_EXPORT Bool
107706f2543SmrgmiRealizeGlyph (ScreenPtr pScreen,
108706f2543Smrg		GlyphPtr  glyph);
109706f2543Smrg
110706f2543Smrgextern _X_EXPORT void
111706f2543SmrgmiUnrealizeGlyph (ScreenPtr pScreen,
112706f2543Smrg		  GlyphPtr  glyph);
113706f2543Smrg
114706f2543Smrgextern _X_EXPORT void
115706f2543SmrgmiGlyphs (CARD8		op,
116706f2543Smrg	  PicturePtr	pSrc,
117706f2543Smrg	  PicturePtr	pDst,
118706f2543Smrg	  PictFormatPtr	maskFormat,
119706f2543Smrg	  INT16		xSrc,
120706f2543Smrg	  INT16		ySrc,
121706f2543Smrg	  int		nlist,
122706f2543Smrg	  GlyphListPtr	list,
123706f2543Smrg	  GlyphPtr	*glyphs);
124706f2543Smrg
125706f2543Smrgextern _X_EXPORT void
126706f2543SmrgmiRenderColorToPixel (PictFormatPtr pPict,
127706f2543Smrg		      xRenderColor  *color,
128706f2543Smrg		      CARD32	    *pixel);
129706f2543Smrg
130706f2543Smrgextern _X_EXPORT void
131706f2543SmrgmiRenderPixelToColor (PictFormatPtr pPict,
132706f2543Smrg		      CARD32	    pixel,
133706f2543Smrg		      xRenderColor  *color);
134706f2543Smrg
135706f2543Smrgextern _X_EXPORT Bool
136706f2543SmrgmiIsSolidAlpha (PicturePtr pSrc);
137706f2543Smrg
138706f2543Smrgextern _X_EXPORT void
139706f2543SmrgmiCompositeRects (CARD8		op,
140706f2543Smrg		  PicturePtr	pDst,
141706f2543Smrg		  xRenderColor  *color,
142706f2543Smrg		  int		nRect,
143706f2543Smrg		  xRectangle    *rects);
144706f2543Smrg
145706f2543Smrgextern _X_EXPORT void
146706f2543SmrgmiTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box);
147706f2543Smrg
148706f2543Smrgextern _X_EXPORT void
149706f2543SmrgmiTrapezoids (CARD8	    op,
150706f2543Smrg	      PicturePtr    pSrc,
151706f2543Smrg	      PicturePtr    pDst,
152706f2543Smrg	      PictFormatPtr maskFormat,
153706f2543Smrg	      INT16	    xSrc,
154706f2543Smrg	      INT16	    ySrc,
155706f2543Smrg	      int	    ntrap,
156706f2543Smrg	      xTrapezoid    *traps);
157706f2543Smrg
158706f2543Smrgextern _X_EXPORT void
159706f2543SmrgmiPointFixedBounds (int npoint, xPointFixed *points, BoxPtr bounds);
160706f2543Smrg
161706f2543Smrgextern _X_EXPORT void
162706f2543SmrgmiTriangleBounds (int ntri, xTriangle *tris, BoxPtr bounds);
163706f2543Smrg
164706f2543Smrgextern _X_EXPORT void
165706f2543SmrgmiTriangles (CARD8	    op,
166706f2543Smrg	     PicturePtr	    pSrc,
167706f2543Smrg	     PicturePtr	    pDst,
168706f2543Smrg	     PictFormatPtr  maskFormat,
169706f2543Smrg	     INT16	    xSrc,
170706f2543Smrg	     INT16	    ySrc,
171706f2543Smrg	     int	    ntri,
172706f2543Smrg	     xTriangle	    *tris);
173706f2543Smrg
174706f2543Smrgextern _X_EXPORT void
175706f2543SmrgmiTriStrip (CARD8	    op,
176706f2543Smrg	    PicturePtr	    pSrc,
177706f2543Smrg	    PicturePtr	    pDst,
178706f2543Smrg	    PictFormatPtr   maskFormat,
179706f2543Smrg	    INT16	    xSrc,
180706f2543Smrg	    INT16	    ySrc,
181706f2543Smrg	    int		    npoint,
182706f2543Smrg	    xPointFixed	    *points);
183706f2543Smrg
184706f2543Smrgextern _X_EXPORT void
185706f2543SmrgmiTriFan (CARD8		op,
186706f2543Smrg	  PicturePtr	pSrc,
187706f2543Smrg	  PicturePtr	pDst,
188706f2543Smrg	  PictFormatPtr maskFormat,
189706f2543Smrg	  INT16		xSrc,
190706f2543Smrg	  INT16		ySrc,
191706f2543Smrg	  int		npoint,
192706f2543Smrg	  xPointFixed	*points);
193706f2543Smrg
194706f2543Smrgextern _X_EXPORT PicturePtr
195706f2543SmrgmiCreateAlphaPicture (ScreenPtr	    pScreen,
196706f2543Smrg		      PicturePtr    pDst,
197706f2543Smrg		      PictFormatPtr pPictFormat,
198706f2543Smrg		      CARD16	    width,
199706f2543Smrg		      CARD16	    height);
200706f2543Smrg
201706f2543Smrgextern _X_EXPORT Bool
202706f2543SmrgmiInitIndexed (ScreenPtr	pScreen,
203706f2543Smrg	       PictFormatPtr	pFormat);
204706f2543Smrg
205706f2543Smrgextern _X_EXPORT void
206706f2543SmrgmiCloseIndexed (ScreenPtr	pScreen,
207706f2543Smrg		PictFormatPtr	pFormat);
208706f2543Smrg
209706f2543Smrgextern _X_EXPORT void
210706f2543SmrgmiUpdateIndexed (ScreenPtr	pScreen,
211706f2543Smrg		 PictFormatPtr	pFormat,
212706f2543Smrg		 int		ndef,
213706f2543Smrg		 xColorItem	*pdef);
214706f2543Smrg
215706f2543Smrg#endif /* _MIPICT_H_ */
216