deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Copyright © 2000 SuSE, Inc.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * documentation for any purpose is hereby granted without fee, provided that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * the above copyright notice appear in all copies and that both that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * copyright notice and this permission notice appear in supporting
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * documentation, and that the name of SuSE not be used in advertising or
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * publicity pertaining to distribution of the software without specific,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * written prior permission. SuSE makes no representations about the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * suitability of this software for any purpose. It is provided "as is"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * without express or implied warranty.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Author: Keith Packard, SuSE, Inc.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef _MIPICT_H_
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define _MIPICT_H_
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "picturestr.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define MI_MAX_INDEXED 256 /* XXX depth must be <= 8 */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#if MI_MAX_INDEXED <= 256
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef CARD8 miIndexType;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _miIndexed {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool color;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD32 rgba[MI_MAX_INDEXED];
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync miIndexType ent[32768];
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} miIndexedRec, *miIndexedPtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (((s) >> 6) & 0x03e0) | \
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync (((s) >> 9) & 0x7c00))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15])
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24))
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)])
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncint
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiCreatePicture (PicturePtr pPicture);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiDestroyPicture (PicturePtr pPicture);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiDestroyPictureClip (PicturePtr pPicture);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncint
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiChangePictureClip (PicturePtr pPicture,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int type,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync pointer value,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int n);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiChangePicture (PicturePtr pPicture,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask mask);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiValidatePicture (PicturePtr pPicture,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Mask mask);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncint
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiChangePictureTransform (PicturePtr pPicture,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictTransform *transform);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncint
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiChangePictureFilter (PicturePtr pPicture,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int filter,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xFixed *params,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int nparams);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncBool
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiClipPicture (RegionPtr pRegion,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pPicture,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xReg,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 yReg,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xPict,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 yPict);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncBool
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiComputeCompositeRegion (RegionPtr pRegion,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pMask,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 ySrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xMask,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 yMask,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 yDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD16 width,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD16 height);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncBool
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncBool
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiRealizeGlyph (ScreenPtr pScreen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GlyphPtr glyph);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiUnrealizeGlyph (ScreenPtr pScreen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GlyphPtr glyph);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiGlyphExtents (int nlist,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GlyphListPtr list,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GlyphPtr *glyphs,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync BoxPtr extents);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiGlyphs (CARD8 op,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr maskFormat,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 ySrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int nlist,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GlyphListPtr list,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync GlyphPtr *glyphs);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiRenderColorToPixel (PictFormatPtr pPict,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xRenderColor *color,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD32 *pixel);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiRenderPixelToColor (PictFormatPtr pPict,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD32 pixel,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xRenderColor *color);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncBool
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiIsSolidAlpha (PicturePtr pSrc);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiCompositeRects (CARD8 op,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xRenderColor *color,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int nRect,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xRectangle *rects);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiTrapezoids (CARD8 op,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr maskFormat,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 ySrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int ntrap,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xTrapezoid *traps);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiPointFixedBounds (int npoint, xPointFixed *points, BoxPtr bounds);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiTriangleBounds (int ntri, xTriangle *tris, BoxPtr bounds);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiRasterizeTriangle (PicturePtr pMask,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xTriangle *tri,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int x_off,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int y_off);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiTriangles (CARD8 op,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr maskFormat,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 ySrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int ntri,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xTriangle *tris);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiTriStrip (CARD8 op,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr maskFormat,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 ySrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int npoint,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xPointFixed *points);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiTriFan (CARD8 op,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr maskFormat,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 xSrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync INT16 ySrc,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int npoint,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xPointFixed *points);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncPicturePtr
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiCreateAlphaPicture (ScreenPtr pScreen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PicturePtr pDst,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr pPictFormat,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD16 width,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CARD16 height);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncBool
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiInitIndexed (ScreenPtr pScreen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr pFormat);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiCloseIndexed (ScreenPtr pScreen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr pFormat);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncmiUpdateIndexed (ScreenPtr pScreen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PictFormatPtr pFormat,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int ndef,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync xColorItem *pdef);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* _MIPICT_H_ */