4c221b0da1816acf2ca302b10092df059484468dvboxsync/*
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Copyright © 2000 SuSE, Inc.
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Permission to use, copy, modify, distribute, and sell this software and its
4c221b0da1816acf2ca302b10092df059484468dvboxsync * documentation for any purpose is hereby granted without fee, provided that
4c221b0da1816acf2ca302b10092df059484468dvboxsync * the above copyright notice appear in all copies and that both that
4c221b0da1816acf2ca302b10092df059484468dvboxsync * copyright notice and this permission notice appear in supporting
4c221b0da1816acf2ca302b10092df059484468dvboxsync * documentation, and that the name of SuSE not be used in advertising or
4c221b0da1816acf2ca302b10092df059484468dvboxsync * publicity pertaining to distribution of the software without specific,
4c221b0da1816acf2ca302b10092df059484468dvboxsync * written prior permission. SuSE makes no representations about the
4c221b0da1816acf2ca302b10092df059484468dvboxsync * suitability of this software for any purpose. It is provided "as is"
4c221b0da1816acf2ca302b10092df059484468dvboxsync * without express or implied warranty.
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
4c221b0da1816acf2ca302b10092df059484468dvboxsync * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
4c221b0da1816acf2ca302b10092df059484468dvboxsync * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
4c221b0da1816acf2ca302b10092df059484468dvboxsync * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
4c221b0da1816acf2ca302b10092df059484468dvboxsync * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
4c221b0da1816acf2ca302b10092df059484468dvboxsync * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Author: Keith Packard, SuSE, Inc.
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef _MIPICT_H_
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define _MIPICT_H_
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "picturestr.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define MI_MAX_INDEXED 256 /* XXX depth must be <= 8 */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#if MI_MAX_INDEXED <= 256
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef CARD8 miIndexType;
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _miIndexed {
4c221b0da1816acf2ca302b10092df059484468dvboxsync Bool color;
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD32 rgba[MI_MAX_INDEXED];
4c221b0da1816acf2ca302b10092df059484468dvboxsync miIndexType ent[32768];
4c221b0da1816acf2ca302b10092df059484468dvboxsync} miIndexedRec, *miIndexedPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \
4c221b0da1816acf2ca302b10092df059484468dvboxsync (((s) >> 6) & 0x03e0) | \
4c221b0da1816acf2ca302b10092df059484468dvboxsync (((s) >> 9) & 0x7c00))
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15])
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24))
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)])
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT int
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiCreatePicture (PicturePtr pPicture);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiDestroyPicture (PicturePtr pPicture);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiDestroyPictureClip (PicturePtr pPicture);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT int
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiChangePictureClip (PicturePtr pPicture,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int type,
4c221b0da1816acf2ca302b10092df059484468dvboxsync pointer value,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int n);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiChangePicture (PicturePtr pPicture,
4c221b0da1816acf2ca302b10092df059484468dvboxsync Mask mask);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiValidatePicture (PicturePtr pPicture,
4c221b0da1816acf2ca302b10092df059484468dvboxsync Mask mask);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT int
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiChangePictureTransform (PicturePtr pPicture,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictTransform *transform);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT int
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiChangePictureFilter (PicturePtr pPicture,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int filter,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xFixed *params,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int nparams);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiCompositeSourceValidate (PicturePtr pPicture,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 x,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 y,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD16 width,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD16 height);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiComputeCompositeRegion (RegionPtr pRegion,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pMask,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xMask,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 yMask,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 yDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD16 width,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD16 height);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiRealizeGlyph (ScreenPtr pScreen,
4c221b0da1816acf2ca302b10092df059484468dvboxsync GlyphPtr glyph);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiUnrealizeGlyph (ScreenPtr pScreen,
4c221b0da1816acf2ca302b10092df059484468dvboxsync GlyphPtr glyph);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiGlyphs (CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int nlist,
4c221b0da1816acf2ca302b10092df059484468dvboxsync GlyphListPtr list,
4c221b0da1816acf2ca302b10092df059484468dvboxsync GlyphPtr *glyphs);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiRenderColorToPixel (PictFormatPtr pPict,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xRenderColor *color,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD32 *pixel);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiRenderPixelToColor (PictFormatPtr pPict,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD32 pixel,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xRenderColor *color);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiIsSolidAlpha (PicturePtr pSrc);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiCompositeRects (CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xRenderColor *color,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int nRect,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xRectangle *rects);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiTrapezoids (CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int ntrap,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xTrapezoid *traps);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiPointFixedBounds (int npoint, xPointFixed *points, BoxPtr bounds);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiTriangleBounds (int ntri, xTriangle *tris, BoxPtr bounds);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiTriangles (CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int ntri,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xTriangle *tris);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiTriStrip (CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int npoint,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xPointFixed *points);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiTriFan (CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int npoint,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xPointFixed *points);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT PicturePtr
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiCreateAlphaPicture (ScreenPtr pScreen,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr pPictFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD16 width,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD16 height);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiInitIndexed (ScreenPtr pScreen,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr pFormat);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiCloseIndexed (ScreenPtr pScreen,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr pFormat);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void
4c221b0da1816acf2ca302b10092df059484468dvboxsyncmiUpdateIndexed (ScreenPtr pScreen,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr pFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int ndef,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xColorItem *pdef);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif /* _MIPICT_H_ */