Специфікація BTRON3 (Український переклад) | Специфікація ОС Sakamura BTRON / BTRON3
Повернутися до змісту цього розділу
Попередня сторінка: 3.5 Сегменти текстових вкладок (Повернутися)
Наступна сторінка: Глава 4 Формат / Синтаксис (Перейти)

3.6 Графічні сегменти (Figure Fusen)

3.6.1 Загальний огляд

Графічні сегменти (Figure Fusen) призначені для представлення векторних та растрових графічних елементів у форматі TAD. Перелік основних типів графічних сегментів та їхні ідентифікатори (ID) наведено у таблиці нижче.

Графічний сегментID
Графічний примітив (Figure Primitive)TS_FPRIM(0xB0)
Визначення графіки (Figure Definition)TS_FDEF(0xB1)
Графічна група (Figure Group)TS_FGRP(0xB2)
Графічний макрос / виклик (Figure Macro/Call)TS_FMAC(0xB3)
Графічні атрибути (Figure Attribute)TS_FATTR(0xB4)
Сторінка графічного сегмента (Figure Page Fusen)TS_FPAGE(0xB5)
(Зарезервовано)------(0xB6〜0xBD)
Замітка графічного сегмента (Figure Memo Fusen)TS_FMEMO(0xBE)
Графічний сегмент додатка (Application Figure Fusen)TS_FAPPL(0xBF)

Кожен графічний сегмент містить ідентифікатор типу (ID). Ідентифікатори підтипів від 0 до 127 визначені специфікацією TAD як системні, а значення від 128 до 255 відведені для специфічних розширень додатків (Application Fusen). Для сегментів додатків указується додатковий ідентифікатор додатка.

Структура графічного сегмента
Мал. 46 : Структура графічного сегмента

Графічні сегменти, як і інші види сегментів TAD, можуть розширюватися додатками. Додатки, які не підтримують окремі графічні сегменти, можуть безпечно пропускати їх без порушення обробки решти документа.

3.6.2 Графічні примітиви (Figure Primitive Segment TS_FPRIM / 0xB0)

Загальний огляд

Сегмент графічних примітивів (TS_FPRIM) визначає елементарні геометричні фігури. Примітиви поділяються на заповнені фігури, контурні (лінійні) фігури, маркерні позначки та растрові зображення. Вони безпосередньо відображаються функціями графічних примітивів (Display Primitives).

<Заповнені фігури>

Прямокутник (Rectangle)           -- Заповнений прямокутник
Скруглений прямокутник            -- Прямокутник зі скругленими кутами
Еліпс / Коло (Ellipse / Circle)   -- Заповнений еліпс або коло
Сектор (Pie / Sector)             -- Сектор, обмежений дугою та радіусами
Хорда (Chord)                     -- Сегмент, обмежений дугою та хордою
Багатокутник (Polygon)            -- Заповнений багатокутник

<Контурні / Лінійні фігури>

Відрізок прямої (Line)            -- Лінійний відрізок
Дуга (Arc)                        -- Дуга еліпса або кола
Ламана лінія (Polyline)           -- Послідовність з'єднаних відрізків
Крива / Сплайн (Curve)            -- Довільна крива або В-сплайн
Маркери (Marker)                  -- Набір точкових маркерних позначок
Трапецієподібний заповнений контур-- Заповнення областей по рядках сканування

Кожен графічний примітив містить параметри малювання, які визначають режим накладання (Mode), товщину лінії, візерунки лінії та заповнення, а також координати.

<Режим малювання (Mode)>

Режим малювання задає логічну операцію між пікселями джерела (src) та пікселями призначального зображення (dest):

        0       STORE   : (src)                         →  (result) (Прямий запис)
        1       XOR     : (src) XOR (dest)              →  (result) (Виключне АБО)
        2       OR      : (src) OR  (dest)              →  (result) (Логічне АБО)
        3       AND     : (src) AND (dest)              →  (result) (Логічне І)
        4       CPYN    : (NOT (src))                   →  (result) (Інверсія джерела)
        5       XORN    : (NOT (src)) XOR (dest)        →  (result)
        6       ORN     : (NOT (src)) OR  (dest)        →  (result)
        7       ANDN    : (NOT (src)) AND (dest)        →  (result)
        8〜255   Зарезервовано

<Атрибут лінії (l_atr)>

Параметр l_atr описується величиною типу UH (16 біт), де молодші 8 біт задають товщину лінії у пікселях, а старші 8 біт — ідентифікатор стилю лінії.

    TTTT TTTT WWWW WWWW
    W : Товщина лінії (Line Width) (8 біт) (0〜255 пікселів)
    T : ID стилю лінії (8 біт) (0〜255)

