XEGE内核API规范

重要提示: 本文描述的API是一个XEGE内核所必须提供的API,与最终使用时的API无关,该标准供参考,届时会根据此标准开发第一个可用核心——GDI+核心。并且,这里的y轴原点在左上角,上小下大!

 

注:这是一套C API

基本数据类型:

类型名含义实现方式
XEGE_ColorFARGB浮点颜色struct{float ....}
XEGE_ColorARGB传统颜色uint
XEGE_Point22d点struct{float x,float y}
XEGE_Index标准索引,使用下标而非指针size_t
XEGE_Texture纹理,一切内容最终画在纹理上struct

基本常量&枚举

名称类别作用
XEGE_ColorFormat枚举储存颜色格式,要求至少提供ARGB_INT,ARGB_FLOAT可选

基本函数:

注: 一个合法的核心必须提供如下函数,且都能正常工作

函数名作用
void* XEGE_GetBuffer(texture t)获取纹理指针
int XEGE_GetWidth(texture t)获取纹理宽
int XEGE_GetHeight(texture t)获取纹理高
bool XEGE_FuncExsit(char* /wchar_t* name)判断函数是否存在
void XEGE_InitGraph(int w,int h,int mode)创建绘图环境(不需要模式)
void XEGE_CloseGraph()关闭绘图环境

可选输入函数

注: 一个核心不一定要提供这些功能(返回false),但是这将导致相应的输入函数失效

函数名作用
bool XEGE_GetMouseXY(int* x,int* y)获得鼠标相对于窗口的坐标
bool XEGE_GetMouseStates(bool* l,bool* r,int* w)获取鼠标瞬时状态,分别表示左键状态、右键状态、中键值
bool XEGE_GetKeyState(bool* state,int key)判断key键的状态,类似鼠标,暂时使用windows虚拟键值表

 

可选绘图函数

注: 返回bool表示是否绘图成功,不实现者必须返回false(非绘图类除外),必须有一参数指定画在哪个纹理上(不需要考虑哪个纹理是屏幕)。 大部分函数 若不实现会进行软渲染。

函数名作用
void XEGE_SetColorFomat(int format)设定颜色格式
void XEGE_GetColorFomat(int format)获取颜色格式
colorF/color XEGE_SetColor(colorF/color c)颜色,返回之前的颜色
colorF/color XEGE_SetFillColor(colorF/color c)填充色,返回之前的颜色
colorF/color XEGE_GetColor()颜色
colorF/color XEGE_GetFillColor()填充色
bool XEGE_DrawPoint(point2 p)
bool XEGE_DrawLineW(point2 p1,point2 p2)使用线宽的直线
bool XEGE_DrawLine(point2 p1,point2 p2)直线
bool XEGE_DrawCircle(point2 center,int radius)画不填充圆
bool XEGE_DrawRect(point2 a,point2 b)画不填充矩形
bool XEGE_DrawEllipse(point2 a,point2 b)画不填充椭圆
bool XEGE_DrawRect(point2 a,point2 b)画不填充矩形,b是端点而不是长宽
其他Draw绘制其他不填充图形
bool XEGE_FillCircle(point2 a,int radius)画填充圆
其他Fill绘制其他填充图形(参数类似draw类)
bool XEGE_SetFont设置字体
bool XEGE_GetFont获得当前字体
bool XEGE_OutTextXY指定位置输出字符串
bool XEGE_DrawTexture(texture t)绘制纹理
bool XEGE_LoadTexture(texture& dest,texture src,point2 a,point2 b)从src中截取到dest,坐标参数同rect
bool XEGE_LoadTexture(texture& dest,string/wstring filename,point2 a,point2 b)从文件读Texture,a、b表示截取的范围

自定义函数

自定义函数对命名、参数之类的没有需求,但为了避免冲突,请命名为 内核名+'_'+函数名,该类函数使用funcExsit判断它是否存在,若存在即使用,否则使用替代方案