Bool XeviQueryExtension (Display *dpy);
Bool XeviQueryVersion (Display *dpy, int *major_version_return, int *minor_version_return);
int XeviGetVisualInfo (Display *dpy, VisualID *visual, int n_visual, ExtendedVisualInfo ** evi_return, int * n_info_return);
The EVI application programming library contains the interfaces described below. With the exception of XeviQueryExtension, if any of these routines are called with a display that does not support the extension, the ExtensionErrorHandler (which can be set with XSetExtensionErrorHandler and functions the same way as XSetErrorHandler) will be called and the function will then return.
XeviQueryExtension returns True if the Extended Visual Information extension is available on the given display. A client must call XeviQueryExtension before calling any other EVI function in order to negotiate a compatible protocol version; otherwise the client will get undefined behavior (EVI may or may not work).
XeviQueryVersion returns True if the request succeeded; the values of the major and minor protocol version supported by the server are returned in major_version_return and minor_version_return.
XeviGetVisualInfo returns a list of ExtendedVisualInfo structures that describe visual information beyond that supported by the core protocol. This includes layer information relevant for systems supporting overlays and/or underlay planes, and information that allows applications better to determine the level of hardware support for multiple colormaps. XeviGetVisualInfo returns Success if successful, or an X error otherwise. If the argument visual is NULL, then information for all visuals of all screens is returned. Otherwise, it's a pointer to a list of visuals for which extended visual information is desired. n_visual is the number of elements in the array visual. evi_return returns a pointer to a list of ExtendedVisualInfo. When done, the client should free the list using XFree. n_info_return returns the number of elements in the array evi_return.
The
ExtendedVisualInfo
structure has the following fields:
VisualID _c_o_r_e___v_i_s_u_a_l___i_d int _s_c_r_e_e_n int _l_e_v_e_l unsigned int _t_r_a_n_s_p_a_r_e_n_c_y___t_y_p_e unsigned int _t_r_a_n_s_p_a_r_e_n_c_y___v_a_l_u_e unsigned int _m_i_n___h_w___c_o_l_o_r_m_a_p_s unsigned int _m_a_x___h_w___c_o_l_o_r_m_a_p_s unsigned int _n_u_m___c_o_l_o_r_m_a_p___c_o_n_f_l_i_c_t_s VisualID * _c_o_l_o_r_m_a_p___c_o_n_f_l_i_c_t_s
The combination of core_visual_id and screen number uniquely specify the visual being described.
level returns the level number for the visual, 0 for normal planes, > 0 for overlays, < 0 for underlays.
transparency_type returns the type of transparency supported by the visual. XEVI_TRANSPARENCY_NONE if there are no transparent pixels, XEVI_TRANSPARENCY_PIXEL if the visual supports a transparent pixel, XEVI_TRANSPARENCY_MASK if the visual supports transparent plane(s).
transparency_value returns the pixel/plane value to set for transparency if transparency_type isn't XEVI_TRANSPARENCY_NONE.
min_hw_colormaps and max_hw_colormaps return the minimum and maximum number of hardware colormaps backing up the visual.
num_colormap_conflicts returns the number of elements in colormap_conflicts. This array returns a list of visuals that may cause conflicts in the use of the hardware colormap. For example, if a 12-bit hardware colormap is overloaded to support 8-bit colormaps, the corresponding 8-bit visuals would conflict with the 12-bit visuals.