4c221b0da1816acf2ca302b10092df059484468dvboxsync/*
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * All Rights Reserved.
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Permission is hereby granted, free of charge, to any person obtaining
4c221b0da1816acf2ca302b10092df059484468dvboxsync * a copy of this software and associated documentation files (the
4c221b0da1816acf2ca302b10092df059484468dvboxsync * "Software"), to deal in the Software without restriction, including
4c221b0da1816acf2ca302b10092df059484468dvboxsync * without limitation on the rights to use, copy, modify, merge,
4c221b0da1816acf2ca302b10092df059484468dvboxsync * publish, distribute, sublicense, and/or sell copies of the Software,
4c221b0da1816acf2ca302b10092df059484468dvboxsync * and to permit persons to whom the Software is furnished to do so,
4c221b0da1816acf2ca302b10092df059484468dvboxsync * subject to the following conditions:
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * The above copyright notice and this permission notice (including the
4c221b0da1816acf2ca302b10092df059484468dvboxsync * next paragraph) shall be included in all copies or substantial
4c221b0da1816acf2ca302b10092df059484468dvboxsync * portions of the Software.
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
4c221b0da1816acf2ca302b10092df059484468dvboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
4c221b0da1816acf2ca302b10092df059484468dvboxsync * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
4c221b0da1816acf2ca302b10092df059484468dvboxsync * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
4c221b0da1816acf2ca302b10092df059484468dvboxsync * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
4c221b0da1816acf2ca302b10092df059484468dvboxsync * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
4c221b0da1816acf2ca302b10092df059484468dvboxsync * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
4c221b0da1816acf2ca302b10092df059484468dvboxsync * SOFTWARE.
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/*
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Authors:
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Kevin E. Martin <kem@redhat.com>
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/** \file
4c221b0da1816acf2ca302b10092df059484468dvboxsync * This file provides access to the externally visible RENDER support
4c221b0da1816acf2ca302b10092df059484468dvboxsync * functions, global variables and macros for DMX.
4c221b0da1816acf2ca302b10092df059484468dvboxsync *
4c221b0da1816acf2ca302b10092df059484468dvboxsync * FIXME: Move function definitions for non-externally visible function
4c221b0da1816acf2ca302b10092df059484468dvboxsync * to .c file. */
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef DMXPICT_H
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define DMXPICT_H
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/** Picture private structure */
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _dmxPictPriv {
4c221b0da1816acf2ca302b10092df059484468dvboxsync Picture pict; /**< Picture ID from back-end server */
4c221b0da1816acf2ca302b10092df059484468dvboxsync Mask savedMask; /**< Mask of picture attributes saved for
4c221b0da1816acf2ca302b10092df059484468dvboxsync * lazy window creation. */
4c221b0da1816acf2ca302b10092df059484468dvboxsync} dmxPictPrivRec, *dmxPictPrivPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/** Glyph Set private structure */
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _dmxGlyphPriv {
4c221b0da1816acf2ca302b10092df059484468dvboxsync GlyphSet *glyphSets; /**< Glyph Set IDs from back-end server */
4c221b0da1816acf2ca302b10092df059484468dvboxsync} dmxGlyphPrivRec, *dmxGlyphPrivPtr;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxInitRender(void);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxResetRender(void);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern Bool dmxPictureInit(ScreenPtr pScreen,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr formats, int nformats);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxCreatePictureList(WindowPtr pWindow);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern Bool dmxDestroyPictureList(WindowPtr pWindow);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern int dmxCreatePicture(PicturePtr pPicture);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxDestroyPicture(PicturePtr pPicture);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern int dmxChangePictureClip(PicturePtr pPicture, int clipType,
4c221b0da1816acf2ca302b10092df059484468dvboxsync pointer value, int n);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxDestroyPictureClip(PicturePtr pPicture);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxChangePicture(PicturePtr pPicture, Mask mask);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxValidatePicture(PicturePtr pPicture, Mask mask);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxComposite(CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc, INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xMask, INT16 yMask,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xDst, INT16 yDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync CARD16 width, CARD16 height);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxGlyphs(CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc, PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc, INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int nlists, GlyphListPtr lists, GlyphPtr *glyphs);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxCompositeRects(CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xRenderColor *color,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int nRect, xRectangle *rects);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern Bool dmxInitIndexed(ScreenPtr pScreen, PictFormatPtr pFormat);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxCloseIndexed(ScreenPtr pScreen, PictFormatPtr pFormat);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxUpdateIndexed(ScreenPtr pScreen, PictFormatPtr pFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int ndef, xColorItem *pdef);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxTrapezoids(CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc, PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc, INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int ntrap, xTrapezoid *traps);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxTriangles(CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc, PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc, INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int ntri, xTriangle *tris);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxTriStrip(CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc, PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc, INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int npoint, xPointFixed *points);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern void dmxTriFan(CARD8 op,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PicturePtr pSrc, PicturePtr pDst,
4c221b0da1816acf2ca302b10092df059484468dvboxsync PictFormatPtr maskFormat,
4c221b0da1816acf2ca302b10092df059484468dvboxsync INT16 xSrc, INT16 ySrc,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int npoint, xPointFixed *points);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern int dmxBECreateGlyphSet(int idx, GlyphSetPtr glyphSet);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern Bool dmxBEFreeGlyphSet(ScreenPtr pScreen, GlyphSetPtr glyphSet);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern int dmxBECreatePicture(PicturePtr pPicture);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern Bool dmxBEFreePicture(PicturePtr pPicture);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/** Get the picture private data given a picture pointer */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define DMX_GET_PICT_PRIV(_pPict) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync (dmxPictPrivPtr)dixLookupPrivate(&(_pPict)->devPrivates, dmxPictPrivateKey)
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/** Set the glyphset private data given a glyphset pointer */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define DMX_SET_GLYPH_PRIV(_pGlyph, _pPriv) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync GlyphSetSetPrivate((_pGlyph), dmxGlyphSetPrivateKey, (_pPriv))
4c221b0da1816acf2ca302b10092df059484468dvboxsync/** Get the glyphset private data given a glyphset pointer */
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define DMX_GET_GLYPH_PRIV(_pGlyph) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync (dmxGlyphPrivPtr)GlyphSetGetPrivate((_pGlyph), dmxGlyphSetPrivateKey)
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif /* DMXPICT_H */