Специфікація BTRON3 (Український переклад) | Розділ 7: Графічна оболонка (GUI Shell)
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.10 Менеджер TCP/IP (Повернутися)

3.11 Менеджер друку (Print Manager)

3.11.1 Функції Менеджера друку

Менеджер друку (Print Manager) керує виведенням документів на принтер, попереднім переглядом (Print Preview), чергами друку (Spooler), конфігурацією та драйверами принтерів у BTRON3.

3.11.2 Управління друком та параметри сторінки

3.11.2.1 Папір макета (Layout Paper) та папір принтера (Print Paper)

У BTRON3 розрізняють розміри логічного аркуша макета документа (TAD-сторінка) та фізичного аркуша принтера. Якщо розміри відрізняються, виконується автоматичне масштабування або розбивка на декілька фізичних сторінок (Tiling).

3.11.2.2 Параметри друку (PR_PAR)

typedef struct {
    TC      prname[L_PRNM]; /* Назва принтера */
    UH      unit;           /* Одиниці вимірювання (PR_MM = мм, PR_INCH = дюйми) */
    UH      resv1;          /* Зарезервовано */
    SIZE    size;           /* Фізичний розмір паперу принтера */
    RECT    margin;         /* Поля аркуша принтера (Print Margin) */
    UH      spec;           /* Специфікація друку (орієнтація, якість, колір) */
    UH      copies;         /* Кількість копій */
    H       start;          /* Початкова сторінка */
    H       end;            /* Кінцева сторінка */
    UH      prnvobj;        /* Друкувати/розгортати віртуальні об'єкти */
    UH      vobjdepth;      /* Глибина розгортання віртуальних об'єктів */
    SIZE    layoutsz;       /* Розмір аркуша макета документа */
    RECT    laymargin;      /* Поля макета документа */
} PR_PAR;

3.11.3 Управління чергою друку (Спулер)

3.11.3.1 Стан завдання друку (PR_STAT)

typedef struct {
    W     prid;         /* ID завдання друку */
    W     pid;          /* ID процесу, що поставив завдання */
    UW    time;         /* Час постановки у чергу */
    LINK  lnk;          /* Посилання на файл документа */
    UH    mode;         /* Режим: PR_DEL/PR_NODEL, PR_MSG/PR_NOMSG */
    UH    stat;         /* Стан: PR_WAIT, PR_ACTIVE, PR_DELETE */
    UH    rempage;      /* Залишок сторінок */
    UH    remcopy;      /* Залишок копій */
} PR_STAT;

3.11.3.2 Повідомлення про завершення друку (PR_MESG)

#define MS_PRINT    MS_MNG5     /* Тип повідомлення друку */

typedef struct {
    W   type;           /* = MS_PRINT */
    W   size;           /* Розмір тіла повідомлення (= 8) */
    W   prid;           /* ID завдання друку */
    W   code;           /* Код завершення (0 = успіх, PR_CANCEL = скасовано) */
} PR_MESG;

3.11.4 Конфігурація принтерів (PR_CONF)

#define L_DEVPAR    88      /* Довжина параметрів пристрою */
#define L_HWPAR     160     /* Довжина специфічних параметрів заліза */

typedef struct {
    TC  prname[L_PRNM];     /* Назва принтера */
    TC  hwname[L_PRNM];     /* Модель принтера */
    TC  devname[L_DEVNM];   /* Назва порту/пристрою (e.g. parallel, serial, lpr) */
    TC  drvname[L_FNM];     /* Назва файлу драйвера */
    VB  devpar[L_DEVPAR];   /* Параметри пристрою зв'язку */
    VB  hwpar[L_HWPAR];     /* Апаратні параметри принтера */
} PR_CONF;

3.11.5 Системні виклики Менеджера друку

rset_par
Display Print Dialog / Set Parameters
Відображення діалогу налаштування друку

【Синтаксис / Прототип】

WERR    rset_par(PR_PAR *par, W opt)

【Параметри】

PR_PAR *par     Параметри друку [вхід / вихід]
W       opt     Опції (PR_PAR_DEFAULT = за замовчуванням, 0 = діалог)

【Значення, що повертається】

= 0     Підтверджено (натиснуто OK)
= 1     Скасовано користувачем (Cancel)
< 0     Помилка (Код помилки)

【Детальний опис】

Відображає стандартну панель налаштувань друку для вибору принтера, діапазону сторінок, кількості копій та параметрів масштабування.

【Коди помилок】

EX_ADR  : Недопустима адреса par.
EX_PAR  : Неприпустимі параметри друку.
rprn_fil
Print File to Spooler
Постановка файлу документа в чергу друку

【Синтаксис / Прототип】

WERR    rprn_fil(LINK *lnk, PR_PAR *par, W mode)

【Параметри】

LINK   *lnk     Посилання на файл документа для друку
PR_PAR *par     Параметри друку
W       mode    Режим: PR_DEL/PR_NODEL (видалити файл після друку), PR_MSG/PR_NOMSG (повідомити про завершення)

