# dmxpict.h File Reference

Go to the source code of this file.

## Data Structures

struct | _dmxPictPriv
struct | _dmxGlyphPriv

## Defines

#define | DMX_GET_PICT_PRIV(_pPict) (dmxPictPrivPtr)dixLookupPrivate(&(_pPict)->devPrivates, dmxPictPrivateKey)
#define | DMX_SET_GLYPH_PRIV(_pGlyph, _pPriv) GlyphSetSetPrivate((_pGlyph), dmxGlyphSetPrivateKey, (_pPriv))
#define | DMX_GET_GLYPH_PRIV(_pGlyph) (dmxGlyphPrivPtr)GlyphSetGetPrivate((_pGlyph), dmxGlyphSetPrivateKey)

## Typedefs

typedef struct _dmxPictPriv | dmxPictPrivRec
typedef struct _dmxPictPriv * | dmxPictPrivPtr
typedef struct _dmxGlyphPriv | dmxGlyphPrivRec
typedef struct _dmxGlyphPriv * | dmxGlyphPrivPtr

## Functions

void | dmxInitRender (void)
void | dmxResetRender (void)
Bool | dmxPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats)
void | dmxCreatePictureList (WindowPtr pWindow)
Bool | dmxDestroyPictureList (WindowPtr pWindow)
int | dmxCreatePicture (PicturePtr pPicture)
void | dmxDestroyPicture (PicturePtr pPicture)
int | dmxChangePictureClip (PicturePtr pPicture, int clipType, pointer value, int n)
void | dmxDestroyPictureClip (PicturePtr pPicture)
void | dmxChangePicture (PicturePtr pPicture, Mask mask)
void | dmxValidatePicture (PicturePtr pPicture, Mask mask)
void | dmxComposite (CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
void | dmxGlyphs (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlists, GlyphListPtr lists, GlyphPtr *glyphs)
void | dmxCompositeRects (CARD8 op, PicturePtr pDst, xRenderColor *color, int nRect, xRectangle *rects)
Bool | dmxInitIndexed (ScreenPtr pScreen, PictFormatPtr pFormat)
void | dmxCloseIndexed (ScreenPtr pScreen, PictFormatPtr pFormat)
void | dmxUpdateIndexed (ScreenPtr pScreen, PictFormatPtr pFormat, int ndef, xColorItem *pdef)
void | dmxTrapezoids (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid *traps)
void | dmxTriangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntri, xTriangle *tris)
void | dmxTriStrip (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int npoint, xPointFixed *points)
void | dmxTriFan (CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int npoint, xPointFixed *points)
int | dmxBECreateGlyphSet (int idx, GlyphSetPtr glyphSet)
Bool | dmxBEFreeGlyphSet (ScreenPtr pScreen, GlyphSetPtr glyphSet)
int | dmxBECreatePicture (PicturePtr pPicture)
Bool | dmxBEFreePicture (PicturePtr pPicture)

## Detailed Description

This file provides access to the externally visible RENDER support functions, global variables and macros for DMX.

FIXME: Move function definitions for non-externally visible function to .c file.

## Define Documentation

#define DMX_GET_GLYPH_PRIV | ( |  | _pGlyph | ) | (dmxGlyphPrivPtr)GlyphSetGetPrivate((_pGlyph), dmxGlyphSetPrivateKey)

Get the glyphset private data given a glyphset pointer

Referenced by dmxBECreateGlyphSet(), dmxBEFreeGlyphSet(), dmxBERestoreRenderGlyph(), dmxProcRenderAddGlyphs(), dmxProcRenderCompositeGlyphs(), dmxProcRenderFreeGlyphs(), and dmxProcRenderFreeGlyphSet().

#define DMX_GET_PICT_PRIV | ( |  | _pPict | ) | (dmxPictPrivPtr)dixLookupPrivate(&(_pPict)->devPrivates, dmxPictPrivateKey)

Get the picture private data given a picture pointer