Прямокутник (Rectangle / SUBID 0):

LEN  :  18
SUBID:  0
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      f_pat           -- ID візерунка заповнення (Fill Pattern ID)
        UH      angle           -- Кут обертання (Angle)
        RECT    frame           -- Описовий прямокутник (Frame)

Скруглений прямокутник (Rounded Rectangle / SUBID 1):

LEN  :  22
SUBID:  1
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      f_pat           -- ID візерунка заповнення (Fill Pattern ID)
        UH      angle           -- Кут обертання (Angle)
        UH      rh              -- Горизонтальний радіус скруглення
        UH      rv              -- Вертикальний радіус скруглення
        RECT    frame           -- Описовий прямокутник (Frame)

Еліпс / Коло (Ellipse / Circle / SUBID 2):

LEN  :  18
SUBID:  2
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      f_pat           -- ID візерунка заповнення (Fill Pattern ID)
        UH      angle           -- Кут обертання (Angle)
        RECT    frame           -- Описовий прямокутник (Frame)

Сектор (Pie / Sector / SUBID 3):

LEN  :  26
SUBID:  3
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      f_pat           -- ID візерунка заповнення (Fill Pattern ID)
        UH      angle           -- Кут обертання (Angle)
        RECT    frame           -- Описовий прямокутник (Frame)
        PNT     start           -- Початкова точка дуги
        PNT     end             -- Кінцева точка дуги

Хорда (Chord / SUBID 4):

LEN  :  26
SUBID:  4
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      f_pat           -- ID візерунка заповнення (Fill Pattern ID)
        UH      angle           -- Кут обертання (Angle)
        RECT    frame           -- Описовий прямокутник (Frame)
        PNT     start           -- Початкова точка дуги
        PNT     end             -- Кінцева точка дуги

Багатокутник (Polygon / SUBID 5):

LEN  :  Змінна
SUBID:  5
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      f_pat           -- ID візерунка заповнення (Fill Pattern ID)
        UH      round           -- Радіус закруглення кутів
        UH      np              -- Кількість вершин (np > 2)
        PNT     pt[np]          -- Масив координат вершин (np точок)

Відрізок прямої (Line / SUBID 6):

LEN  :  14
SUBID:  6
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        PNT     start           -- Початкова точка відрізка
        PNT     end             -- Кінцева точка відрізка

Дуга еліпса / кола (Arc / SUBID 7):

LEN  :  24
SUBID:  7
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      angle           -- Кут обертання (Angle)
        RECT    frame           -- Описовий прямокутник (Frame)
        PNT     start           -- Початкова точка дуги
        PNT     end             -- Кінцева точка дуги

Ламана лінія (Polyline / SUBID 8):

LEN  :  Змінна
SUBID:  8
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      round           -- Радіус закруглення кутів
        UH      np              -- Кількість точок (np > 1)
        PNT     pt[np]          -- Масив координат точок (np точок)

Крива / В-сплайн (Curve / SUBID 9):

LEN  :  Змінна
SUBID:  9
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      l_atr           -- Атрибути лінії (Line Attribute)
        UH      l_pat           -- ID візерунка контуру (Line Pattern ID)
        UH      f_pat           -- ID візерунка заповнення (Fill Pattern ID)
        H       type            -- Тип кривої (0 = Polyline, 1 = B-Spline)
        UH      np              -- Кількість точок (np > 0)
        PNT     pt[np]          -- Масив керуючих точок (np точок)

Маркери / Точкові позначки (Marker Primitive / SUBID 10):

LEN  :  Змінна
SUBID:  10
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      marker          -- ID типу символу або значка маркера
        UH      np              -- Кількість точок (np > 0)
        PNT     pt[np]          -- Масив точок розташування маркерів (np точок)

Трапецієподібний / Рядковий заповнений контур (Scanline Fill Primitive / SUBID 11):

LEN  :  Змінна
SUBID:  11
ATTR :  UB      mode            -- Режим малювання (Mode)
DATA :  UH      f_pat           -- ID візерунка заповнення (Fill Pattern ID)
        UH      sy              -- Початкова Y-координата (вгорі)
        UH      nr              -- Кількість рядків сканування (nr)
        H       bx              -- Базовий зсув Х-координати (X-offset)
        <Для кожного рядка sr від 0 до nr-1>:
        UH      nh              -- Кількість інтервалів перетину
        UH      h[nh]           -- Масив Х-координат інтервалів (nh точок)
