Что есть:
простую часть задачи я уже реализовал (дрова ядра, демоны, железо и общение с ним, в общем не касающееся графики напрямую):
- есть свой драйвер принтера (чисто растрового) в ядре, который представлен как character device, пусть /dev/rlp0. На это устройство можно выводить байты данных, биты которых интерпретируются как черно-белые пиксели, и можно выводить ESC-последовательности, которые интерпретируются как печать пиксельной строки, переданной до этого, переход к следующей строке (шаг движка протяжки вперед), и переход к предыдущей строке (шаг движка назад).
- есть свой простой спулер, который запускается в виде демона, обслуживает очередь печати в виде растровых черно-белых картинок, и имеет функции "добавить растровое изображение в очередь" и "очистить всю очередь и все остановить", которые доступны средствами IPC.
Я могу с легкостью написать программу (консольную разумеется), которая бы печатала картинку из любого известного формата храния изображений, на базе тест-программы, которой я все это проверял.
это все отлажено и работает.
Теперь вот воткнулся в сложную часть, где я даже не понимаю, с какой стороны подойти к вопросу. Нужно сделать, чтобы QT-приложение могло напечатать что-то на этом принтере. Либо через мой спулер (lpr/cups в системе не будет - драйвер для cups-то не проблема, там, в отличие от QT, все понятно, легко и прозрачно, но cups - монстр), либо напрямую на принтер, минуя спулер, что предпочтительнее. Задача видится вроде и несложной - QT сама формирует растровое изображение, и надо его лишь переправить в спулер или драйвер ядра. Но вот как это сделать - мне совершенно непонятно (я тупо смотрел в документацию QT (QPrintEngine), но совершенно не понял, как этому Engine передается изображение, и что она должна с ним сделать по реакции на какой метод). Как написать драйвер, который можно интегрировать в QT (я не писатель гуёв, не умею, но вот драйвера, и все прочее, не видимое глазу пользователя - моя стихия)? Принимаются любые советы, примеры, и ссылки на информацию.