Referenced by dmxBECreatePicture(), dmxBEFreePicture(), dmxChangePicture(), dmxChangePictureClip(), dmxComposite(), dmxCompositeRects(), dmxCreatePicture(), dmxCreatePictureList(), dmxDestroyPictureClip(), dmxProcRenderCompositeGlyphs(), dmxProcRenderSetPictureFilter(), dmxProcRenderSetPictureTransform(), dmxTrapezoids(), dmxTriangles(), dmxTriFan(), dmxTriStrip(), and dmxValidatePicture().

#define DMX_SET_GLYPH_PRIV | ( |  | _pGlyph,
|  |  | _pPriv
| ) |  | GlyphSetSetPrivate((_pGlyph), dmxGlyphSetPrivateKey, (_pPriv))

Set the glyphset private data given a glyphset pointer

Referenced by dmxProcRenderCreateGlyphSet(), and dmxProcRenderFreeGlyphSet().

## Typedef Documentation

typedef struct _dmxGlyphPriv * dmxGlyphPrivPtr

typedef struct _dmxGlyphPriv dmxGlyphPrivRec

Glyph Set private structure

typedef struct _dmxPictPriv * dmxPictPrivPtr

typedef struct _dmxPictPriv dmxPictPrivRec

Picture private structure

## Function Documentation

int dmxBECreateGlyphSet | ( | int | idx,
|  | GlyphSetPtr | glyphSet
| ) |  |

Create glyphSet on the backend screen number idx.

References _DMXScreenInfo::beDisplay, DMX_GET_GLYPH_PRIV, dmxFindFormat(), dmxGlyphErrorHandler(), dmxGlyphLastError, dmxScreens, and _dmxGlyphPriv::glyphSets.

Referenced by dmxBERestoreRenderGlyph(), and dmxProcRenderCreateGlyphSet().

int dmxBECreatePicture | ( | PicturePtr | pPicture | ) |

Create pPicture on the backend.

References DMX_GET_PICT_PRIV, dmxDoCreatePicture(), dmxValidatePicture(), and _dmxPictPriv::pict.

Referenced by dmxBERestoreRenderPict().

Bool dmxBEFreeGlyphSet | ( | ScreenPtr | pScreen,
|  | GlyphSetPtr | glyphSet
| ) |  |

Free glyphSet on back-end screen number idx.

References _DMXScreenInfo::beDisplay, DMX_GET_GLYPH_PRIV, dmxScreens, and _dmxGlyphPriv::glyphSets.

Referenced by dmxBECreateResources(), dmxBEDestroyResources(), dmxProcRenderCreateGlyphSet(), and dmxProcRenderFreeGlyphSet().

Bool dmxBEFreePicture | ( | PicturePtr | pPicture | ) |

Destroy pPicture on the back-end server.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, dmxScreens, and _dmxPictPriv::pict.

Referenced by dmxBEDestroyResources(), dmxDestroyPicture(), and dmxDestroyPictureList().

void dmxChangePicture | ( | PicturePtr | pPicture,
|  | Mask | mask
| ) |  |

Change the attributes of the pictures. If the picture has not yet been created due to lazy window creation, save the mask so that it can be used to appropriately initialize the picture's attributes when it is created later.

References DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxChangePicture(), dmxScreens, and _dmxPictPriv::savedMask.

Referenced by dmxChangePicture(), and dmxPictureInit().

int dmxChangePictureClip | ( | PicturePtr | pPicture,
|  | int | clipType,
|  | pointer | value,
|  | int | n
| ) |  |

Change the picture's list of clip rectangles.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxChangePictureClip(), dmxScreens, dmxSync(), and _dmxPictPriv::pict.

Referenced by dmxChangePictureClip(), and dmxPictureInit().

void dmxCloseIndexed | ( | ScreenPtr | pScreen,
|  | PictFormatPtr | pFormat
| ) |  |

Indexed color visuals are not yet supported.

void dmxComposite | ( | CARD8 | op,
|  | PicturePtr | pSrc,
|  | PicturePtr | pMask,
|  | PicturePtr | pDst,
|  | INT16 | xSrc,
|  | INT16 | ySrc,
|  | INT16 | xMask,
|  | INT16 | yMask,
|  | INT16 | xDst,
|  | INT16 | yDst,
|  | CARD16 | width,
|  | CARD16 | height
| ) |  |

