b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/*
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Copyright © 2000 SuSE, Inc.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * documentation for any purpose is hereby granted without fee, provided that
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * the above copyright notice appear in all copies and that both that
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * copyright notice and this permission notice appear in supporting
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * documentation, and that the name of SuSE not be used in advertising or
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * publicity pertaining to distribution of the software without specific,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * written prior permission. SuSE makes no representations about the
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * suitability of this software for any purpose. It is provided "as is"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * without express or implied warranty.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Author: Keith Packard, SuSE, Inc.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef _MIPICT_H_
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _MIPICT_H_
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "picturestr.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define MI_MAX_INDEXED 256 /* XXX depth must be <= 8 */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#if MI_MAX_INDEXED <= 256
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef CARD8 miIndexType;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _miIndexed {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool color;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD32 rgba[MI_MAX_INDEXED];
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync miIndexType ent[32768];
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} miIndexedRec, *miIndexedPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync (((s) >> 6) & 0x03e0) | \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync (((s) >> 9) & 0x7c00))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiCreatePicture (PicturePtr pPicture);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiDestroyPicture (PicturePtr pPicture);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiDestroyPictureClip (PicturePtr pPicture);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiChangePictureClip (PicturePtr pPicture,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int type,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer value,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int n);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiChangePicture (PicturePtr pPicture,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Mask mask);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiValidatePicture (PicturePtr pPicture,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Mask mask);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiChangePictureTransform (PicturePtr pPicture,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictTransform *transform);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT int
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiChangePictureFilter (PicturePtr pPicture,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int filter,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xFixed *params,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int nparams);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiCompositeSourceValidate (PicturePtr pPicture,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 x,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 y,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD16 width,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD16 height);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiComputeCompositeRegion (RegionPtr pRegion,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pMask,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 xSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 ySrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 xMask,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 yMask,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 xDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 yDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD16 width,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD16 height);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiRealizeGlyph (ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync GlyphPtr glyph);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiUnrealizeGlyph (ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync GlyphPtr glyph);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiGlyphs (CARD8 op,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr maskFormat,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 xSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 ySrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int nlist,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync GlyphListPtr list,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync GlyphPtr *glyphs);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiRenderColorToPixel (PictFormatPtr pPict,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xRenderColor *color,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD32 *pixel);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiRenderPixelToColor (PictFormatPtr pPict,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD32 pixel,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xRenderColor *color);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiIsSolidAlpha (PicturePtr pSrc);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiCompositeRects (CARD8 op,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xRenderColor *color,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int nRect,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xRectangle *rects);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiTrapezoids (CARD8 op,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr maskFormat,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 xSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 ySrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int ntrap,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xTrapezoid *traps);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiPointFixedBounds (int npoint, xPointFixed *points, BoxPtr bounds);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiTriangleBounds (int ntri, xTriangle *tris, BoxPtr bounds);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiTriangles (CARD8 op,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr maskFormat,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 xSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 ySrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int ntri,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xTriangle *tris);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiTriStrip (CARD8 op,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr maskFormat,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 xSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 ySrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int npoint,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xPointFixed *points);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiTriFan (CARD8 op,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr maskFormat,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 xSrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync INT16 ySrc,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int npoint,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xPointFixed *points);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT PicturePtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiCreateAlphaPicture (ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PicturePtr pDst,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr pPictFormat,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD16 width,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync CARD16 height);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiInitIndexed (ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr pFormat);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiCloseIndexed (ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr pFormat);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncmiUpdateIndexed (ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync PictFormatPtr pFormat,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int ndef,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync xColorItem *pdef);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif /* _MIPICT_H_ */