Эта глава описывает как приложение может использовать сервисную службу печати X и соответствующий интерфейс прикладных программ для осуществления печати из приложения.
Архитектура печати в X основана на повторном использовании большей части X протокола и библиотек интерфейсов прикладных программ с X сервером, который производит преобразование в такие языки принтеров как PostScript и PCL (см. спецификацию). Соответственно, выбранная для печати виджетов модель состоит в повторном использовании кода, который производит отрисовку виджета в видеорежиме (через метод expose виджета) для отрисовки в режиме печати через сервер печати X.
Следовательно приложению необходимо только создать новые экземпляры виджетов используя виджет оболочки созданной на сервере печати X и установить ресурсы в соответствии с которыми будет производиться печать. Дополнительно, в зависимости от выбранной для отрисовки программной модели, приложение может проинструктировать виджеты для ручной их отрисовки или использовать процедуры обратного вызова для изменения состояния и содержимого виджетов между страницами.
В результате выбора такого подхода не существует четкой границы между печатью только содержимого виджетов и печатью экранного образа виджетов с высоким разрешением. Разделение между текущим содержимым и текущим видом оставется за программистом
void OKCallback(Widget w, XtPointer client_data, XtPointer call_data) { DtPrintSetupCallbackStruct *pbs = call_data; static Widget shell; static int num; /* app data to print */ if (!shell) { shell = XmPrintSetup(widget, XpGetScreenOfContext(pbs->print_display, pbs->print_context) "Print", NULL, 0); XtAddCallback(p->print_shell, XmNpageSetupCallback, PageSetupCB, #); XtAddCallback(p->print_shell, XmNpdmNotificationCallback, PdmNotifyCB, #); } num = 0; /* check print-to-file & print */ } |
Пред. | Начало | След. |
!!! MWM и ICCCM | Уровень выше | Motif 2.1 -- Справочник программиста |