Поделиться через


Обработка поверхностей Device-Managed

Важно!

Мы рекомендуем использовать драйвер класса "Входящие" от Майкрософт iPP вместе с приложениями поддержки печати (PSA) для настройки печати в Windows 10 и 11 для разработки принтеров.

Дополнительные сведения см. в руководстве по проектированию приложений поддержки печати.

Когда Unidrv отрисовывает изображения страниц печати, он использует управляемые GDI поверхности рисования. Все изображения отрисовываются в виде растровых изображений. Для устройств с возможностями, которые не могут использоваться в этом сценарии, например с возможностью рисования векторов, можно предоставить поддержку настраиваемого драйвера для управляемой устройством поверхности рисования. Для поддержки управляемой устройством поверхности необходимо предоставить подключаемый модуль отрисовки, реализующий следующее:

Функции подключения не могут вызывать службы поддержки GDI с префиксом Eng при рисовании на поверхности, управляемой устройством. Однако они могут создать временную поверхность растрового изображения, а затем передать дескриптор этой поверхности в функции рисования с префиксом Eng (см. раздел Отрисовка задания печати).

Метод IPrintOemUni::D riverDMS вызывается при каждом отрисовке задания печати, поэтому подключаемый модуль отрисовки может указать тип поверхности отрисовки (управляемой GDI или устройством) для каждого задания. Для выбора surface на основе выбранного параметра в пользовательском интерфейсе необходимо также предоставить подключаемый модуль пользовательского интерфейса.

Рисование текста на Device-Managed Surface

Подключаемый модуль отрисовки должен подключать функцию DrvTextOut в Unidrv (наряду со всеми другими графическими функциями рисования DDI). Создание текста для управляемой устройством поверхности предполагает взаимодействие между следующими четырьмя функциями:

Ниже приведены шаги, связанные с отображением текста на управляемой устройством поверхности.

  1. GDI вызывает функцию DrvTextOut Unidrv.

  2. Unidrv вызывает функцию-перехватчик DrvTextOut подключаемого модуля отрисовки.

  3. Функция перехватчика отправляет на устройство команды для указания кисти, поворота и области обрезки текста.

  4. Функция перехватчика вызывает метод IPrintOemDriverUni::D rvUniTextOut , который использует загруженные шрифты для вывода текста. Этот метод также обрабатывает обрезку на основе глифов.

  5. Если IPrintOemDriverUni::D rvUniTextOut не может использовать загружаемый шрифт (так как шрифт недоступен или повернут), он вызывает метод IPrintOemUni::TextOutAsBitmap подключаемого модуля отрисовки, который рисует текст в виде растрового рисунка.

  6. После возврата IPrintOemDriverUni::D rvUniTextOut функция-перехватчик DrvTextOut должна рисовать подчеркивание и зачеркивание на основе прямоугольников, заданных параметром prclExtra функции DrvTextOut, с помощью векторных команд (если поддерживается).