2015-10-31 2 views
0

Я относительно новичок в X11 и расширяю приложение X11. Мне нужно преобразовать цвет в переменную типа Pixel в его компоненты RGB. Я понимаю, что это зависит от визуализации приложения. Для TrueColor и DirectColor visuals Я могу посмотреть на XVisualInfo и использовать bits_per_rgb и {red,green,blue}_mask членов.X11: преобразовать значение пикселя в RGB

Но что делать для PseudoColor или другие визуальные эффекты? Что мне нужно, это такая функция, как

void PixelToRGB(Pixel p, XVisualInfo *v, uint16_t *r, uint16_t *g, uint16_t *b) 

Я читаю Xlib программирование руководства, но пока не могу найти информацию, как реализовать такую ​​функцию.

ответ

1

Я не программировал Xlib, так что это образовательные догадки, но вы должны иметь возможность получить ColorMap из XWindowAttributes соответствующего окна, а значение пикселя будет индексом в цветовой карте. По-видимому, поиск выполняется путем наложения пикселя на XColor и вызова XQueryColor с ним, в котором будут заполнены поля XColorred, green и blue. Я полагаю, что это также должно быть сделано даже с изображениями DirectColor и TrueColor, так как цветовая палитра может содержать такие вещи, как гамма-коррекции и, возможно, более необычные вещи (странные эффекты цветового циклирования?) В случае визуализации DirectColor.

+0

'XQueryColor' - это именно то, что мне нужно. Благодаря! – Jens

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