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