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