Структура складного заповненого контуру
Мал. 47 : Структура складного заповненого контуру

3.6.3 Визначення графічних об'єктів (Figure Definition Segment TS_FDEF / 0xB1)

Загальний огляд

Сегмент TS_FDEF задає користувацькі палітри кольорів, маски ліній, кольорові візерунки заповнення, штрихові лінії та власні маркери.

Визначення палітри кольорів (Color Palette Definition / SUBID 0):

LEN  :  Змінна
SUBID:  0
ATTR :  UB      -               -- (Зарезервовано)
DATA :  UH      nent            -- Кількість елементів палітри
        COLOR   col[nent]       -- Масив кольорів (nent елементів)

Визначення маски контуру / лінії (Line Pattern Definition / SUBID 1):

LEN  :  Змінна
SUBID:  1
ATTR :  UB      type            -- Тип візерунка (0 = 1-бітова маска)
DATA :  UH      id              -- ID візерунка
        UH      hsize           -- Горизонтальний розмір маски
        UH      vsize           -- Вертикальний розмір маски
        UB      mask[]          -- Матриця 1-бітової маски
Матриця маски візерунка
Мал. 48 : Матриця маски візерунка

Визначення кольорових візерунків заповнення (Fill Pattern Definition / SUBID 2):

LEN  :  Змінна
SUBID:  2
ATTR :  UB      type            -- Тип візерунка
DATA :  UH      id              -- ID візерунка заповнення
        UH      hsize           -- Горизонтальний розмір
        UH      vsize           -- Вертикальний розмір
        UH      ncol            -- Кількість кольорів у візерунку
        COLOR   fgcol[ncol]     -- Масив кольорів переднього плану
        COLOR   bgcol           -- Колір фону
        UH      mask[ncol]      -- ID масок заповнення
Візерунки заповнення
Мал. 49 : Візерунки заповнення
Розмір та параметри візерунків
Мал. 50 : Розмір та параметри візерунків

Визначення користувацьких штрихових ліній (User Line Style Definition / SUBID 3):

LEN  :  Змінна
SUBID:  3
ATTR :  UB      type            -- Тип стиля лінії
DATA :  UH      id              -- ID штрихової лінії
        UH      nb              -- Кількість байтів у масці штриха
        UB      mask[nb]        -- Бітова маска штрихів
Користувацька штрихова лінія
Мал. 51 : Користувацька штрихова лінія

Визначення користувацьких маркерів та значків (Custom Marker Definition / SUBID 4):

LEN  :  Змінна
SUBID:  4
ATTR :  UB      type            -- Тип маркера
DATA :  UH      id              -- ID маркера
        UH      size            -- Розмір маркера
        COLOR   fgcol           -- Колір маркера
       [UH      mask            -- ID маски]

3.6.4 Сегмент графічної групи (Figure Group Segment TS_FGRP / 0xB2)

Об'єднує кілька графічних примітивів у єдину логічну групу для спільного переміщення або трансформації.

LEN  :  4
SUBID:  0                       -- Початок групи (Group Begin)
ATTR :  UB      -               -- (Зарезервовано)
DATA :  UH      id              -- ID групи
LEN  :  2
SUBID:  1                       -- Завершення групи (Group End)
ATTR :  UB      -               -- (Зарезервовано)

3.6.5 Сегмент графічних макросів (Figure Macro Segment TS_FMAC / 0xB3)

Дозволяє оголошувати та багаторазово викликати графічні макроси за ідентифікатором ID.

LEN  :  4
SUBID:  0                       -- Початок оголошення макроса (Macro Begin)
ATTR :  UB      -               -- (Зарезервовано)
DATA :  UH      id              -- ID макроса
LEN  :  2
SUBID:  1                       -- Завершення оголошення макроса (Macro End)
ATTR :  UB      -               -- (Зарезервовано)
LEN  :  4
SUBID:  2                       -- Виклик макроса (Macro Call)
ATTR :  UB      -               -- (Зарезервовано)
DATA :  UH      id              -- ID макроса для вставки

3.6.6 Сегмент графічних атрибутів (Figure Attribute Segment TS_FATTR / 0xB4)

Керує атрибутами наконечників ліній (стрілки) та матрицями трансформації систем координат.

Атрибути наконечників та стрілок лінії (Line Arrow Attributes / SUBID 0):

