HP Workstation zx2000 HP Graphics Administration Guide for HP-UX 11.X (IPF ver - Page 53

ATI Fire GL4 configuration hints, overlay visuals and overlay transparency

Page 53 highlights

configuring an X Server on HP-UX ATI Fire GL4 configuration hints overlay visuals and overlay transparency ATI Fire GL4 devices have one visual in the overlay planes, depth-8 PseudoColor. To allow applications to determine which visuals are in the overlay planes, overlay visuals are listed in the "SERVER_OVERLAY_VISUALS" property attached to the root window. The default 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) { /* Since the Atom exists, request the property's contents. */ bytesAfter = 0; numLongs = (nVisuals * sizeof(OverlayVisualPropertyRec) + 3 ) / 4; XGetWindowProperty(display, RootWindow(display, screen), overlayVisualsAtom, 0, numLongs, False, AnyPropertyType, &actualType, &actualFormat, &numLongs, &bytesAfter, &pOverlayVisuals); if (bytesAfter != 0 ) {/* Serious Failure Here */} ; /* Loop through the pOverlayVisuals array. */ ... nOVisuals = numLongs/sizeof(OverlayVisualPropertyRec); Graphics Administration Guide 4-41

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

Graphics Administration Guide
4–41
configuring an X Server on HP-UX
ATI Fire GL4 configuration hints
overlay visuals and overlay transparency
ATI Fire GL4 devices have one visual in the overlay planes, depth-8 PseudoColor. To allow
applications to determine which visuals are in the overlay planes, overlay visuals are listed in the
"SERVER_OVERLAY_VISUALS" property attached to the root window. The default 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)
{
/* Since the Atom exists, request the property's contents. */
bytesAfter = 0;
numLongs = (nVisuals * sizeof(OverlayVisualPropertyRec) + 3 )
/ 4;
XGetWindowProperty(display, RootWindow(display, screen),
overlayVisualsAtom, 0, numLongs, False,
AnyPropertyType, &actualType, &actualFormat,
&numLongs, &bytesAfter, &pOverlayVisuals);
if (bytesAfter != 0 ) {/* Serious Failure Here */} ;
/* Loop through the pOverlayVisuals array. */
...
nOVisuals = numLongs/sizeof(OverlayVisualPropertyRec);