libc: BGI Фаза 2d-2 — setlinestyle (стили и толщина линий)
setlinestyle/getlinesettings: SOLID/DOTTED/CENTER/DASHED/USERBIT + NORM/THICK. _bgi_styled_line — Брезенхэм с 16-битной маской (пропуск пикселя по биту) и дублированием ±1 перпендикулярно оси для THICK; SOLID+NORM идёт быстрым путём (accel _bgi_lineseg). line/lineto/linerel/ rectangle/drawpoly переведены на него. Проверено в MAME (tests/bgitest). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -93,6 +93,19 @@ void ellipse(int x, int y, int stangle, int endangle,
|
||||
/* Ломаная по numpoints точкам {x0,y0,x1,y1,…}; НЕ замыкается сама. */
|
||||
void drawpoly(int numpoints, const int *polypoints);
|
||||
|
||||
/* ---- Стиль линий ------------------------------------------------- *
|
||||
* Действует на line/lineto/linerel/rectangle/drawpoly. USERBIT_LINE
|
||||
* использует 16-битный upattern. thickness: NORM_WIDTH или THICK_WIDTH.
|
||||
* (Окружности/дуги пока всегда сплошные 1px — упрощение.) */
|
||||
enum { SOLID_LINE = 0, DOTTED_LINE, CENTER_LINE, DASHED_LINE, USERBIT_LINE };
|
||||
#define NORM_WIDTH 1
|
||||
#define THICK_WIDTH 3
|
||||
|
||||
struct linesettingstype { int linestyle; unsigned upattern; int thickness; };
|
||||
|
||||
void setlinestyle(int linestyle, unsigned upattern, int thickness);
|
||||
void getlinesettings(struct linesettingstype *lineinfo);
|
||||
|
||||
/* ---- Заливки ----------------------------------------------------- *
|
||||
* Стиль заливки — паттерн (8×8) + цвет; действует на bar/bar3d/
|
||||
* fillpoly/fillellipse. SOLID_FILL заполняет сплошняком, EMPTY_FILL —
|
||||
|
||||
Reference in New Issue
Block a user