Специфікація BTRON3 (Український переклад) | Розділ 6: Графічні примітиви (Display Primitives)
Повернутися до змісту розділу Графічних примітивів
Попередня сторінка: 2.3 Базові функції (Повернутися)
Наступна сторінка: 2.5 Функції виводу тексту (Перейти)

2.4 Функції малювання геометричних фігур (Figure Drawing Functions)

2.4.1 Лінії та точки

gdra_lin
Draw Line
Малювання відрізка прямої лінії (Draw Line)

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

ERR gdra_lin(GID gid, PNT *p1, PNT *p2, PAT *pat, W mode)

【Параметри】

GID  gid    Дескриптор середовища малювання
PNT *p1     Початкова точка відрізка (X1, Y1)
PNT *p2     Кінцева точка відрізка (X2, Y2)
PAT *pat    Патерн малювання лінії (NULL = суцільний колір за замовчуванням)
W    mode   Режим накладання пікселів (DM_PAINT, DM_OVER, DM_XOR тощо)

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

= 0 (E_OK) : Успішне малювання
< 0        : Помилка (EG_GID, EG_ADR, EG_PAR)

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

Проводить прямолінійний відрізок між точками p1 та p2 у середовищі gid з урахуванням товщини лінії, стилю та режиму малювання mode.

gtst_pnt
Test Pixel Value
Отримання кольору та значення пікселя в точці (Test Point)

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

ERR gtst_pnt(GID gid, PNT *p, COLOR *col, PIXVAL *pixv)

【Параметри】

GID     gid   Дескриптор середовища малювання
PNT    *p     Координати тестової точки (X, Y)
COLOR  *col   Буфер для збереження структури кольору (COLOR)
PIXVAL *pixv  Буфер для збереження сирого значення пікселя в растрі

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

= 0 (E_OK) : Успішно отримано колір пікселя
< 0        : Помилка (EG_GID, EG_ADR, EG_PAR)
gdra_pnt / gfil_pnt
Draw Point / Fill Seed
Малювання точкового пікселя та заливка замкненої області

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

ERR gdra_pnt(GID gid, PNT *p, PAT *pat, W mode)
ERR gfil_pnt(GID gid, PNT *seed, PAT *pat, W mode)

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

gdra_pnt() видобуває та зафарбовує одиночний піксель у точці p. gfil_pnt() виконує алгоритм заливки замкненої суцільної області патерном pat, починаючи з початкової точки заповнення seed (Flood Fill).

2.4.2 Прямокутники

gfra_rec / gfil_rec
Frame / Fill Rectangle
Малювання контуру та заповнення прямокутника

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

ERR gfra_rec(GID gid, RECT *r, PAT *pat, W mode)
ERR gfil_rec(GID gid, RECT *r, PAT *pat, W mode)

【Параметри】

GID   gid   Дескриптор середовища малювання
RECT *r     Координати прямокутника (left, top, right, bottom)
PAT  *pat   Патерн малювання лінії контуру або заповнення внутрішньої області
W     mode  Режим растрових операцій малювання (DM_PAINT, DM_OVER, DM_XOR)

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

gfra_rec() малює рамку/контур прямокутника r. gfil_rec() зафарбовує суцільну прямокутну область r патерном pat.

2.4.3 Прямокутники із закругленими кутами

gfra_rrc / gfil_rrc
Frame / Fill Round Rectangle
Малювання контуру та заповнення скругленого прямокутника

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

ERR gfra_rrc(GID gid, RECT *r, SIZE *rad, PAT *pat, W mode)
ERR gfil_rrc(GID gid, RECT *r, SIZE *rad, PAT *pat, W mode)

【Параметри】

GID   gid   Дескриптор середовища малювання
RECT *r     Координати прямокутника
SIZE *rad   Радіуси скруглення кутів (rad->w по X, rad->h по Y)
PAT  *pat   Патерн заповнення або контуру
W     mode  Режим малювання

2.4.4 Еліпси та кола

gfra_ovl / gfil_ovl
Frame / Fill Oval
Малювання контуру та заповнення еліпса / кола

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

ERR gfra_ovl(GID gid, RECT *r, PAT *pat, W mode)
ERR gfil_ovl(GID gid, RECT *r, PAT *pat, W mode)

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

Малюють контур або заповнюють еліпс (або коло), вписаний у прямокутник r.

2.4.5 Дуги, сектори та сегменти

gdra_arc / gfra_sec / gfil_sec / gfra_cho / gfil_cho
Arcs, Sectors, and Chords
Малювання дуги, контуру/заповнення сектора та хорди (сегмента)

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

ERR gdra_arc(GID gid, RECT *r, W start, W extent, PAT *pat, W mode)
ERR gfra_sec(GID gid, RECT *r, W start, W extent, PAT *pat, W mode)
ERR gfil_sec(GID gid, RECT *r, W start, W extent, PAT *pat, W mode)
ERR gfra_cho(GID gid, RECT *r, W start, W extent, PAT *pat, W mode)
ERR gfil_cho(GID gid, RECT *r, W start, W extent, PAT *pat, W mode)

【Параметри】

GID   gid     Дескриптор середовища малювання
RECT *r       Описовий прямокутник еліпса
W     start   Початковий кут у градусах (0 = 3 години, за годинниковою стрілкою)
W     extent  Кутовий діапазон дуги у градусах
PAT  *pat     Патерн малювання
W     mode    Режим растрової операції

