遵循如何维护更新日志编写。
- 增加相机捕获功能,基于 ccap 提供相机驱动,新增
ege::Camera类,支持在 C++17 及以上的编译器中使用。 - 增加鼠标双击检测支持,新增
mouse_msg::is_doubleclick()方法。 - 增加鼠标扩展键的检测(如 XBUTTON1, XBUTTON2)。
- 增加
ege::measuretext函数用于测量ege_前缀函数绘制的文本宽高。 - 增加
ege::image_convertcolor函数用于转换图像像素的颜色类型。 - 增加快速检测按键动作的函数
keypress、keyrelease、keyrepeat。 - 增加
ege/types.h头文件,提供基础类型定义。 - 增加
kbhit_console函数,与getch_console配套使用。 - 新增
ege_compress_bound函数用于获取压缩数据的最大长度。 - 新增
color_type枚举,用于指定图像像素的颜色类型(COLORTYPE_PRGB32,COLORTYPE_ARGB32,COLORTYPE_RGB32)。
- 使用
stb_image替代libpng解析图像文件,支持更多图像格式(PNG, JPEG, BMP, GIF, TGA, PSD, HDR, PIC, PNM)。 - 使用轻量的
sdefl/sinfl库替代zlib实现数据压缩/解压,移除libpng和zlib依赖。 - 图像像素默认颜色格式由
ARGB32改为PRGB32(预乘Alpha),提升渲染效率。 color_t类型调整为uint32_t,提高代码一致性。- C++ 标准不低于 C++11 时,颜色枚举
COLORS底层类型设置为uint32_t,与color_t一致。 ege_系列文本输出函数的坐标参数类型由int改为float,支持更精细的定位。- 图像读取和保存返回更详细的错误信息,增加
grInvalidFileFormat和grUnsupportedFormat错误码。 - 增加对 Visual Studio 2026 的支持。
- 优化项目配置,在编译器支持 C++17 时自动开启 C++17,并定义宏
EGE_ENABLE_CPP17=1。 - 优化静态库编译参数,同时支持
/MD和/MT编译。 - MSVC 版本新增 Debug 版本静态库
graphicsd.lib,解决 Debug/Release 模式下 STL 不兼容的问题。头文件会根据_DEBUG宏自动选择正确的库。 ege.h提供双语版本(英文版为默认版本,中文版ege.zh_CN.h主要用于生成文档)。- 示例代码中的
sprintf改为更安全的snprintf。
- 修复垂直方向对齐对
ege_文本绘制函数无效的问题。 - 修复调用
resizewindow后图形出现偏移和被裁剪的问题。 - 修复
resizewindow后视口未进行调整的问题。 - 修复
ege_fillroundrect()单圆角半径参数重载无法在指定图像中绘制的问题。 - 修复使用
lineto前未调整当前点的问题。 - 修复
bar3d图形在线条连接点处有突出,以及在图形堆叠时存在重复边的问题。 - 修复自动渲染模式下长时间无绘制操作时不触发刷新的问题。
- 修复
IMAGE::gentexture会引发栈溢出的问题。 - 修复调用
delay_ms时出现帧率误差较大的问题。 - 修复
getpixel_f和putpixels_f声明和定义不一致的问题。 - 修复
MUSIC需要依赖initgraph()初始化的问题。 - 修复部分函数使用
ege_transform_matrix参数做变换时崩溃的问题。 - 修复
ege/button.h中调用setfillstyle时参数位置错误的问题。 - 纠正
PIMAGE和PCIMAGE的错误混用。
alpha_type枚举值顺序调整:ALPHATYPE_PREMULTIPLIED现为 0,ALPHATYPE_STRAIGHT为 1。putimage_alphablend系列函数的参数由alpha_type alphaType改为color_type colorType,默认值为COLORTYPE_PRGB32。- 数据压缩相关函数签名调整,参数类型由
unsigned long改为uint32_t。 Bound、Rect、RectF类的方法重命名:isContains→contains,isOverlaps→overlaps。- 修正拼写错误:
tranpose→transpose,flipHorizonal→flipHorizontal。 keystate返回值改为bool类型,参数无效时返回false。kbmsg、kbhit在运行环境退出后的返回值由-1改为0,防止阻塞。- 非阻塞或非延时函数不再触发窗口刷新。
flushmouse、flushkey不再触发窗口刷新。- 调整初始化环境之前所返回的颜色值,允许预先设置窗口背景色。
graphics_errors数值改为十进制格式,便于调试。
- 新增五子棋游戏 Demo(支持简单 AI 对战、落棋音效、抗锯齿棋子)。
- 新增排序可视化 Demo。
- 新增蒙特卡洛法绘制二元函数图像 Demo。
- 新增相机波浪效果 Demo。
- 移除
libpng和zlib依赖,简化编译配置。 - 优化 CMake 配置,添加构建选项允许设置不构建示例程序。
- 优化 GitHub Actions 工作流,增加 MinGW Windows 构建。
- 增加编译测试模块,用于发现编译兼容性问题。
- 添加单元测试相关模块和性能测试逻辑。
- 优化发布脚本,支持跨平台(macOS/Linux/Windows)。
- 文档更新:修正多处文档错误,更新示例代码。
- 增加
ege::putimage_rotatetransparent方法。 - 增加
ege::ege_系列绘图函数对ege::setlinestyle的支持。 - 增加
ege::ege_drawimage和ege::ege_transform系列函数。 - 增加绘制圆角矩形的函数。
- 增加主控台系列函数。
- 现在
ege::saveimage根据后缀名决定将文件保存为 png 还是 bmp 格式。 - 增加
ege::setcodepage控制 EGE 如何解析程序中的char*字符串。 - 增加
ege::setunicodecharmessage控制字符消息的编码。
- 修复
ege::inputbox_getline界面发黑的问题。 - 修正当半径小于等于 20 时,
ege::sector函数绘制错误。 - 修正
ege::setinitmode无法改变窗口位置的问题。 - 使
sys_edit的isfocus方法可用。 - 修复 Windows 10 下创建窗口时白屏的问题。
- 修复在执行
ege::outputbox_getline后ege::outtextxy有概率无效的问题。
ege::getimage系列函数现在通过返回值表示是否成功。- 改用支持 GPU 加速的
AlphaBlend函数实现ege::putimage_alpha。 - 将
ege::resize行为改回会填充背景色,并增加不填充背景色的ege::resize_f函数。 - 按照 CSS 颜色表修改并增加了预定义颜色值定义。
INIT_UNICODE初始化选项,改为设置setunicodecharmessage(true),现在 EGE 总是创建 Unicode 窗口。
- 库文件名统一为
graphics[64].lib或libgraphics[64].a。 - 初始化图形对象或调用
resize时,支持将图形对象的长或宽设置为 0。 - 增加
INIT_UNICODE初始化选项,此选项会创建 Unicode 窗口。 - 增加
ege::seticon函数,可通过资源 ID 设置窗口图标。 - 增加
ege::ege_drawtext,支持绘制文字时使用 Alpha 通道混合,呈现半透明效果。 - 增加
putpixel_withalpha和putpixel_withalpha_f函数,支持带透明通道绘制像素点。 - 允许在
initgraph前调用newimage创建图形对象。 - 支持加载资源中 PNG 格式图片。
- 使
getkey可返回key_msg_char类型的消息,现在 EGE 支持读取输入法输入了。 - 允许在调用
initgraph前设置窗口标题和图标。 - 使用 CMake 作为编译系统。
- 增加之前缺少的键码。
- 使用
PCIMAGE作为const IMAGE*的别名,并作为某些函数的形参类型。
- 修正
putimage系列函数裁剪区计算错误的 BUG。 - 修复了
initgraph的内存泄漏情况。 - 修复了
setactivepage()和setvisualpage()无法使用的问题。 - 修正
putpixel等函数颜色格式错误。 - 修正关于线型设置的 BUG。
- 修正某些函数传入
NULL时段错误的 BUG。
- 从
ege.h中移出EgeControlBase的定义到ege/egecontrolbase.h中。 - 默认字体设置为宋体。
- 生成的静态库文件中不再包含 gdiplus 静态库。
- 改用误差更小的 Alpha 通道混合算法。
resize不再用默认背景色清空图像。(在 21.09 中重置)- 修改了
initgraph的接口定义。