/***********************************************************************/ /* Open Visualization Data Explorer */ /* (C) Copyright IBM Corp. 1989,1999 */ /* ALL RIGHTS RESERVED */ /* This code licensed under the */ /* "IBM PUBLIC LICENSE - Open Visualization Data Explorer" */ /***********************************************************************/ /*********************************************************************/ /* I.B.M. CONFIENTIAL */ /*********************************************************************/ #include #ifndef wsutils_c_h #define wsutils_c_h /****************************************************************************** * * This file contains various typedef's, macros and procedure declarations for * a set of example utility procedures contained in the file "wsutils.c". * ******************************************************************************/ /* $Header: /home/gda/dxcvs/dx/src/exec/hwrender/starbase/wsutils.h,v 1.3 1999/05/10 15:45:39 gda Exp $ */ /* This is the actual structure returned by the X server describing the * SERVER_OVERLAY_VISUAL property. */ typedef struct { VisualID visualID; /* The VisualID of the overlay visual */ int transparentType; /* Can be None, TransparentPixel or * TransparentMask */ int value; /* Pixel value */ int layer; /* Overlay planes will always be in * layer 1 */ } OverlayVisualPropertyRec; /* This is structure also describes the SERVER_OVERLAY_VISUAL property, but * should be more useful than the one actually returned by the X server * because it actually points to the visual's XVisualInfo struct rather than * refering to the visual's ID. */ typedef struct { XVisualInfo *pOverlayVisualInfo; /* Pointer to the XVisualInfo struct */ int transparentType; /* Can be None, TransparentPixel or * TransparentMask */ int value; /* Pixel value */ int layer; /* Overlay planes will always be in * layer 1 */ } OverlayInfo; /* These macros are the values of the "transparentType" above: */ #ifndef None #define None 0 #endif #ifndef TransparentPixel #define TransparentPixel 1 #endif /* These macros define how flexible a program is when it requests a window's * creation with either the CreateImagePlanesWindow() or * CreateOverlayPlanesWindow(): */ #ifndef NOT_FLEXIBLE #define NOT_FLEXIBLE 0 #define FLEXIBLE 1 #endif /* These macros define the values of the "sbCmapHint" parameter of the * CreateImagePlanesWindow(): */ #ifndef SB_CMAP_TYPE_NORMAL #define SB_CMAP_TYPE_NORMAL 1 #endif #ifndef SB_CMAP_TYPE_MONOTONIC #define SB_CMAP_TYPE_MONOTONIC 2 #endif #ifndef SB_CMAP_TYPE_FULL #define SB_CMAP_TYPE_FULL 4 #endif /****************************************************************************** * * GetXVisualInfo() * * This routine takes an X11 Display, screen number, and returns whether the * screen supports transparent overlays and three arrays: * * 1) All of the XVisualInfo struct's for the screen. * 2) All of the OverlayInfo struct's for the screen. * 3) An array of pointers to the screen's image plane XVisualInfo * structs. * * The code below obtains the array of all the screen's visuals, and obtains * the array of all the screen's overlay visual information. It then processes * the array of the screen's visuals, determining whether the visual is an * overlay or image visual. * * If the routine sucessfully obtained the visual information, it returns zero. * If the routine didn't obtain the visual information, it returns non-zero. * ******************************************************************************/ extern int GetXVisualInfo( #if NeedFunctionPrototypes Display *display, /* Which X server (aka "display"). */ int screen, /* Which screen of the "display". */ int *transparentOverlays, /* Non-zero if there's at least one * overlay visual and if at least one * of those supports a transparent * pixel. */ int *numVisuals, /* Number of XVisualInfo struct's * pointed to to by pVisuals. */ XVisualInfo **pVisuals, /* All of the device's visuals. */ int *numOverlayVisuals, /* Number of OverlayInfo's pointed * to by pOverlayVisuals. If this * number is zero, the device does * not have overlay planes. */ OverlayInfo **pOverlayVisuals, /* The device's overlay plane visual * information. */ int *numImageVisuals, /* Number of XVisualInfo's pointed * to by pImageVisuals. */ XVisualInfo ***pImageVisuals /* The device's image visuals. */ #endif ); /****************************************************************************** * * FreeXVisualInfo() * * This routine frees the data that was allocated by GetXVisualInfo(). * ******************************************************************************/ extern void FreeXVisualInfo( #if NeedFunctionPrototypes XVisualInfo *pVisuals, OverlayInfo *pOverlayVisuals, XVisualInfo **pImageVisuals #endif ); /****************************************************************************** * * FindImagePlanesVisual() * * This routine attempts to find a visual to use to create an image planes * window based upon the information passed in. * * The "Hint" values give guides to the routine as to what the program wants. * The "depthFlexibility" value tells the routine how much the program wants * the actual "depthHint" specified. If the program can't live with the * screen's image planes visuals, the routine returns non-zero, and the * "depthObtained" and "pImageVisualToUse" return parameters are NOT valid. * Otherwise, the "depthObtained" and "pImageVisualToUse" return parameters * are valid and the routine returns zero. * * NOTE: This is just an example of what can be done. It may or may not be * useful for any specific application. * ******************************************************************************/ extern int FindImagePlanesVisual( #if NeedFunctionPrototypes Display *display, /* Which X server (aka "display"). */ int screen, /* Which screen of the "display". */ int numImageVisuals, /* Number of XVisualInfo's pointed * to by pImageVisuals. */ XVisualInfo **pImageVisuals, /* The device's image visuals. */ int sbCmapHint, /* What Starbase cmap modes will be * used with the visual. NOTE: This * is a mask of the possible values. */ int depthHint, /* Desired depth. */ int depthFlexibility, /* How much the actual value in * "depthHint" is desired. */ Visual **pImageVisualToUse, /* The screen's image visual to use. */ int *depthObtained /* Actual depth of the visual. */ #endif ); /****************************************************************************** * * FindOverlayPlanesVisual() * * This routine attempts to find a visual to use to create an overlay planes * window based upon the information passed in. * * While the CreateImagePlanesWindow() routine took a sbCmapHint, this * routine doesn't. Starbase's CMAP_FULL shouldn't be used in overlay planes * windows. This is partially because this functionality is better suited in * the image planes where there are generally more planes, and partially * because the overlay planes generally have PseudoColor visuals with one * color being transparent (the transparent normally being the "white" color * for CMAP_FULL). * * The "depthHint" values give guides to the routine as to what depth the * program wants the window to be. The "depthFlexibility" value tells the * routine how much the program wants the actual "depthHint" specified. If * the program can't live with the screen's overlay planes visuals, the * routine returns non-zero, and the "depthObtained" and "pOverlayVisualToUse" * return parameters are NOT valid. Otherwise, the "depthObtained" and * "pOverlayVisualToUse" return parameters are valid and the routine returns * zero. * * NOTE: This is just an example of what can be done. It may or may not be * useful for any specific application. * ******************************************************************************/ extern int FindOverlayPlanesVisual( #if NeedFunctionPrototypes Display *display, /* Which X server (aka "display"). */ int screen, /* Which screen of the "display". */ int numOverlayVisuals, /* Number of OverlayInfo's pointed * to by pOverlayVisuals. */ OverlayInfo *pOverlayVisuals, /* The device's overlay plane visual * information. */ int depthHint, /* Desired depth. */ int depthFlexibility, /* How much the actual value in * "depthHint" is desired. */ int transparentBackground, /* Non-zero if the visual must have * a transparent color. */ Visual **pOverlayVisualToUse, /* The screen's overlay visual to * use. */ int *depthObtained, /* Actual depth of the visual. */ int *transparentColor /* The transparent color the program * can use with the visual. */ #endif ); /****************************************************************************** * * CreateImagePlanesWindow() * * This routine creates an image planes window, potentially creates a colormap * for the window to use, and sets the window's standard properties, based * upon the information passed in to the routine. While "created," the window * has not been mapped. * * If the routine suceeds, it returns zero and the return parameters * "imageWindow", "imageColormap" and "mustFreeImageColormap" are valid. * Otherwise, the routine returns non-zero and the return parameters are * NOT valid. * * NOTE: This is just an example of what can be done. It may or may not be * useful for any specific application. * ******************************************************************************/ extern int CreateImagePlanesWindow( #if NeedFunctionPrototypes Display *display, /* Which X server (aka "display"). */ int screen, /* Which screen of the "display". */ Window parentWindow, /* Window ID of the parent window for * the created window. */ int windowX, /* Desired X coord. of the window. */ int windowY, /* Desired Y coord of the window. */ int windowWidth, /* Desired width of the window. */ int windowHeight, /* Desired height of the window. */ int windowDepth, /* Desired depth of the window. */ Visual *pImageVisualToUse, /* The window's image planes visual. */ int argc, /* Program's argc parameter. */ char *argv[], /* Program's argv parameter. */ char *windowName, /* Name to put on window's border. */ char *iconName, /* Name to put on window's icon. */ Window *imageWindow, /* Window ID of the created window. */ Colormap *imageColormap, /* The window's colormap. */ int *mustFreeImageColormap /* Non-zero if the program must call * XFreeColormap() for imageColormap. */ #endif ); /****************************************************************************** * * CreateOverlayPlanesWindow() * * This routine creates an overlay planes window, potentially creates a colormap * for the window to use, and sets the window's standard properties, based * upon the information passed in to the routine. While "created," the window * has not been mapped. * * If the routine suceeds, it returns zero and the return parameters * "overlayWindow", "overlayColormap" and "mustFreeOverlayColormap" are valid. * Otherwise, the routine returns non-zero and the return parameters are * NOT valid. * * NOTE: This is just an example of what can be done. It may or may not be * useful for any specific application. * ******************************************************************************/ int CreateOverlayPlanesWindow( #if NeedFunctionPrototypes Display *display, /* Which X server (aka "display"). */ int screen, /* Which screen of the "display". */ Window parentWindow, /* Window ID of the parent window for * the created window. */ int windowX, /* Desired X coord. of the window. */ int windowY, /* Desired Y coord of the window. */ int windowWidth, /* Desired width of the window. */ int windowHeight, /* Desired height of the window. */ int windowDepth, /* Desired depth of the window. */ Visual *pOverlayVisualToUse, /* The window's overlay planes visual.*/ int argc, /* Program's argc parameter. */ char *argv[], /* Program's argv parameter. */ char *windowName, /* Name to put on window's border. */ char *iconName, /* Name to put on window's icon. */ int transparentBackground, /* Non-zero if the window's background * should be a transparent color. */ int *transparentColor, /* The transparent color to use as the * window's background. */ Window *overlayWindow, /* Window ID of the created window. */ Colormap *overlayColormap, /* The window's colormap. */ int *mustFreeOverlayColormap/* Non-zero if the program must call * XFreeColormap() for * overlayColormap. */ #endif ); #endif /* wsutils_c_h */