libc: BGI Фаза 2b — заливки (setfillstyle/bar/bar3d/fillpoly/fillellipse)
setfillstyle/getfillsettings + 10 стандартных 8×8 паттернов Borland. bar теперь честно учитывает стиль заливки; bar3d (3D-брусок), fillpoly (scanline min/max по строкам через брезенхэмовский проход рёбер), fillellipse (полуширина строки через целочисленный _bgi_isqrt — без 32-бит). Общий _bgi_fill_span (SOLID/EMPTY/паттерн) с клипом, поверх raw-hline в одной W3-скобке. Проверено в MAME (tests/bgitest): solid/ hatch бары, bar3d со slash, синий fillellipse, xhatch-треугольник. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -93,6 +93,34 @@ void ellipse(int x, int y, int stangle, int endangle,
|
||||
/* Ломаная по numpoints точкам {x0,y0,x1,y1,…}; НЕ замыкается сама. */
|
||||
void drawpoly(int numpoints, const int *polypoints);
|
||||
|
||||
/* ---- Заливки ----------------------------------------------------- *
|
||||
* Стиль заливки — паттерн (8×8) + цвет; действует на bar/bar3d/
|
||||
* fillpoly/fillellipse. SOLID_FILL заполняет сплошняком, EMPTY_FILL —
|
||||
* фоновым цветом. USER_FILL пока трактуется как SOLID. */
|
||||
enum {
|
||||
EMPTY_FILL = 0, SOLID_FILL, LINE_FILL, LTSLASH_FILL, SLASH_FILL,
|
||||
BKSLASH_FILL, LTBKSLASH_FILL, HATCH_FILL, XHATCH_FILL,
|
||||
INTERLEAVE_FILL, WIDE_DOT_FILL, CLOSE_DOT_FILL, USER_FILL
|
||||
};
|
||||
|
||||
struct fillsettingstype { int pattern; int color; };
|
||||
|
||||
void setfillstyle(int pattern, int color);
|
||||
void getfillsettings(struct fillsettingstype *fillinfo);
|
||||
|
||||
/* bar — залитый прямоугольник (текущий стиль заливки, без рамки). */
|
||||
/* bar3d — 3D-брусок: перёд залит стилем заливки, рёбра — тек. цветом;
|
||||
* topflag != 0 рисует верхнюю грань. */
|
||||
void bar3d(int left, int top, int right, int bottom, int depth, int topflag);
|
||||
|
||||
/* fillpoly — залитый многоугольник (авто-замыкается); контур тек.
|
||||
* цветом, нутро — стилем заливки. Вогнутые заполняются по выпуклой
|
||||
* оболочке строк (min/max X на строку) — упрощение. */
|
||||
void fillpoly(int numpoints, const int *polypoints);
|
||||
|
||||
/* fillellipse — залитый эллипс (полуоси xradius,yradius). */
|
||||
void fillellipse(int x, int y, int xradius, int yradius);
|
||||
|
||||
/* ---- Текст ------------------------------------------------------- *
|
||||
* Шрифт 8×8 (системный). Рисуется текущим цветом на фоновом. */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user