【Значення, що повертається】

>= 0    ID зареєстрованого завдання друку (prid)
 < 0    Помилка (Код помилки)

【Детальний опис】

Реєструє документ у спулері вибраного принтера для фонового друку.

【Коди помилок】

EX_ADR  : Недопустима адреса lnk або par.
EX_NOEXS: Принтер не знайдено.
EX_NOSPC: Нестача пам'яті для черги спулера.
rout_fil
Synchronous Print File
Прямий синхронний друк файлу

【Синтаксис / Прототип】

ERR rout_fil(LINK *lnk, PR_PAR *par)

【Параметри】

LINK   *lnk     Посилання на файл документа
PR_PAR *par     Параметри друку

【Значення, що повертається】

= 0     Успішне завершення друку
< 0     Помилка (Код помилки)

【Детальний опис】

Виконує прямий синхронний друк без використання черги спулера.

【Коди помилок】

EX_ADR  : Недопустима адреса lnk або par.
EX_NOEXS: Принтер не знайдено.
rpvw_fil
Print Preview
Попередній перегляд друку у вікні

【Синтаксис / Прототип】

ERR rpvw_fil(W wid, LINK *lnk, PR_PAR *par, W page)

【Параметри】

W       wid     ID вікна для відображення
LINK   *lnk     Посилання на файл документа
PR_PAR *par     Параметри друку
W       page    Номер сторінки для перегляду

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Малює сторінку документа у вказаному вікні з урахуванням розбивки сторінок та полів принтера.

【Коди помилок】

EX_WID  : Вікно wid не існує.
EX_ADR  : Недопустима адреса lnk або par.
rcan_ent
Cancel Spool Job
Скасування завдання друку зі спулера

【Синтаксис / Прототип】

WERR    rcan_ent(TC *prname, W prid)

【Параметри】

TC *prname  Назва принтера (NULL = всі принтери)
W   prid    ID завдання (0 = всі завдання)

【Значення, що повертається】

>= 0    Кількість скасованих завдань
 < 0    Помилка (Код помилки)

【Детальний опис】

Скасовує завдання prid у черзі спулера принтера prname.

【Коди помилок】

EX_NOEXS: Принтер або завдання не знайдено.
rget_ent
Get Spool Queue Status
Отримання списку та стану завдань у черзі друку

【Синтаксис / Прототип】

WERR    rget_ent(TC *prname, W prid, PR_STAT *stat, W cnt)

【Параметри】

TC      *prname Назва принтера (NULL = всі)
W        prid   ID завдання (0 = всі)
PR_STAT *stat   Буфер для масиву PR_STAT
W        cnt    Розмір буфера stat (кількість елементів)

【Значення, що повертається】

>= 0    Кількість завдань у черзі
 < 0    Помилка (Код помилки)

【Детальний опис】

Заповнює масив stat станом активних завдань у черзі спулера.

【Коди помилок】

EX_ADR  : Недопустима адреса stat.
EX_NOEXS: Принтер не знайдено.
rlst_prn
List Printers
Отримання списку зареєстрованих принтерів

【Синтаксис / Прототип】

WERR    rlst_prn(PR_INFO *info, W cnt)

【Параметри】

PR_INFO *info   Буфер для інформації про принтери
W        cnt    Кількість елементів буфера

【Значення, що повертається】

>= 0    Загальна кількість зареєстрованих принтерів
 < 0    Помилка (Код помилки)

【Детальний опис】

Повертає перелік усіх принтерів, налаштованих у системі.

【Коди помилок】

EX_ADR  : Недопустима адреса info.
rget_cnf
Get Printer Configuration
Отримання конфігурації принтера

【Синтаксис / Прототип】

WERR    rget_cnf(TC *prname, PR_CONF *cnf)

【Параметри】

TC      *prname Назва принтера
PR_CONF *cnf    Буфер для збереження конфігурації PR_CONF

【Значення, що повертається】

>= 0    Максимальна кількість принтерів у системі
 < 0    Помилка (Код помилки)

【Детальний опис】

Зчитує конфігурацію порту, драйвера та заліза для принтера prname.

【Коди помилок】

EX_ADR  : Недопустима адреса prname або cnf.
EX_NOEXS: Принтер не знайдено.
rset_cnf
Set Printer Configuration
Налаштування / реєстрація / видалення принтера

【Синтаксис / Прототип】

ERR rset_cnf(TC *prname, PR_CONF *cnf)

【Параметри】

TC      *prname Назва принтера (NULL = додати новий)
PR_CONF *cnf    Конфігурація (NULL = видалити принтер)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Додає новий принтер (prname = NULL), змінює конфігурацію існуючого або видаляє принтер (cnf = NULL).

【Коди помилок】

EX_ADR  : Недопустима адреса cnf.
EX_EXS  : Не можна видалити принтер, що має активні завдання у черзі.
EX_LIMIT: Перевищено ліміт кількості принтерів.

Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.10 Менеджер TCP/IP (Повернутися)