1/* 2 * 3 * Copyright © 2000 SuSE, Inc. 4 * 5 * Permission to use, copy, modify, distribute, and sell this software and its 6 * documentation for any purpose is hereby granted without fee, provided that 7 * the above copyright notice appear in all copies and that both that 8 * copyright notice and this permission notice appear in supporting 9 * documentation, and that the name of SuSE not be used in advertising or 10 * publicity pertaining to distribution of the software without specific, 11 * written prior permission. SuSE makes no representations about the 12 * suitability of this software for any purpose. It is provided "as is" 13 * without express or implied warranty. 14 * 15 * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE 17 * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 18 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 19 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 20 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 21 * 22 * Author: Keith Packard, SuSE, Inc. 23 */ 24 25#ifndef _MIPICT_H_ 26#define _MIPICT_H_ 27 28#include "picturestr.h" 29 30#define MI_MAX_INDEXED 256 /* XXX depth must be <= 8 */ 31 32#if MI_MAX_INDEXED <= 256 33typedef CARD8 miIndexType; 34#endif 35 36typedef struct _miIndexed { 37 Bool color; 38 CARD32 rgba[MI_MAX_INDEXED]; 39 miIndexType ent[32768]; 40} miIndexedRec, *miIndexedPtr; 41 42#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \ 43 (((s) >> 6) & 0x03e0) | \ 44 (((s) >> 9) & 0x7c00)) 45#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15]) 46#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24)) 47 48#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)]) 49 50extern _X_EXPORT int 51miCreatePicture (PicturePtr pPicture); 52 53extern _X_EXPORT void 54miDestroyPicture (PicturePtr pPicture); 55 56extern _X_EXPORT void 57miDestroyPictureClip (PicturePtr pPicture); 58 59extern _X_EXPORT int 60miChangePictureClip (PicturePtr pPicture, 61 int type, 62 pointer value, 63 int n); 64 65extern _X_EXPORT void 66miChangePicture (PicturePtr pPicture, 67 Mask mask); 68 69extern _X_EXPORT void 70miValidatePicture (PicturePtr pPicture, 71 Mask mask); 72 73extern _X_EXPORT int 74miChangePictureTransform (PicturePtr pPicture, 75 PictTransform *transform); 76 77extern _X_EXPORT int 78miChangePictureFilter (PicturePtr pPicture, 79 int filter, 80 xFixed *params, 81 int nparams); 82 83extern _X_EXPORT void 84miCompositeSourceValidate (PicturePtr pPicture, 85 INT16 x, 86 INT16 y, 87 CARD16 width, 88 CARD16 height); 89extern _X_EXPORT Bool 90miComputeCompositeRegion (RegionPtr pRegion, 91 PicturePtr pSrc, 92 PicturePtr pMask, 93 PicturePtr pDst, 94 INT16 xSrc, 95 INT16 ySrc, 96 INT16 xMask, 97 INT16 yMask, 98 INT16 xDst, 99 INT16 yDst, 100 CARD16 width, 101 CARD16 height); 102 103extern _X_EXPORT Bool 104miPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats); 105 106extern _X_EXPORT Bool 107miRealizeGlyph (ScreenPtr pScreen, 108 GlyphPtr glyph); 109 110extern _X_EXPORT void 111miUnrealizeGlyph (ScreenPtr pScreen, 112 GlyphPtr glyph); 113 114extern _X_EXPORT void 115miGlyphs (CARD8 op, 116 PicturePtr pSrc, 117 PicturePtr pDst, 118 PictFormatPtr maskFormat, 119 INT16 xSrc, 120 INT16 ySrc, 121 int nlist, 122 GlyphListPtr list, 123 GlyphPtr *glyphs); 124 125extern _X_EXPORT void 126miRenderColorToPixel (PictFormatPtr pPict, 127 xRenderColor *color, 128 CARD32 *pixel); 129 130extern _X_EXPORT void 131miRenderPixelToColor (PictFormatPtr pPict, 132 CARD32 pixel, 133 xRenderColor *color); 134 135extern _X_EXPORT Bool 136miIsSolidAlpha (PicturePtr pSrc); 137 138extern _X_EXPORT void 139miCompositeRects (CARD8 op, 140 PicturePtr pDst, 141 xRenderColor *color, 142 int nRect, 143 xRectangle *rects); 144 145extern _X_EXPORT void 146miTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box); 147 148extern _X_EXPORT void 149miTrapezoids (CARD8 op, 150 PicturePtr pSrc, 151 PicturePtr pDst, 152 PictFormatPtr maskFormat, 153 INT16 xSrc, 154 INT16 ySrc, 155 int ntrap, 156 xTrapezoid *traps); 157 158extern _X_EXPORT void 159miPointFixedBounds (int npoint, xPointFixed *points, BoxPtr bounds); 160 161extern _X_EXPORT void 162miTriangleBounds (int ntri, xTriangle *tris, BoxPtr bounds); 163 164extern _X_EXPORT void 165miTriangles (CARD8 op, 166 PicturePtr pSrc, 167 PicturePtr pDst, 168 PictFormatPtr maskFormat, 169 INT16 xSrc, 170 INT16 ySrc, 171 int ntri, 172 xTriangle *tris); 173 174extern _X_EXPORT void 175miTriStrip (CARD8 op, 176 PicturePtr pSrc, 177 PicturePtr pDst, 178 PictFormatPtr maskFormat, 179 INT16 xSrc, 180 INT16 ySrc, 181 int npoint, 182 xPointFixed *points); 183 184extern _X_EXPORT void 185miTriFan (CARD8 op, 186 PicturePtr pSrc, 187 PicturePtr pDst, 188 PictFormatPtr maskFormat, 189 INT16 xSrc, 190 INT16 ySrc, 191 int npoint, 192 xPointFixed *points); 193 194extern _X_EXPORT PicturePtr 195miCreateAlphaPicture (ScreenPtr pScreen, 196 PicturePtr pDst, 197 PictFormatPtr pPictFormat, 198 CARD16 width, 199 CARD16 height); 200 201extern _X_EXPORT Bool 202miInitIndexed (ScreenPtr pScreen, 203 PictFormatPtr pFormat); 204 205extern _X_EXPORT void 206miCloseIndexed (ScreenPtr pScreen, 207 PictFormatPtr pFormat); 208 209extern _X_EXPORT void 210miUpdateIndexed (ScreenPtr pScreen, 211 PictFormatPtr pFormat, 212 int ndef, 213 xColorItem *pdef); 214 215#endif /* _MIPICT_H_ */ 216