Содержание Список структур

XVisualInfo - данные визуальных характеристик

       Эта структура используется для запроса и получения сведений о визуальных характеристиках, поддерживаемых экраном X-сервера. Она используется функциями XMatchVisualInfo и XGetVisualInfo.

       Формат этой структуры несколько различается для языков C и С++. Связано это с тем, что определенное для языка C название поля class стало конфликтовать со служебным словом class в языке C++. Вышли из этой ситуации путем определения для языка C++ другого названия этого поля.

Формат структуры для языка C:

    typedef struct {
	Visual *visual;
	VisualID visualid;
	int screen;
	unsigned int depth;
	int class;
	unsigned long red_mask;
	unsigned long green_mask;
	unsigned long blue_mask;
	int colormap_size;
	int bits_per_rgb;
    } XVisualInfo;

Формат структуры для языка C++:

    typedef struct {
	Visual *visual;
	VisualID visualid;
	int screen;
	unsigned int depth;
	int c_class;
	unsigned long red_mask;
	unsigned long green_mask;
	unsigned long blue_mask;
	int colormap_size;
	int bits_per_rgb;
    } XVisualInfo;

       При запросе визульных характеристик совместно с этой структурой используется битовая маска, определяющая, по каким полям необходимо делать подбор визуальных типов. Для каждого разряда этой маски определены следующие символьные значения:

#define   VisualNoMask           0x0
#define   VisualIDMask           0x1   /* visualid      */
#define   VisualScreenMask       0x2   /* screen        */
#define   VisualDepthMask        0x4   /* depth         */
#define   VisualClassMask        0x8   /* class         */
#define   VisualRedMaskMask      0x10  /* red_mask      */
#define   VisualGreenMaskMask    0x20  /* green_mask    */
#define   VisualBlueMaskMask     0x40  /* blue_mask     */
#define   VisualColormapSizeMask 0x80  /* colormap_size */
#define   VisualBitsPerRGBMask   0x100 /* bits_per_rgb  */
#define   VisualAllMask          0x1FF /* Все поля      */

       Поле visual используется для возвращения структуры, описывающей визуальный тип. Эта структура используется для последующей работы - при создании окон, работы с цветовыми палитрами и т.д.

       Поле visualid используется для указания идентификатора визуального типа на X-сервере.

       Поле screen хранит номера экрана, которому принадлежит визуальный тип, описываемый структурой.

       Поле depth указывает глубину цветности экрана. Глубина указывается в количестве разрядов, отводимых на описание цвета одной точки.

       Поле class хранит визуальный класс. В библиотеке Xlib определены следующие символьные значения классов:

       Поля red_mask, green_mask и blue_mask хранят битовые маски, определяющие принадлежность соответствующих разрядов для описания значения яркости каналов красного, зеленого и синего цветов. Единицы, установленные в масках указывают на принадлежность разряда к соответствующего канала цвета. Один и тот-же разряд не может быть установлен в разных масках.

       Поле colormap_size хранит размер палитры, возможный для этого визуального типа.

       Поле bits_per_rgb указывает количество разрядов, отводимых для значений яркости цветовых каналов красного, зеленого и синего.

См. также: XMatchVisualInfo, XGetVisualInfo, XVisualIDFromVisual.


Содержание Список структур