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