mipict.h revision 6747b715
105b261ecSmrg/*
205b261ecSmrg *
305b261ecSmrg * Copyright © 2000 SuSE, Inc.
405b261ecSmrg *
505b261ecSmrg * Permission to use, copy, modify, distribute, and sell this software and its
605b261ecSmrg * documentation for any purpose is hereby granted without fee, provided that
705b261ecSmrg * the above copyright notice appear in all copies and that both that
805b261ecSmrg * copyright notice and this permission notice appear in supporting
905b261ecSmrg * documentation, and that the name of SuSE not be used in advertising or
1005b261ecSmrg * publicity pertaining to distribution of the software without specific,
1105b261ecSmrg * written prior permission.  SuSE makes no representations about the
1205b261ecSmrg * suitability of this software for any purpose.  It is provided "as is"
1305b261ecSmrg * without express or implied warranty.
1405b261ecSmrg *
1505b261ecSmrg * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
1605b261ecSmrg * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
1705b261ecSmrg * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1805b261ecSmrg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
1905b261ecSmrg * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
2005b261ecSmrg * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2105b261ecSmrg *
2205b261ecSmrg * Author:  Keith Packard, SuSE, Inc.
2305b261ecSmrg */
2405b261ecSmrg
2505b261ecSmrg#ifndef _MIPICT_H_
2605b261ecSmrg#define _MIPICT_H_
2705b261ecSmrg
2805b261ecSmrg#include "picturestr.h"
2905b261ecSmrg
3005b261ecSmrg#define MI_MAX_INDEXED	256 /* XXX depth must be <= 8 */
3105b261ecSmrg
3205b261ecSmrg#if MI_MAX_INDEXED <= 256
3305b261ecSmrgtypedef CARD8 miIndexType;
3405b261ecSmrg#endif
3505b261ecSmrg
3605b261ecSmrgtypedef struct _miIndexed {
3705b261ecSmrg    Bool	color;
3805b261ecSmrg    CARD32	rgba[MI_MAX_INDEXED];
3905b261ecSmrg    miIndexType	ent[32768];
4005b261ecSmrg} miIndexedRec, *miIndexedPtr;
4105b261ecSmrg
4205b261ecSmrg#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \
4305b261ecSmrg			     (((s) >> 6) & 0x03e0) | \
4405b261ecSmrg			     (((s) >> 9) & 0x7c00))
4505b261ecSmrg#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15])
4605b261ecSmrg#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24))
4705b261ecSmrg
4805b261ecSmrg#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)])
4905b261ecSmrg
506747b715Smrgextern _X_EXPORT int
5105b261ecSmrgmiCreatePicture (PicturePtr pPicture);
5205b261ecSmrg
536747b715Smrgextern _X_EXPORT void
5405b261ecSmrgmiDestroyPicture (PicturePtr pPicture);
5505b261ecSmrg
566747b715Smrgextern _X_EXPORT void
5705b261ecSmrgmiDestroyPictureClip (PicturePtr pPicture);
5805b261ecSmrg
596747b715Smrgextern _X_EXPORT int
6005b261ecSmrgmiChangePictureClip (PicturePtr    pPicture,
6105b261ecSmrg		     int	   type,
6205b261ecSmrg		     pointer	   value,
6305b261ecSmrg		     int	   n);
6405b261ecSmrg
656747b715Smrgextern _X_EXPORT void
6605b261ecSmrgmiChangePicture (PicturePtr pPicture,
6705b261ecSmrg		 Mask       mask);
6805b261ecSmrg
696747b715Smrgextern _X_EXPORT void
7005b261ecSmrgmiValidatePicture (PicturePtr pPicture,
7105b261ecSmrg		   Mask       mask);
7205b261ecSmrg
736747b715Smrgextern _X_EXPORT int
7405b261ecSmrgmiChangePictureTransform (PicturePtr	pPicture,
7505b261ecSmrg			  PictTransform *transform);
7605b261ecSmrg
776747b715Smrgextern _X_EXPORT int
7805b261ecSmrgmiChangePictureFilter (PicturePtr pPicture,
7905b261ecSmrg		       int	  filter,
8005b261ecSmrg		       xFixed     *params,
8105b261ecSmrg		       int	  nparams);
8205b261ecSmrg
836747b715Smrgextern _X_EXPORT void
8405b261ecSmrgmiCompositeSourceValidate (PicturePtr	pPicture,
8505b261ecSmrg			   INT16	x,
8605b261ecSmrg			   INT16	y,
8705b261ecSmrg			   CARD16	width,
8805b261ecSmrg			   CARD16	height);
896747b715Smrgextern _X_EXPORT Bool
9005b261ecSmrgmiComputeCompositeRegion (RegionPtr	pRegion,
9105b261ecSmrg			  PicturePtr	pSrc,
9205b261ecSmrg			  PicturePtr	pMask,
9305b261ecSmrg			  PicturePtr	pDst,
9405b261ecSmrg			  INT16		xSrc,
9505b261ecSmrg			  INT16		ySrc,
9605b261ecSmrg			  INT16		xMask,
9705b261ecSmrg			  INT16		yMask,
9805b261ecSmrg			  INT16		xDst,
9905b261ecSmrg			  INT16		yDst,
10005b261ecSmrg			  CARD16	width,
10105b261ecSmrg			  CARD16	height);
10205b261ecSmrg
1036747b715Smrgextern _X_EXPORT Bool
10405b261ecSmrgmiPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats);
10505b261ecSmrg
1066747b715Smrgextern _X_EXPORT Bool
10705b261ecSmrgmiRealizeGlyph (ScreenPtr pScreen,
10805b261ecSmrg		GlyphPtr  glyph);
10905b261ecSmrg
1106747b715Smrgextern _X_EXPORT void
11105b261ecSmrgmiUnrealizeGlyph (ScreenPtr pScreen,
11205b261ecSmrg		  GlyphPtr  glyph);
11305b261ecSmrg
1146747b715Smrgextern _X_EXPORT void
11505b261ecSmrgmiGlyphs (CARD8		op,
11605b261ecSmrg	  PicturePtr	pSrc,
11705b261ecSmrg	  PicturePtr	pDst,
11805b261ecSmrg	  PictFormatPtr	maskFormat,
11905b261ecSmrg	  INT16		xSrc,
12005b261ecSmrg	  INT16		ySrc,
12105b261ecSmrg	  int		nlist,
12205b261ecSmrg	  GlyphListPtr	list,
12305b261ecSmrg	  GlyphPtr	*glyphs);
12405b261ecSmrg
1256747b715Smrgextern _X_EXPORT void
12605b261ecSmrgmiRenderColorToPixel (PictFormatPtr pPict,
12705b261ecSmrg		      xRenderColor  *color,
12805b261ecSmrg		      CARD32	    *pixel);
12905b261ecSmrg
1306747b715Smrgextern _X_EXPORT void
13105b261ecSmrgmiRenderPixelToColor (PictFormatPtr pPict,
13205b261ecSmrg		      CARD32	    pixel,
13305b261ecSmrg		      xRenderColor  *color);
13405b261ecSmrg
1356747b715Smrgextern _X_EXPORT Bool
13605b261ecSmrgmiIsSolidAlpha (PicturePtr pSrc);
13705b261ecSmrg
1386747b715Smrgextern _X_EXPORT void
13905b261ecSmrgmiCompositeRects (CARD8		op,
14005b261ecSmrg		  PicturePtr	pDst,
14105b261ecSmrg		  xRenderColor  *color,
14205b261ecSmrg		  int		nRect,
14305b261ecSmrg		  xRectangle    *rects);
14405b261ecSmrg
1456747b715Smrgextern _X_EXPORT void
14605b261ecSmrgmiTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box);
14705b261ecSmrg
1486747b715Smrgextern _X_EXPORT void
14905b261ecSmrgmiTrapezoids (CARD8	    op,
15005b261ecSmrg	      PicturePtr    pSrc,
15105b261ecSmrg	      PicturePtr    pDst,
15205b261ecSmrg	      PictFormatPtr maskFormat,
15305b261ecSmrg	      INT16	    xSrc,
15405b261ecSmrg	      INT16	    ySrc,
15505b261ecSmrg	      int	    ntrap,
15605b261ecSmrg	      xTrapezoid    *traps);
15705b261ecSmrg
1586747b715Smrgextern _X_EXPORT void
15905b261ecSmrgmiPointFixedBounds (int npoint, xPointFixed *points, BoxPtr bounds);
16005b261ecSmrg
1616747b715Smrgextern _X_EXPORT void
16205b261ecSmrgmiTriangleBounds (int ntri, xTriangle *tris, BoxPtr bounds);
16305b261ecSmrg
1646747b715Smrgextern _X_EXPORT void
16505b261ecSmrgmiTriangles (CARD8	    op,
16605b261ecSmrg	     PicturePtr	    pSrc,
16705b261ecSmrg	     PicturePtr	    pDst,
16805b261ecSmrg	     PictFormatPtr  maskFormat,
16905b261ecSmrg	     INT16	    xSrc,
17005b261ecSmrg	     INT16	    ySrc,
17105b261ecSmrg	     int	    ntri,
17205b261ecSmrg	     xTriangle	    *tris);
17305b261ecSmrg
1746747b715Smrgextern _X_EXPORT void
17505b261ecSmrgmiTriStrip (CARD8	    op,
17605b261ecSmrg	    PicturePtr	    pSrc,
17705b261ecSmrg	    PicturePtr	    pDst,
17805b261ecSmrg	    PictFormatPtr   maskFormat,
17905b261ecSmrg	    INT16	    xSrc,
18005b261ecSmrg	    INT16	    ySrc,
18105b261ecSmrg	    int		    npoint,
18205b261ecSmrg	    xPointFixed	    *points);
18305b261ecSmrg
1846747b715Smrgextern _X_EXPORT void
18505b261ecSmrgmiTriFan (CARD8		op,
18605b261ecSmrg	  PicturePtr	pSrc,
18705b261ecSmrg	  PicturePtr	pDst,
18805b261ecSmrg	  PictFormatPtr maskFormat,
18905b261ecSmrg	  INT16		xSrc,
19005b261ecSmrg	  INT16		ySrc,
19105b261ecSmrg	  int		npoint,
19205b261ecSmrg	  xPointFixed	*points);
19305b261ecSmrg
1946747b715Smrgextern _X_EXPORT PicturePtr
19505b261ecSmrgmiCreateAlphaPicture (ScreenPtr	    pScreen,
19605b261ecSmrg		      PicturePtr    pDst,
19705b261ecSmrg		      PictFormatPtr pPictFormat,
19805b261ecSmrg		      CARD16	    width,
19905b261ecSmrg		      CARD16	    height);
20005b261ecSmrg
2016747b715Smrgextern _X_EXPORT Bool
20205b261ecSmrgmiInitIndexed (ScreenPtr	pScreen,
20305b261ecSmrg	       PictFormatPtr	pFormat);
20405b261ecSmrg
2056747b715Smrgextern _X_EXPORT void
20605b261ecSmrgmiCloseIndexed (ScreenPtr	pScreen,
20705b261ecSmrg		PictFormatPtr	pFormat);
20805b261ecSmrg
2096747b715Smrgextern _X_EXPORT void
21005b261ecSmrgmiUpdateIndexed (ScreenPtr	pScreen,
21105b261ecSmrg		 PictFormatPtr	pFormat,
21205b261ecSmrg		 int		ndef,
21305b261ecSmrg		 xColorItem	*pdef);
21405b261ecSmrg
21505b261ecSmrg#endif /* _MIPICT_H_ */
216