Теперь мы добрались до самого
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 драйвер.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий