mipict.h revision 05b261ec
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 50int 51miCreatePicture (PicturePtr pPicture); 52 53void 54miDestroyPicture (PicturePtr pPicture); 55 56void 57miDestroyPictureClip (PicturePtr pPicture); 58 59int 60miChangePictureClip (PicturePtr pPicture, 61 int type, 62 pointer value, 63 int n); 64 65void 66miChangePicture (PicturePtr pPicture, 67 Mask mask); 68 69void 70miValidatePicture (PicturePtr pPicture, 71 Mask mask); 72 73int 74miChangePictureTransform (PicturePtr pPicture, 75 PictTransform *transform); 76 77int 78miChangePictureFilter (PicturePtr pPicture, 79 int filter, 80 xFixed *params, 81 int nparams); 82 83Bool 84miClipPicture (RegionPtr pRegion, 85 PicturePtr pPicture, 86 INT16 xReg, 87 INT16 yReg, 88 INT16 xPict, 89 INT16 yPict); 90 91void 92miCompositeSourceValidate (PicturePtr pPicture, 93 INT16 x, 94 INT16 y, 95 CARD16 width, 96 CARD16 height); 97Bool 98miComputeCompositeRegion (RegionPtr pRegion, 99 PicturePtr pSrc, 100 PicturePtr pMask, 101 PicturePtr pDst, 102 INT16 xSrc, 103 INT16 ySrc, 104 INT16 xMask, 105 INT16 yMask, 106 INT16 xDst, 107 INT16 yDst, 108 CARD16 width, 109 CARD16 height); 110 111Bool 112miPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats); 113 114Bool 115miRealizeGlyph (ScreenPtr pScreen, 116 GlyphPtr glyph); 117 118void 119miUnrealizeGlyph (ScreenPtr pScreen, 120 GlyphPtr glyph); 121 122void 123miGlyphExtents (int nlist, 124 GlyphListPtr list, 125 GlyphPtr *glyphs, 126 BoxPtr extents); 127 128void 129miGlyphs (CARD8 op, 130 PicturePtr pSrc, 131 PicturePtr pDst, 132 PictFormatPtr maskFormat, 133 INT16 xSrc, 134 INT16 ySrc, 135 int nlist, 136 GlyphListPtr list, 137 GlyphPtr *glyphs); 138 139void 140miRenderColorToPixel (PictFormatPtr pPict, 141 xRenderColor *color, 142 CARD32 *pixel); 143 144void 145miRenderPixelToColor (PictFormatPtr pPict, 146 CARD32 pixel, 147 xRenderColor *color); 148 149Bool 150miIsSolidAlpha (PicturePtr pSrc); 151 152void 153miCompositeRects (CARD8 op, 154 PicturePtr pDst, 155 xRenderColor *color, 156 int nRect, 157 xRectangle *rects); 158 159void 160miTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box); 161 162void 163miTrapezoids (CARD8 op, 164 PicturePtr pSrc, 165 PicturePtr pDst, 166 PictFormatPtr maskFormat, 167 INT16 xSrc, 168 INT16 ySrc, 169 int ntrap, 170 xTrapezoid *traps); 171 172void 173miPointFixedBounds (int npoint, xPointFixed *points, BoxPtr bounds); 174 175void 176miTriangleBounds (int ntri, xTriangle *tris, BoxPtr bounds); 177 178void 179miRasterizeTriangle (PicturePtr pMask, 180 xTriangle *tri, 181 int x_off, 182 int y_off); 183 184void 185miTriangles (CARD8 op, 186 PicturePtr pSrc, 187 PicturePtr pDst, 188 PictFormatPtr maskFormat, 189 INT16 xSrc, 190 INT16 ySrc, 191 int ntri, 192 xTriangle *tris); 193 194void 195miTriStrip (CARD8 op, 196 PicturePtr pSrc, 197 PicturePtr pDst, 198 PictFormatPtr maskFormat, 199 INT16 xSrc, 200 INT16 ySrc, 201 int npoint, 202 xPointFixed *points); 203 204void 205miTriFan (CARD8 op, 206 PicturePtr pSrc, 207 PicturePtr pDst, 208 PictFormatPtr maskFormat, 209 INT16 xSrc, 210 INT16 ySrc, 211 int npoint, 212 xPointFixed *points); 213 214PicturePtr 215miCreateAlphaPicture (ScreenPtr pScreen, 216 PicturePtr pDst, 217 PictFormatPtr pPictFormat, 218 CARD16 width, 219 CARD16 height); 220 221Bool 222miInitIndexed (ScreenPtr pScreen, 223 PictFormatPtr pFormat); 224 225void 226miCloseIndexed (ScreenPtr pScreen, 227 PictFormatPtr pFormat); 228 229void 230miUpdateIndexed (ScreenPtr pScreen, 231 PictFormatPtr pFormat, 232 int ndef, 233 xColorItem *pdef); 234 235#endif /* _MIPICT_H_ */ 236