2.4.6 Багатокутники та ламані лінії

gdra_pln / gfra_pol / gfil_pol
Polyline / Frame Polygon / Fill Polygon
Малювання ламаної лінії, контуру багатокутника та заповнення полігону

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

ERR gdra_pln(GID gid, PNT *pts, W npts, PAT *pat, W mode)
ERR gfra_pol(GID gid, PNT *pts, W npts, PAT *pat, W mode)
ERR gfil_pol(GID gid, PNT *pts, W npts, PAT *pat, W mode)

【Параметри】

GID  gid    Дескриптор середовища малювання
PNT *pts    Масив вершин / точок
W    npts   Кількість точок у масиві pts
PAT *pat    Патерн малювання
W    mode   Режим малювання

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

gdra_pln() малює незамкнену ламану лінію. gfra_pol() малює замкнений контур багатокутника. gfil_pol() зафарбовує внутрішню область багатокутника будь-якої складності.

2.4.7 Довільні фігури та регіони

gfil_gen / gfil_rgn
Fill Generic Shape / Fill Region
Заповнення узагальненої фігури та графічного регіону GRGN

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

ERR gfil_gen(GID gid, GSHP *shp, PAT *pat, W mode)
ERR gfil_rgn(GID gid, GRGN *rgn, PAT *pat, W mode)

2.4.8 Криві лінії (Сплайни / Безьє)

gdra_spl / gfil_spl
Draw / Fill Spline Curve
Малювання та заповнення замкненої кривої Безьє / В-сплайна

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

ERR gdra_spl(GID gid, PNT *pts, W npts, PAT *pat, W mode)
ERR gfil_spl(GID gid, PNT *pts, W npts, PAT *pat, W mode)

【Параметри】

GID  gid    Дескриптор середовища малювання
PNT *pts    Масив керуючих точок сплайна
W    npts   Кількість точок
PAT *pat    Патерн малювання
W    mode   Режим малювання

2.4.9 Операції з бітовими картами (BitBlt, Rotate, Scroll, Compress)

gcop_bmp
Copy Bitmap (BitBlt)
Копіювання блоку пікселів між бітовими картами (BitBlt)

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

ERR gcop_bmp(GID dst_gid, RECT *dst_r, GID src_gid, RECT *src_r, W mode)

【Параметри】

GID   dst_gid   Дескриптор призначального середовища
RECT *dst_r     Прямокутник призначення у dst_gid
GID   src_gid   Дескриптор джерельного середовища
RECT *src_r     Прямокутник джерела у src_gid
W     mode      Режим накладання (DM_PAINT, DM_OVER, DM_XOR)
gsav_bmp / grst_bmp / grst_mbm
Save / Restore Bitmap
Збереження та відновлення прямокутної області пікселів

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

ERR gsav_bmp(GID gid, RECT *r, BITMAP *bmap)
ERR grst_bmp(GID gid, RECT *r, BITMAP *bmap, W mode)
ERR grst_mbm(GID gid, RECT *r, BITMAP *bmap, BITMAP *mask, W mode)
grot_bmp / gscr_rec
Rotate Bitmap / Scroll Rectangle
Поворот растру (90/180/270°) та апаратне прокручування прямокутника

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

ERR grot_bmp(GID dst_gid, RECT *dst_r, GID src_gid, RECT *src_r, W angle, W mode)
ERR gscr_rec(GID gid, RECT *r, W dh, W dv, PAT *pat, W mode)

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

grot_bmp() виконує поворот растрового прямокутника на кут angle (90°, 180°, 270°). gscr_rec() здійснює швидке скролювання вмісту прямокутника r на (dh, dv) пікселів.

gsiz_cbm / gcom_bmp / gunc_bmp
Compress / Decompress Bitmap
Стиснення та розпакування бітових карт (RLE/PackBits)

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

W   gsiz_cbm(BITMAP *bmap, W format)
ERR gcom_bmp(BITMAP *bmap, B *dst, W *dst_size, W format)
ERR gunc_bmp(B *src, W src_size, BITMAP *bmap)

2.4.10 Функції перевірки потрапляння курсора (Picking)

Функції Picking перевіряють, чи потрапляє тестова точка pt у межі або на контур фігури:

BOOL gpic_lin(PNT *p1, PNT *p2, PNT *pt, W width)
BOOL gpic_rec(RECT *r, PNT *pt, W width, BOOL fill)
BOOL gpic_rrc(RECT *r, SIZE *rad, PNT *pt, W width, BOOL fill)
BOOL gpic_ovl(RECT *r, PNT *pt, W width, BOOL fill)
BOOL gpic_arc(RECT *r, W start, W extent, PNT *pt, W width)
BOOL gpic_sec(RECT *r, W start, W extent, PNT *pt, W width, BOOL fill)
BOOL gpic_cho(RECT *r, W start, W extent, PNT *pt, W width, BOOL fill)
BOOL gpic_pln(PNT *pts, W npts, PNT *pt, W width)
BOOL gpic_pol(PNT *pts, W npts, PNT *pt, W width, BOOL fill)
BOOL gpic_gen(GSHP *shp, PNT *pt, W width, BOOL fill)
BOOL gpic_spl(PNT *pts, W npts, PNT *pt, W width, BOOL fill)

Повернутися до змісту розділу Графічних примітивів
Попередня сторінка: 2.3 Базові функції (Повернутися)
Наступна сторінка: 2.5 Функції виводу тексту (Перейти)