Composite a picture on the appropriate screen by combining the specified rectangle of the transformed src and mask operands with the specified rectangle of the dst using op as the compositing operator. For a complete description see the protocol document of the RENDER library.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxComposite(), dmxScreens, dmxSync(), and _dmxPictPriv::pict.

Referenced by dmxComposite(), and dmxPictureInit().

void dmxCompositeRects | ( | CARD8 | op,
|  | PicturePtr | pDst,
|  | xRenderColor * | color,
|  | int | nRect,
|  | xRectangle * | rects
| ) |  |

Fill a rectangle on the appropriate screen by combining the color with the dest picture in the area specified by the list of rectangles. For a complete description see the protocol document of the RENDER library.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxCompositeRects(), dmxScreens, dmxSync(), and _dmxPictPriv::pict.

Referenced by dmxCompositeRects(), and dmxPictureInit().

int dmxCreatePicture | ( | PicturePtr | pPicture | ) |

Create a picture. This function handles the CreatePicture unwrapping/wrapping and calls dmxDoCreatePicture to actually create the picture on the appropriate screen.

References DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxCreatePicture(), dmxDoCreatePicture(), dmxScreens, _dmxPictPriv::pict, and _dmxPictPriv::savedMask.

Referenced by dmxCreatePicture(), and dmxPictureInit().

void dmxCreatePictureList | ( | WindowPtr | pWindow | ) |

Create a list of pictures. This function is called by dmxCreateAndRealizeWindow() during the lazy window creation realization process. It creates the entire list of pictures that are associated with the given window.

References DMX_GET_PICT_PRIV, dmxDoCreatePicture(), and _dmxPictPriv::pict.

Referenced by dmxCreateAndRealizeWindow().

void dmxDestroyPicture | ( | PicturePtr | pPicture | ) |

Destroy a picture. This function calls the wrapped function that frees the resources in the DMX server associated with this picture.

References DMX_UNWRAP, DMX_WRAP, dmxBEFreePicture(), dmxDestroyPicture(), dmxScreens, and dmxSync().

Referenced by dmxDestroyPicture(), and dmxPictureInit().

void dmxDestroyPictureClip | ( | PicturePtr | pPicture | ) |

Destroy the picture's list of clip rectangles.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxDestroyPictureClip(), dmxScreens, dmxSync(), and _dmxPictPriv::pict.

Referenced by dmxDestroyPictureClip(), and dmxPictureInit().

Bool dmxDestroyPictureList | ( | WindowPtr | pWindow | ) |

Destroy a list of pictures that are associated with the window that is being destroyed. This function is called by dmxDestroyWindow().

References dmxBEFreePicture().

Referenced by dmxDestroyWindow().

void dmxGlyphs | ( | CARD8 | op,
|  | PicturePtr | pSrc,
|  | PicturePtr | pDst,
|  | PictFormatPtr | maskFormat,
|  | INT16 | xSrc,
|  | INT16 | ySrc,
|  | int | nlists,
|  | GlyphListPtr | lists,
|  | GlyphPtr * | glyphs
| ) |  |

Null function to catch when/if RENDER calls lower level mi hooks. Compositing glyphs is handled by dmxProcRenderCompositeGlyphs(). This function should never be called.

Referenced by dmxPictureInit().

Bool dmxInitIndexed | ( | ScreenPtr | pScreen,
|  | PictFormatPtr | pFormat
| ) |  |

Indexed color visuals are not yet supported.

void dmxInitRender | ( | void |  | ) |

Initialize the Proc Vector for the RENDER extension. The functions here cannot be handled by the mi layer RENDER hooks either because the required information is no longer available when it reaches the mi layer or no mi layer hooks exist. This function is called from InitOutput() since it should be initialized only once per server generation.

References dmxProcRenderAddGlyphs(), dmxProcRenderCompositeGlyphs(), dmxProcRenderCreateGlyphSet(), dmxProcRenderFreeGlyphs(), dmxProcRenderFreeGlyphSet(), dmxProcRenderSetPictureFilter(), dmxProcRenderSetPictureTransform(), dmxSaveRenderVector, and ProcRenderVector.

Referenced by InitOutput().

Bool dmxPictureInit | ( | ScreenPtr | pScreen,
|  | PictFormatPtr | formats,
|  | int | nformats
| ) |  |

