LINUX.ORG.RU

[Xlib] Как получить верный colormap для XImage?

 


0

0

Приложение на Xlib, в процессе работы формирует картинки в XImage. Возникла необходимость передать их по сети другому приложению (приложение qt'ное). Для этого формирую и отправляю QImage. Но с ним возникла проблема в восьмибитном цвете (этот режим обязательно нужен) -- нужно подставить в QImage правильный colortable, чего мне сделать не удаётся. Я посмотрел в исходники qt, там у QPixmap есть похожая функция -- convertToImage, попытался её скопировать но она цепляет неверную таблицу цветов. Породить QPixmap не могу, т.к. он уже требует присутствия полноценного QPaintDevice, которому нужен QApplication, а т.к. у меня приложение на xlib всё это городить для меня не вариант. Гугл из нормальной информации выдал такой алгоритм:

create an 8bpp QImage; retrieve the entire colormap for the XImage; set the colormap entries of the QImage to the retrieved colormap values for(0 <= y < h, 0 <= x < w) qimg.setPixel(x, y, XGetPixel(ximg, x, y))

Но проблему это не решает, т.к. как именно получить нужный colormap для XImage я не знаю. Я пробовал использовать и DefaultColormap и colormap окна (через XGetWindowAttributes) -- всё равно цвета искажаются (обычно только зелёные передаются более-менее верно). По идее у меня должен использоваться colormap по-умолчанию, т.к. окно создаётся через XCreateSimpleWindow. O'Reilly's Xlib Programming Manual смотрел, гуглил, но пока правильного способа не нашёл. Есть идеи как вытянуть правильные цвета из XImage?

>проблема в восьмибитном цвете (этот режим обязательно нужен)

Создавай QImage в rgb32, затем конвертируй в indexed.

summatus
()
Ответ на: комментарий от summatus

Не получится. Оригинальный XImage у меня всё равно восьмибитный. Даже если создать QImage с depth 32 для того чтобы конвертор отработал нормально нужен colormap. Который я как раз и не знаю как получить.

Praktik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.