Эта глава описывает как приложение может использовать сервисную службу печати 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 -- Справочник программиста |