Initialize the RENDER extension, allocate the picture privates and wrap mi function hooks. If the shadow frame buffer is used, then call the appropriate fb initialization function.

References DMX_WRAP, dmxChangePicture(), dmxChangePictureClip(), dmxComposite(), dmxCompositeRects(), dmxCreatePicture(), dmxDestroyPicture(), dmxDestroyPictureClip(), dmxGlyphs(), dmxPictPrivateKeyRec, dmxScreens, dmxShadowFB, dmxTrapezoids(), dmxTriangles(), dmxTriFan(), dmxTriStrip(), and dmxValidatePicture().

Referenced by dmxScreenInit().

void dmxResetRender | ( | void |  | ) |

Reset the Proc Vector for the RENDER extension back to the original functions. This function is called from dmxCloseScreen() during the server reset (only for screen #0).

References dmxSaveRenderVector, and ProcRenderVector.

Referenced by dmxCloseScreen().

void dmxTrapezoids | ( | CARD8 | op,
|  | PicturePtr | pSrc,
|  | PicturePtr | pDst,
|  | PictFormatPtr | maskFormat,
|  | INT16 | xSrc,
|  | INT16 | ySrc,
|  | int | ntrap,
|  | xTrapezoid * | traps
| ) |  |

Composite a list of trapezoids on the appropriate screen. For a complete description see the protocol document of the RENDER library.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxFindFormat(), dmxScreens, dmxSync(), dmxTrapezoids(), and _dmxPictPriv::pict.

Referenced by dmxPictureInit(), and dmxTrapezoids().

void dmxTriangles | ( | CARD8 | op,
|  | PicturePtr | pSrc,
|  | PicturePtr | pDst,
|  | PictFormatPtr | maskFormat,
|  | INT16 | xSrc,
|  | INT16 | ySrc,
|  | int | ntri,
|  | xTriangle * | tris
| ) |  |

Composite a list of triangles on the appropriate screen. For a complete description see the protocol document of the RENDER library.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxFindFormat(), dmxScreens, dmxSync(), dmxTriangles(), and _dmxPictPriv::pict.

Referenced by dmxPictureInit(), and dmxTriangles().

void dmxTriFan | ( | CARD8 | op,
|  | PicturePtr | pSrc,
|  | PicturePtr | pDst,
|  | PictFormatPtr | maskFormat,
|  | INT16 | xSrc,
|  | INT16 | ySrc,
|  | int | npoint,
|  | xPointFixed * | points
| ) |  |

Composite a triangle fan on the appropriate screen. For a complete description see the protocol document of the RENDER library.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxFindFormat(), dmxScreens, dmxSync(), dmxTriFan(), and _dmxPictPriv::pict.

Referenced by dmxPictureInit(), and dmxTriFan().

void dmxTriStrip | ( | CARD8 | op,
|  | PicturePtr | pSrc,
|  | PicturePtr | pDst,
|  | PictFormatPtr | maskFormat,
|  | INT16 | xSrc,
|  | INT16 | ySrc,
|  | int | npoint,
|  | xPointFixed * | points
| ) |  |

Composite a triangle strip on the appropriate screen. For a complete description see the protocol document of the RENDER library.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxFindFormat(), dmxScreens, dmxSync(), dmxTriStrip(), and _dmxPictPriv::pict.

Referenced by dmxPictureInit(), and dmxTriStrip().

void dmxUpdateIndexed | ( | ScreenPtr | pScreen,
|  | PictFormatPtr | pFormat,
|  | int | ndef,
|  | xColorItem * | pdef
| ) |  |

Indexed color visuals are not yet supported.

void dmxValidatePicture | ( | PicturePtr | pPicture,
|  | Mask | mask
| ) |  |

Validate the picture's attributes before rendering to it. Update any picture attributes that have been changed by one of the higher layers.

References _DMXScreenInfo::beDisplay, DMX_GET_PICT_PRIV, DMX_UNWRAP, DMX_WRAP, dmxScreens, dmxSync(), dmxValidatePicture(), _dmxPictPriv::pict, and _dmxPictPriv::savedMask.

Referenced by dmxBECreatePicture(), dmxPictureInit(), and dmxValidatePicture().