libc: BGI Фаза 2d-3 — settextstyle (масштаб и направление текста)

settextstyle/gettextsettings/textwidth/textheight: DEFAULT_FONT 8×8,
целочисленный масштаб 1..10, HORIZ/VERT (поворот 90° CCW), прозрачный
фон. Свой scaled-рендер (_bgi_draw_scaled) читает глиф через leaf
_bgi_font_rows (interleaved системный шрифт) и рисует блоки size×size
raw в одной W3-скобке. outtext/outtextxy переведены на него. Проверено
в MAME (tests/bgitest): размеры 1..4 + вертикальный текст.

Доки обновлены (Ф2d-1/2/3 готовы; осталось viewport/клиппинг).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-08 16:18:48 +03:00
parent b26560c409
commit 657c6d2955
16 changed files with 210 additions and 45 deletions
+12
View File
@@ -76,6 +76,18 @@ void _bgi_hspan_raw(int x, int y, int len, uint8_t color);
/* Raw чтение пикселя (без своей W3-скобки) — для getimage/putimage. */
unsigned _bgi_read_raw(int x, int y);
/* ---- Стиль текста (_bgi_text_state.c) ---------------------------- */
extern uint8_t _bgi_text_dir; /* HORIZ_DIR / VERT_DIR */
extern uint8_t _bgi_text_size; /* масштаб 1..10 */
/* Заполнить 8 байт строк глифа символа c (грузит шрифт при первом
* использовании) — drv256/_bgi_font_rows.c. */
void _bgi_font_rows(unsigned char c, uint8_t *rows8);
/* Нарисовать строку s в (x,y) текущим стилем текста (масштаб/направление,
* цвет _bgi_fg, прозрачный фон) — _bgi_draw_scaled.c. */
void _bgi_draw_scaled(int x, int y, const char *s);
/* Залить строку [x0..x1] на y ТЕКУЩИМ стилем заливки (паттерн+цвет),
* с клипом по экрану. Вызывать между _bgi_begin/_bgi_end. */
void _bgi_fill_span(int x0, int x1, int y);