b26560c409
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>
54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
/*
|
||
* bgitest — демонстрация BGI-слоя graphics.h (режим 320×256×256).
|
||
* Фаза 2d-2: setlinestyle (SOLID/DOTTED/CENTER/DASHED + THICK).
|
||
*/
|
||
|
||
#include <graphics.h>
|
||
|
||
int main(void)
|
||
{
|
||
int mx, my, i, y;
|
||
static const char *name[4] = { "SOLID", "DOTTED", "CENTER", "DASHED" };
|
||
|
||
initgraph();
|
||
mx = getmaxx();
|
||
my = getmaxy();
|
||
cleardevice();
|
||
|
||
setcolor(WHITE);
|
||
rectangle(0, 0, mx, my);
|
||
setcolor(YELLOW);
|
||
outtextxy(104, 6, "BGI linestyle");
|
||
|
||
/* Четыре стиля тонкой линией. */
|
||
for (i = 0; i < 4; i++) {
|
||
y = 40 + i * 22;
|
||
setcolor(WHITE);
|
||
outtextxy(12, y - 3, name[i]);
|
||
setcolor(LIGHTGREEN);
|
||
setlinestyle(i, 0, NORM_WIDTH);
|
||
line(80, y, 300, y);
|
||
}
|
||
|
||
/* Толстые версии тех же стилей. */
|
||
for (i = 0; i < 4; i++) {
|
||
y = 140 + i * 16;
|
||
setcolor(LIGHTCYAN);
|
||
setlinestyle(i, 0, THICK_WIDTH);
|
||
line(80, y, 300, y);
|
||
}
|
||
setcolor(WHITE);
|
||
outtextxy(12, 150, "THICK");
|
||
|
||
/* Прямоугольник пунктиром + диагонали. */
|
||
setcolor(LIGHTMAGENTA);
|
||
setlinestyle(DASHED_LINE, 0, NORM_WIDTH);
|
||
rectangle(20, 212, 130, 250);
|
||
line(20, 212, 130, 250);
|
||
setcolor(WHITE);
|
||
setlinestyle(SOLID_LINE, 0, NORM_WIDTH);
|
||
outtextxy(150, 228, "dashed rect");
|
||
|
||
for (;;) { }
|
||
}
|