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 1935c4bbdfSmrg * 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 3035c4bbdfSmrg#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 { 3735c4bbdfSmrg Bool color; 3835c4bbdfSmrg CARD32 rgba[MI_MAX_INDEXED]; 3935c4bbdfSmrg 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 5135c4bbdfSmrg miCreatePicture(PicturePtr pPicture); 5205b261ecSmrg 536747b715Smrgextern _X_EXPORT void 5435c4bbdfSmrg miDestroyPicture(PicturePtr pPicture); 5505b261ecSmrg 566747b715Smrgextern _X_EXPORT void 5735c4bbdfSmrg miCompositeSourceValidate(PicturePtr pPicture); 5805b261ecSmrg 596747b715Smrgextern _X_EXPORT Bool 6035c4bbdfSmrg 6135c4bbdfSmrgmiComputeCompositeRegion(RegionPtr pRegion, 6235c4bbdfSmrg PicturePtr pSrc, 6335c4bbdfSmrg PicturePtr pMask, 6435c4bbdfSmrg PicturePtr pDst, 6535c4bbdfSmrg INT16 xSrc, 6635c4bbdfSmrg INT16 ySrc, 6735c4bbdfSmrg INT16 xMask, 6835c4bbdfSmrg INT16 yMask, 6935c4bbdfSmrg INT16 xDst, INT16 yDst, CARD16 width, CARD16 height); 7005b261ecSmrg 716747b715Smrgextern _X_EXPORT Bool 7235c4bbdfSmrg miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats); 7305b261ecSmrg 746747b715Smrgextern _X_EXPORT Bool 7535c4bbdfSmrg miRealizeGlyph(ScreenPtr pScreen, GlyphPtr glyph); 7605b261ecSmrg 776747b715Smrgextern _X_EXPORT void 7835c4bbdfSmrg miUnrealizeGlyph(ScreenPtr pScreen, GlyphPtr glyph); 7905b261ecSmrg 806747b715Smrgextern _X_EXPORT void 8105b261ecSmrg 8235c4bbdfSmrgmiGlyphs(CARD8 op, 8335c4bbdfSmrg PicturePtr pSrc, 8435c4bbdfSmrg PicturePtr pDst, 8535c4bbdfSmrg PictFormatPtr maskFormat, 8635c4bbdfSmrg INT16 xSrc, 8735c4bbdfSmrg INT16 ySrc, int nlist, GlyphListPtr list, GlyphPtr * glyphs); 8805b261ecSmrg 896747b715Smrgextern _X_EXPORT void 9035c4bbdfSmrg miRenderColorToPixel(PictFormatPtr pPict, xRenderColor * color, CARD32 *pixel); 9105b261ecSmrg 926747b715Smrgextern _X_EXPORT void 9335c4bbdfSmrg miRenderPixelToColor(PictFormatPtr pPict, CARD32 pixel, xRenderColor * color); 9405b261ecSmrg 9535c4bbdfSmrgextern _X_EXPORT Bool 9635c4bbdfSmrg miIsSolidAlpha(PicturePtr pSrc); 9705b261ecSmrg 986747b715Smrgextern _X_EXPORT void 9905b261ecSmrg 10035c4bbdfSmrgmiCompositeRects(CARD8 op, 10135c4bbdfSmrg PicturePtr pDst, 10235c4bbdfSmrg xRenderColor * color, int nRect, xRectangle *rects); 10305b261ecSmrg 1046747b715Smrgextern _X_EXPORT void 10535c4bbdfSmrg miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box); 10605b261ecSmrg 1076747b715Smrgextern _X_EXPORT void 10835c4bbdfSmrg miPointFixedBounds(int npoint, xPointFixed * points, BoxPtr bounds); 10905b261ecSmrg 1106747b715Smrgextern _X_EXPORT void 11135c4bbdfSmrg miTriangleBounds(int ntri, xTriangle * tris, BoxPtr bounds); 11205b261ecSmrg 1136747b715Smrgextern _X_EXPORT Bool 11435c4bbdfSmrg miInitIndexed(ScreenPtr pScreen, PictFormatPtr pFormat); 11505b261ecSmrg 1166747b715Smrgextern _X_EXPORT void 11735c4bbdfSmrg miCloseIndexed(ScreenPtr pScreen, PictFormatPtr pFormat); 11805b261ecSmrg 1196747b715Smrgextern _X_EXPORT void 12005b261ecSmrg 12135c4bbdfSmrgmiUpdateIndexed(ScreenPtr pScreen, 12235c4bbdfSmrg PictFormatPtr pFormat, int ndef, xColorItem * pdef); 12335c4bbdfSmrg 12435c4bbdfSmrg#endif /* _MIPICT_H_ */ 125