Приложение на 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?