libbgi: bgi256 fill-примитивы на register-ABI + typedef color_t
- удалён глобальный скретч акселератора (_gfx_acc256.c); fill-сегменты (_gfx_hfill256/_gfx_vfill256) принимают аргументы в регистрах HL/C/B/E, вызываются только из asm raw-примитивов - новый _gfx_rectfill256: заливка прямоугольника через Horizontal_Size - raw-примитивы (plot/read/hspan/vspan/clear) переписаны под новый ABI - graphics.h: typedef color_t (uint8_t) для всех public color-функций - sprinter-cc: флаг --safe (линковка *_safe.lib при наличии) - CLAUDE.md/mame_interactive: авто-прогон тестов в MAME - gfx_demo: демонстрация rectfill Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,8 @@
|
||||
#ifndef GRAPHICS_H
|
||||
#define GRAPHICS_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* ---- Стандартные EGA/VGA цвета (индексы палитры 0..15) ------------ */
|
||||
enum {
|
||||
BLACK = 0, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY,
|
||||
@@ -30,6 +32,10 @@ enum {
|
||||
YELLOW, WHITE
|
||||
};
|
||||
|
||||
/* 8-битный цвет (индекс палитры). При смене формата достаточно поменять
|
||||
* один typedef — все public-функции используют этот тип. */
|
||||
typedef uint8_t color_t;
|
||||
|
||||
/* ---- Коды graphresult() ------------------------------------------ */
|
||||
#define grOk 0
|
||||
#define grNoInitGraph (-1)
|
||||
@@ -55,17 +61,17 @@ void cleardevice(void);
|
||||
|
||||
int getmaxx(void); /* 319 */
|
||||
int getmaxy(void); /* 255 */
|
||||
int getmaxcolor(void); /* 255 */
|
||||
color_t getmaxcolor(void); /* 255 */
|
||||
|
||||
void setcolor(int color); /* текущий цвет рисования */
|
||||
int getcolor(void);
|
||||
void setbkcolor(int color); /* фоновый цвет (для cleardevice/текста) */
|
||||
int getbkcolor(void);
|
||||
void setcolor(color_t color); /* текущий цвет рисования */
|
||||
color_t getcolor(void);
|
||||
void setbkcolor(color_t color); /* фоновый цвет (для cleardevice/текста) */
|
||||
color_t getbkcolor(void);
|
||||
|
||||
/* ---- Точки ------------------------------------------------------- */
|
||||
|
||||
void putpixel(int x, int y, int color);
|
||||
unsigned getpixel(int x, int y);
|
||||
void putpixel(int x, int y, color_t color);
|
||||
color_t getpixel(int x, int y);
|
||||
|
||||
/* ---- Текущая позиция и линии ------------------------------------- */
|
||||
|
||||
@@ -116,9 +122,9 @@ enum {
|
||||
INTERLEAVE_FILL, WIDE_DOT_FILL, CLOSE_DOT_FILL, USER_FILL
|
||||
};
|
||||
|
||||
struct fillsettingstype { int pattern; int color; };
|
||||
struct fillsettingstype { int pattern; color_t color; };
|
||||
|
||||
void setfillstyle(int pattern, int color);
|
||||
void setfillstyle(int pattern, color_t color);
|
||||
void getfillsettings(struct fillsettingstype *fillinfo);
|
||||
|
||||
/* bar — залитый прямоугольник (текущий стиль заливки, без рамки). */
|
||||
|
||||
Reference in New Issue
Block a user