WSG is a simple image format developed for Swadge sprites. Each pixel in a WSG is from the web-safe palette of colors, with one extra value indicating transparent (paletteColor_t). The pixels are then compressed with heatshrink compression.
WSGs are handled individually, not in a sheet. The assets_preprocessor program will take PNG files and convert them to WSG. The cmake build will take the generated WSG files and generate cnfs_image.c which is included in the firmware Swadge. See assets_preprocessor in CMakeLists.txt.
WSG files can be loaded from the filesystem with helper functions in fs_wsg.h. Once loaded from the filesystem WSGs can be drawn to the display.
Usage
There are five ways to draw a WSG to the display each with varying complexity and speed
drawWsg(): Draw a WSG to the display with transparency, rotation, and flipping over horizontal or vertical axes. This is the slowest option.
drawWsgSimple(): Draw a WSG to the display with transparency. This is the medium speed option and should be used if the WSG is not rotated or flipped.
drawWsgTile(): Draw a WSG to the display without transparency. Any transparent pixels will be an indeterminate color. This is the fastest option, and best for background tiles or images.
drawWsgSimpleScaled(): Draw a WSG to the display with transparency at a specified scale. Scales are integer values, so 2x, 3x, 4x... are the valid options.
drawWsgSimpleHalf(): Draw a WSG to the display with transparency at half the original resolution.
Transform a pixel's coordinates by rotation around the sprite's center point, then reflection over Y axis, then reflection over X axis, then translation
Parameters
x
The x coordinate of the pixel location to transform
y
The y coordinate of the pixel location to transform
rotateDeg
The number of degrees to rotate clockwise, must be 0-359