Содержание | Список структур |
Эта структура используется для запроса и получения сведений о визуальных характеристиках, поддерживаемых экраном 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.
Содержание | Список структур |