2016-08-27 3 views
2

Я написал «экранный драйвер» X для проекта графического инструментария, над которым я работаю. Мой инструментарий, как последний шаг, вызывает функции Xlib, которые выводят релевантные данные на экран.Рисовать с пользовательским цветом без выделения с помощью Xlib

Проблема заключается в том, что в моем наборе инструментов цвета представлены и передаются как целые числа длиной 32 бит. Вся документация, которую я прочитал о Xlib, прибегает к использованию XAllocColor для определения каждого цвета в Colormap.

Проблема в том, что XAllocColor довольно медленный по сравнению с моей графической подпрограммой, и я бы хотел избежать распределения каждого используемого цвета (также потому, что у меня нет списка upfront).

Как я могу нарисовать что-нибудь в произвольных цветах в Xlib, не выделяя каждого из них?

+0

Не помню точно, но вы можете использовать режим DirectColor? –

+0

Из того, что я видел, но я могу ошибаться, DirectColor - это представление цвета, которое вы все равно должны выделять. –

+0

Вы правы (моя память не увенчалась успехом здесь - нет программирования Xlib с 20 лет), но разве это не 24-битный режим с TrueColor? (или что-то типа того). Я помню, что вы можете управлять фрейм-буфером для ввода 24 бит (при условии, что дисплей способен). –

ответ

1

Изменить размер объекта XColor.pixel, это длинный тип, который обычно содержит цвет в 0xAARRGGBB (32-разрядный режим RGB), но это зависит от того, какой цветовой режим вы используете на своем X-сервере.

Смежные вопросы