LEN  :  Змінна
SUBID:  0
ATTR :  UB      type            -- Тип примітива (0: Лінія)
DATA :  UH      arrow           -- Бітова маска наконечників стрілок (ES)

Трансформація систем координат (Coordinate Transformation / SUBID 1):

LEN  :  6, 8, 10
SUBID:  1
ATTR :  UB      -               -- (Зарезервовано)
DATA :  H       dh              -- Зсув по горизонталі (X-offset)
        H       dv              -- Зсув по вертикалі (Y-offset)
       [UH      hangle          -- Кут обертання (0..360)]
       [H       vangle          -- Кут скосу/нахилу (-90..+90)]
Трансформація систем координат
Мал. 52 : Трансформація систем координат

3.6.7 Сторінки графічного сегмента (Figure Page Fusen TS_FPAGE / 0xB5)

Визначає формат графічної сторінки, поля, орієнтацію та колонтитули для векторних графічних документів.

Формат графічної сторінки (SUBID 0):

LEN  :  14
SUBID:  0
ATTR :  UB      attr            -- Орієнтація паперу та напрямок
DATA :  UH      length          -- Висота сторінки
        UH      width           -- Ширина сторінки
        UH      top             -- Верхнє поле
        UH      bottom          -- Нижнє поле
        UH      left            -- Ліве поле
        UH      right           -- Праве поле

Поля графічної сторінки (SUBID 1):

LEN  :  10
SUBID:  1
ATTR :  UB      -               -- (Зарезервовано)
DATA :  UH      top             -- Верхнє поле
        UH      bottom          -- Нижнє поле
        UH      left            -- Ліве поле
        UH      right           -- Праве поле

Графічні колонтитули (SUBID 3):

LEN  :  Змінна
SUBID:  3
ATTR :  UB      attr            -- Тип колонтитула
DATA :  UB      data[]          -- Вміст колонтитула

Фонове накладання бланків (SUBID 4):

LEN  :  4
SUBID:  4
ATTR :  UB      -               -- (Зарезервовано)
DATA :  UH      overlay         -- Бітова маска фонового накладання

Нумерація графічних сторінок (SUBID 6):

LEN  :  4
SUBID:  6
ATTR :  B       step            -- Крок нумерації
DATA :  UH      num             -- Початковий номер сторінки

3.6.8 Замітки графічного сегмента (Figure Memo Fusen TS_FMEMO / 0xBE)

Текстові примітки та коментарі рецензента до графічного сегмента.

LEN  :  Змінна
SUBID:  0
ATTR :  UB      -               -- (Зарезервовано)
DATA :  UB      memo[]          -- Символьний рядок замітки

3.6.9 Графічні сегменти додатків (Application Figure Fusen TS_FAPPL / 0xBF)

Специфічні розширення графічних даних для прикладних програм.

LEN  :  Змінна
SUBID:  -                       -- Підтип вкладки додатка
ATTR :  UB      -               -- (Зарезервовано)
DATA :  UH      appl[3]         -- Ідентифікатор додатка (Application ID)
        UB      param[]         -- Параметри та дані додатка

Додаток A. Довідник сегментів та структур даних TAD

Таблиця ідентифікаторів сегментів TAD (Segment ID List):

Тип сегментаІдентифікатор IDКод (Hex)
Інформаційний сегмент документаTS_INFO(0xE0)
Початок текстового блокуTS_TEXT(0xE1)
Завершення текстового блокуTS_TEXTEND(0xE2)
Початок графічного блокуTS_FIG(0xE3)
Завершення графічного блокуTS_FIGEND(0xE4)
Растровий блок зображенняTS_IMAGE(0xE5)
Віртуальний об'єкт (Virtual Object)TS_VOBJ(0xE6)
Даний вбудований об'єктTS_DFUSEN(0xE7)
Файл реального об'єктаTS_FFUSEN(0xE8)
Системна наліпка / шарTS_SFUSEN(0xE9)
Сегмент сторінки текстуTS_TPAGE(0xA0)
Сегмент лінійки та абзацуTS_TRULER(0xA1)
Сегмент шрифту символівTS_TFONT(0xA2)
Сегмент підкреслення текстуTS_TUB(0xA3)
Сегмент атрибутів текстуTS_TATTR(0xA4)
Сегмент стилю текстуTS_TSTYLE(0xA5)
(Зарезервовано системні вкладки)------(0xA6〜0xAC)
Змінні текстові поляTS_TVAR(0xAD)
Замітки текстуTS_TMEMO(0xAE)
Текстові вкладки додатківTS_TAPPL(0xAF)
Графічні примітивиTS_FPRIM(0xB0)
Визначення графікиTS_FDEF(0xB1)
Графічні групиTS_FGRP(0xB2)
Графічні макросиTS_FMAC(0xB3)
Графічні атрибутиTS_FATTR(0xB4)
Графічні сторінкиTS_FPAGE(0xB5)
(Зарезервовано графічні вкладки)------(0xB6〜0xBD)
Замітки графічного сегментаTS_FMEMO(0xBE)
Графічні вкладки додатківTS_FAPPL(0xBF)

