Covers ImageData.cpp CPU paths:
- set/getPixel round-trips for RGBA16/16F/32F/RGBA4/RGB5A1/RGB565/R8/RG8
- validPixelFormat/canPaste matrix + partial sub-region paste
- TGA encode/decode round-trip
Also fixes a latent bug found by the tests: setPixelRGBA16 stored
[r,b,g,a] while getPixelRGBA16 reads [r,g,b,a] (g/b swapped).
* feat(image): ImageData::rotate with inverse-map nearest/linear
Add CPU pixel rotation on ImageData using destination-to-source inverse
mapping (Geometric Tools / standard image processing). Supports nearest
and bilinear filters, optional canvas expand to fit the rotated AABB,
and matches Math::rotate2* angle convention. Includes unit tests, Font
script binding, and docs.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* test(image): assert exact 90° rotate pixel positions
Pin nearest+expand 90° mapping of corner markers to (1,2) and (0,0).
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* feat(image): implement RotSprite pixel-art rotation filter
Add Xenowhirl RotSprite as ImageData::rotate filter "rotsprite":
Scale2x×3 with color similarity, best 8×8 sampling offset search,
nearest-neighbor rotate+downscale, and single-pixel detail restore.
Quarter turns use an exact remapping fast path. Tests cover 90°
palette preservation and 45° no-new-colors.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* fix(ci): M_PI on MSVC and GitHub API 403 for asset downloads
Windows unit tests failed because test/image.cpp used M_PI without the
MSVC fallback used by other test files. macOS build failed when
download_skinned_character.sh hit GitHub API 403 during PRE_BUILD; add
User-Agent + optional GITHUB_TOKEN auth to asset fetch scripts and pass
GITHUB_TOKEN in CI build steps.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
- Modified CMakeLists.txt to include the `--recurse-submodules` option for Git clone commands, ensuring all submodules are fetched.
- Enhanced filesystem tests to cover additional scenarios, including memory data mounting and real directory resolution.
- Updated image tests to validate PNG encoding and decoding, ensuring proper handling of unsupported formats.
- Improved model3D tests to check for material counts and face normals, enhancing robustness of 3D model handling.
- Added error handling in sound tests for invalid data scenarios, ensuring stability in audio processing.
These changes improve the overall test coverage and configuration management of the project.
- Introduced platform-specific CMake configurations for macOS, including the addition of the EVPlatformMacOSX library.
- Enhanced Vulkan integration on macOS by requiring the LunarG Vulkan SDK and ensuring proper setup instructions in the documentation.
- Updated the Makefile to support macOS build targets alongside Windows and Linux.
- Improved CMakeLists and source files to handle platform-specific libraries and dependencies more effectively.
- Added detailed instructions for macOS setup in the README, including environment configuration for Vulkan SDK.
- Refactored existing code to ensure compatibility with macOS, including adjustments in event handling and graphics functionality.
- Added comprehensive unit tests for audio functionalities, including playback control, volume adjustments, and source management.
- Implemented new tests for data handling, focusing on ByteData and DataView functionalities, ensuring proper memory management and error handling.
- Updated CMakeLists to include new test files for improved coverage and organization.
- Enhanced event handling tests to verify message processing and variant functionalities.