BeOS - статьи


Как написать драйвер принтера в BeOS - часть 4



current/src/add-ons/print/shared/ CVS-репозитория OBOS. Заголовочный файл
PrintTransport.h находится в каталоге current/headers/private/print.

Печатаем задание печати

Теперь мы добрались до самого ядра драйвера. Этот прототип функции вызывается сервером печати, когда все готово:

BMessage* take_job(BFile* print_job, BNode* spool_folder, BMessage* settings);

Задание печати передается в print_job. Формат задания будет описан далее. Атрибуты спулера печати могут быть доступны через spool_folder, а в settings передаются параметры страницы, например ее размер.

Для передачи задания на принтер, драйвер должен загрузить к этому времени транспортный модуль и получить указатель на объект BDataIO.

Для чтения задания печати может быть использован класс PrintJobReader. Его можно найти в репозитории OBOS. Небольшой фрагмент кода демонстрирует как этот класс может быть использован:

PrintJobReader reader(print_job); if (reader.InitCheck() == B_OK) { // the settings stored in the print job BMessage* settings = reader.JobSettings();

// получим номер первой страницы int32 firstPage = reader.FirstPage();

// получим номер последней станицы int32 lastPage = reader.LastPage();

// размер бумаги и размер печатаемой области BRect paperRect = reader.PaperRect(); BRect printableRect = reader.PrintableRect();

// разрешение int32 xdpi, ydpi; reader.GetResolution(pi, &ydpi);

int32 pages = reader.NumberOfPages(); // для каждой страницы for (int page = 0; page < pages; page ++) {

PrintJobPage pjp;

if (reader.GetPage(page, pjp) == B_OK) { BPicture picture; BPoint point; BRect rect;

// для каждого изображения на странице while (pjp.NextPicture(picture, point, rect) == B_OK) { // проделываем "черную работу" с каждым изображением } } } }



Описание предпечатной обработки данных драйвером не попадает в рамки этой статьи, но вы можете посмотреть примеры драйверов в репозитории OBOS. Примеры растровых драйверов Canon LIPS, PCL5 или PCL6 драйвера. Примером «векторного» драйвера будет OBOS PDF драйвер.



Начало  Назад  Вперед



Книжный магазин