The
The default overlay visual has 256 entries per colormap and no transparency.
The second overlay visual has 255 entries per colormap and supports transparency in the same way as the
To allow applications to determine which visuals are in the overlay planes, both overlay visuals are listed in the SERVER_OVERLAY_VISUALS property attached to the root window. The default overlay visual has a transparent type of 0 (None) while the transparent overlay visual has a transparent type of 1 (TransparentPixel).
If you need an overlay colormap that supports transparency, create the colormap using the visual that has transparency in its SERVER_OVERLAY_VISUALS property. To look at the contents of this property, you would use code similar to the following:
{ |
|
|
typedef struct { |
| |
VisualID | overlayVisualID; | |
Card32 | transparentType;/* None, TransparentPixel, TransparentMask */ | |
Card32 | value; | /* Either pixel value or pixel mask */ |
Card32 | layer; |
|
} OverlayVisualPropertyRec; | ||
OverlayVisualPropertyRec *pOverlayVisuals, *pOVis; | ||
XVisualInfo |
| getVis; |
XVisualInfo |
| *pVisuals; |
Atom | overlayVisualsAtom, actualType; | |
... |
|
|
/* Get the visuals for this screen and allocate. */ getVis.screen = screen;
pVisuals = XGetVisualInfo(display, VisualScreenMask, &getVis, &nVisuals); pOverlayVisuals = (OverlayVisualPropertyRec *)
malloc ( (size_t)nVisuals * sizeof(OverlayVisualPropertyRec) );
/* Get the overlay visual information for this screen. Obtain
*this information from the SERVER_OVERLAY_VISUALS property. */ overlayVisualsAtom = XInternAtom(display, "SERVER_OVERLAY_VISUALS", True); if (overlayVisualsAtom != None)
Page 62 | Graphics Administration Guide for |