Структури основних системних блоків:

Інформаційний сегмент (TS_INFO / 0xE0):

ID  :   TS_INFO
LEN :   Змінна
DATA:   UH      subid           -- ID підтипу інформації
        UH      sublen          -- Довжина даних у байтах
        UH      data[]          -- Масив інформаційних даних

Початок текстового блоку (TS_TEXT / 0xE1):

ID  :   TS_TEXT
LEN :   24
DATA:   RECT    view            -- Описовий прямокутник області перегляду
        RECT    draw            -- Прямокутник області малювання
        UNITS   h_unit          -- Одиниці вимірювання по горизонталі
        UNITS   v_unit          -- Одиниці вимірювання по вертикалі
        UH      lang            -- Код основної мови документа
        UH      bgpat           -- ID фонового візерунка

Початок графічного блоку (TS_FIG / 0xE3):

ID  :   TS_FIG
LEN :   24
DATA:   RECT    view            -- Прямокутник області перегляду
        RECT    draw            -- Прямокутник області малювання
        UNITS   h_unit          -- Одиниці вимірювання по горизонталі
        UNITS   v_unit          -- Одиниці вимірювання по вертикалі
        W       ratio           -- Масштабний коефіцієнт
Ієрархія та структура блоків TAD
Мал. 53 : Ієрархія та структура блоків TAD

Віртуальний об'єкт (Virtual Object / TS_VOBJ / 0xE6):

ID  :   TS_VOBJ
LEN :   Змінна
DATA:   RECT    view            -- Прямокутник перегляду віртуального об'єкта
        H       height          -- Висота об'єкта в базі
        CHSIZE  chsz            -- Розмір базового шрифту
        COLOR   frcol           -- Колір рамки об'єкта
        COLOR   chcol           -- Колір текстових символів
        COLOR   tbcol           -- Колір заголовка/панелі
        COLOR   bgcol           -- Колір фону
        UH      dlen            -- Довжина внутрішніх даних у байтах
        UB      data[dlen]      -- Внутрішні дані віртуального об'єкта

Вбудований файл / реальний об'єкт (TS_FFUSEN / 0xE8):

ID  :   TS_FFUSEN
LEN :   Змінна
DATA:   RECT    view            -- Прямокутник відображення
        CHSIZE  chsz            -- Розмір шрифту підпису
        COLOR   frcol           -- Колір рамки
        COLOR   chcol           -- Колір тексту
        COLOR   tbcol           -- Колір плашки
        UH      pict            -- ID піктограми / тип об'єкта
        UH      appl[3]         -- ID додатка-власника
        UB      name[32]        -- Назва об'єкта / файла
        UB      type[32]        -- Рядок типу даних
        UH      dlen            -- Довжина даних у байтах
        UB      data[dlen]      -- Масив даних

Додаток B. Напів-TAD специфікація та сумісність даних (Semi-TAD Format)

Формат Напів-TAD (Semi-TAD) призначений для спрощеного обміну даними між вбудованими пристроями або спрощеними графічними підсистемами, де не підтримується повна динамічна модель обробки реальних та віртуальних об'єктів.

Основні правила вирівнювання даних та бінарної сумісності Semi-TAD:

  1. Усі структури та елементи даних повинні вирівнюватися за межею 16-бітного слова (2 байти). Якщо довжина поля непарна, додається заповнювальний байт сокету зі значенням 0x00.
  2. Базові типи даних H, UH, W, UW, COLOR, UNITS, CHSIZE, SCALE, RATIO передаються у форматі Big-Endian (MSB First).
  3. Масиви байтів UB передаються послідовно у байтовому порядку.
Структура блоків у Semi-TAD
Мал. 54 : Структура блоків у Semi-TAD
Формат вкладок Semi-TAD
Мал. 55 : Формат вкладок Semi-TAD

Повернутися до змісту цього розділу
Попередня сторінка: 3.5 Сегменти текстових вкладок (Повернутися)
Наступна сторінка: Глава 4 Формат / Синтаксис (Перейти)