1706f2543Smrg/* 2706f2543Smrg * 3706f2543Smrg * Copyright © 2000 SuSE, Inc. 4706f2543Smrg * 5706f2543Smrg * Permission to use, copy, modify, distribute, and sell this software and its 6706f2543Smrg * documentation for any purpose is hereby granted without fee, provided that 7706f2543Smrg * the above copyright notice appear in all copies and that both that 8706f2543Smrg * copyright notice and this permission notice appear in supporting 9706f2543Smrg * documentation, and that the name of SuSE not be used in advertising or 10706f2543Smrg * publicity pertaining to distribution of the software without specific, 11706f2543Smrg * written prior permission. SuSE makes no representations about the 12706f2543Smrg * suitability of this software for any purpose. It is provided "as is" 13706f2543Smrg * without express or implied warranty. 14706f2543Smrg * 15706f2543Smrg * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 16706f2543Smrg * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE 17706f2543Smrg * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 18706f2543Smrg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 19706f2543Smrg * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 20706f2543Smrg * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 21706f2543Smrg * 22706f2543Smrg * Author: Keith Packard, SuSE, Inc. 23706f2543Smrg */ 24706f2543Smrg 25706f2543Smrg#ifndef _MIPICT_H_ 26706f2543Smrg#define _MIPICT_H_ 27706f2543Smrg 28706f2543Smrg#include "picturestr.h" 29706f2543Smrg 30706f2543Smrg#define MI_MAX_INDEXED 256 /* XXX depth must be <= 8 */ 31706f2543Smrg 32706f2543Smrg#if MI_MAX_INDEXED <= 256 33706f2543Smrgtypedef CARD8 miIndexType; 34706f2543Smrg#endif 35706f2543Smrg 36706f2543Smrgtypedef struct _miIndexed { 37706f2543Smrg Bool color; 38706f2543Smrg CARD32 rgba[MI_MAX_INDEXED]; 39706f2543Smrg miIndexType ent[32768]; 40706f2543Smrg} miIndexedRec, *miIndexedPtr; 41706f2543Smrg 42706f2543Smrg#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \ 43706f2543Smrg (((s) >> 6) & 0x03e0) | \ 44706f2543Smrg (((s) >> 9) & 0x7c00)) 45706f2543Smrg#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15]) 46706f2543Smrg#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24)) 47706f2543Smrg 48706f2543Smrg#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)]) 49706f2543Smrg 50706f2543Smrgextern _X_EXPORT int 51706f2543SmrgmiCreatePicture (PicturePtr pPicture); 52706f2543Smrg 53706f2543Smrgextern _X_EXPORT void 54706f2543SmrgmiDestroyPicture (PicturePtr pPicture); 55706f2543Smrg 56706f2543Smrgextern _X_EXPORT void 57706f2543SmrgmiDestroyPictureClip (PicturePtr pPicture); 58706f2543Smrg 59706f2543Smrgextern _X_EXPORT int 60706f2543SmrgmiChangePictureClip (PicturePtr pPicture, 61706f2543Smrg int type, 62706f2543Smrg pointer value, 63706f2543Smrg int n); 64706f2543Smrg 65706f2543Smrgextern _X_EXPORT void 66706f2543SmrgmiChangePicture (PicturePtr pPicture, 67706f2543Smrg Mask mask); 68706f2543Smrg 69706f2543Smrgextern _X_EXPORT void 70706f2543SmrgmiValidatePicture (PicturePtr pPicture, 71706f2543Smrg Mask mask); 72706f2543Smrg 73706f2543Smrgextern _X_EXPORT int 74706f2543SmrgmiChangePictureTransform (PicturePtr pPicture, 75706f2543Smrg PictTransform *transform); 76706f2543Smrg 77706f2543Smrgextern _X_EXPORT int 78706f2543SmrgmiChangePictureFilter (PicturePtr pPicture, 79706f2543Smrg int filter, 80706f2543Smrg xFixed *params, 81706f2543Smrg int nparams); 82706f2543Smrg 83706f2543Smrgextern _X_EXPORT void 84706f2543SmrgmiCompositeSourceValidate (PicturePtr pPicture, 85706f2543Smrg INT16 x, 86706f2543Smrg INT16 y, 87706f2543Smrg CARD16 width, 88706f2543Smrg CARD16 height); 89706f2543Smrgextern _X_EXPORT Bool 90706f2543SmrgmiComputeCompositeRegion (RegionPtr pRegion, 91706f2543Smrg PicturePtr pSrc, 92706f2543Smrg PicturePtr pMask, 93706f2543Smrg PicturePtr pDst, 94706f2543Smrg INT16 xSrc, 95706f2543Smrg INT16 ySrc, 96706f2543Smrg INT16 xMask, 97706f2543Smrg INT16 yMask, 98706f2543Smrg INT16 xDst, 99706f2543Smrg INT16 yDst, 100706f2543Smrg CARD16 width, 101706f2543Smrg CARD16 height); 102706f2543Smrg 103706f2543Smrgextern _X_EXPORT Bool 104706f2543SmrgmiPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats); 105706f2543Smrg 106706f2543Smrgextern _X_EXPORT Bool 107706f2543SmrgmiRealizeGlyph (ScreenPtr pScreen, 108706f2543Smrg GlyphPtr glyph); 109706f2543Smrg 110706f2543Smrgextern _X_EXPORT void 111706f2543SmrgmiUnrealizeGlyph (ScreenPtr pScreen, 112706f2543Smrg GlyphPtr glyph); 113706f2543Smrg 114706f2543Smrgextern _X_EXPORT void 115706f2543SmrgmiGlyphs (CARD8 op, 116706f2543Smrg PicturePtr pSrc, 117706f2543Smrg PicturePtr pDst, 118706f2543Smrg PictFormatPtr maskFormat, 119706f2543Smrg INT16 xSrc, 120706f2543Smrg INT16 ySrc, 121706f2543Smrg int nlist, 122706f2543Smrg GlyphListPtr list, 123706f2543Smrg GlyphPtr *glyphs); 124706f2543Smrg 125706f2543Smrgextern _X_EXPORT void 126706f2543SmrgmiRenderColorToPixel (PictFormatPtr pPict, 127706f2543Smrg xRenderColor *color, 128706f2543Smrg CARD32 *pixel); 129706f2543Smrg 130706f2543Smrgextern _X_EXPORT void 131706f2543SmrgmiRenderPixelToColor (PictFormatPtr pPict, 132706f2543Smrg CARD32 pixel, 133706f2543Smrg xRenderColor *color); 134706f2543Smrg 135706f2543Smrgextern _X_EXPORT Bool 136706f2543SmrgmiIsSolidAlpha (PicturePtr pSrc); 137706f2543Smrg 138706f2543Smrgextern _X_EXPORT void 139706f2543SmrgmiCompositeRects (CARD8 op, 140706f2543Smrg PicturePtr pDst, 141706f2543Smrg xRenderColor *color, 142706f2543Smrg int nRect, 143706f2543Smrg xRectangle *rects); 144706f2543Smrg 145706f2543Smrgextern _X_EXPORT void 146706f2543SmrgmiTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box); 147706f2543Smrg 148706f2543Smrgextern _X_EXPORT void 149706f2543SmrgmiTrapezoids (CARD8 op, 150706f2543Smrg PicturePtr pSrc, 151706f2543Smrg PicturePtr pDst, 152706f2543Smrg PictFormatPtr maskFormat, 153706f2543Smrg INT16 xSrc, 154706f2543Smrg INT16 ySrc, 155706f2543Smrg int ntrap, 156706f2543Smrg xTrapezoid *traps); 157706f2543Smrg 158706f2543Smrgextern _X_EXPORT void 159706f2543SmrgmiPointFixedBounds (int npoint, xPointFixed *points, BoxPtr bounds); 160706f2543Smrg 161706f2543Smrgextern _X_EXPORT void 162706f2543SmrgmiTriangleBounds (int ntri, xTriangle *tris, BoxPtr bounds); 163706f2543Smrg 164706f2543Smrgextern _X_EXPORT void 165706f2543SmrgmiTriangles (CARD8 op, 166706f2543Smrg PicturePtr pSrc, 167706f2543Smrg PicturePtr pDst, 168706f2543Smrg PictFormatPtr maskFormat, 169706f2543Smrg INT16 xSrc, 170706f2543Smrg INT16 ySrc, 171706f2543Smrg int ntri, 172706f2543Smrg xTriangle *tris); 173706f2543Smrg 174706f2543Smrgextern _X_EXPORT void 175706f2543SmrgmiTriStrip (CARD8 op, 176706f2543Smrg PicturePtr pSrc, 177706f2543Smrg PicturePtr pDst, 178706f2543Smrg PictFormatPtr maskFormat, 179706f2543Smrg INT16 xSrc, 180706f2543Smrg INT16 ySrc, 181706f2543Smrg int npoint, 182706f2543Smrg xPointFixed *points); 183706f2543Smrg 184706f2543Smrgextern _X_EXPORT void 185706f2543SmrgmiTriFan (CARD8 op, 186706f2543Smrg PicturePtr pSrc, 187706f2543Smrg PicturePtr pDst, 188706f2543Smrg PictFormatPtr maskFormat, 189706f2543Smrg INT16 xSrc, 190706f2543Smrg INT16 ySrc, 191706f2543Smrg int npoint, 192706f2543Smrg xPointFixed *points); 193706f2543Smrg 194706f2543Smrgextern _X_EXPORT PicturePtr 195706f2543SmrgmiCreateAlphaPicture (ScreenPtr pScreen, 196706f2543Smrg PicturePtr pDst, 197706f2543Smrg PictFormatPtr pPictFormat, 198706f2543Smrg CARD16 width, 199706f2543Smrg CARD16 height); 200706f2543Smrg 201706f2543Smrgextern _X_EXPORT Bool 202706f2543SmrgmiInitIndexed (ScreenPtr pScreen, 203706f2543Smrg PictFormatPtr pFormat); 204706f2543Smrg 205706f2543Smrgextern _X_EXPORT void 206706f2543SmrgmiCloseIndexed (ScreenPtr pScreen, 207706f2543Smrg PictFormatPtr pFormat); 208706f2543Smrg 209706f2543Smrgextern _X_EXPORT void 210706f2543SmrgmiUpdateIndexed (ScreenPtr pScreen, 211706f2543Smrg PictFormatPtr pFormat, 212706f2543Smrg int ndef, 213706f2543Smrg xColorItem *pdef); 214706f2543Smrg 215706f2543Smrg#endif /* _MIPICT_H_ */ 216