Swadge ESP32-S2/S3
APIs to develop for the Magfest Swadge
Loading...
Searching...
No Matches
wsg.c File Reference

Functions

void rotatePixel (int32_t *x, int32_t *y, int32_t rotateDeg, int32_t width, int32_t height)
void drawWsgSolid (const wsg_t *wsg, int32_t xOff, int32_t yOff, bool flipLR, bool flipUD, int32_t rotateDeg, paletteColor_t solidColor)
 Draw a WSG to the display.
void drawWsgSimple (const wsg_t *wsg, int16_t xOff, int16_t yOff)
 Draw a WSG to the display without flipping or rotation.
void drawWsgSimpleScaled (const wsg_t *wsg, int16_t xOff, int16_t yOff, int16_t xScale, int16_t yScale)
 Draw a WSG to the display without flipping or rotation. xScale and yScale must share the same sign or else the image will be drawn normally at 1x scale.
void drawWsgSimpleScaledUp (const wsg_t *wsg, int16_t xOff, int16_t yOff, int16_t xScale, int16_t yScale)
 Draw a WSG to the display without flipping or rotation.
void drawWsgSimpleScaledDown (const wsg_t *wsg, int16_t xOff, int16_t yOff, int16_t xScale, int16_t yScale)
 Draw a WSG to the display without flipping or rotation at half size.
void drawWsgSimpleHalf (const wsg_t *wsg, int16_t xOff, int16_t yOff)
 Draw a WSG to the display without flipping or rotation at half size.
void drawWsgSmoothScaled (const wsg_t *wsg, int16_t xOff, int16_t yOff, q24_8 xScale, q24_8 yScale)
 Draw a WSG to the display without flipping or rotation. Use drawWsgSimpleScaled and drawWsgSimpleHalf if halving or doubling sprites.
void drawWsgTile (const wsg_t *wsg, int32_t xOff, int32_t yOff)
 Quickly copy a WSG to the display without flipping or rotation or transparency.

Function Documentation

◆ rotatePixel()

void rotatePixel ( int32_t * x,
int32_t * y,
int32_t rotateDeg,
int32_t width,
int32_t height )

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
xThe x coordinate of the pixel location to transform
yThe y coordinate of the pixel location to transform
rotateDegThe number of degrees to rotate clockwise, must be 0-359
widthThe width of the image
heightThe height of the image

◆ drawWsgSolid()

void drawWsgSolid ( const wsg_t * wsg,
int32_t xOff,
int32_t yOff,
bool flipLR,
bool flipUD,
int32_t rotateDeg,
paletteColor_t solidColor )

Draw a WSG to the display.

Parameters
wsgThe WSG to draw to the display
xOffThe x offset to draw the WSG at
yOffThe y offset to draw the WSG at
flipLRtrue to flip the image across the Y axis
flipUDtrue to flip the image across the X axis
rotateDegThe number of degrees to rotate clockwise, must be 0-359
solidColorA single color to use for each pixel, or cTransparent to ignore

◆ drawWsgSimple()

void drawWsgSimple ( const wsg_t * wsg,
int16_t xOff,
int16_t yOff )

Draw a WSG to the display without flipping or rotation.

Parameters
wsgThe WSG to draw to the display
xOffThe x offset to draw the WSG at
yOffThe y offset to draw the WSG at

◆ drawWsgSimpleScaled()

void drawWsgSimpleScaled ( const wsg_t * wsg,
int16_t xOff,
int16_t yOff,
int16_t xScale,
int16_t yScale )

Draw a WSG to the display without flipping or rotation. xScale and yScale must share the same sign or else the image will be drawn normally at 1x scale.

Parameters
wsgThe WSG to draw to the display
xOffThe x offset to draw the WSG at
yOffThe y offset to draw the WSG at
xScaleThe amount to scale the image horizontally
yScaleThe amount to scale the image vertically

◆ drawWsgSimpleScaledUp()

void drawWsgSimpleScaledUp ( const wsg_t * wsg,
int16_t xOff,
int16_t yOff,
int16_t xScale,
int16_t yScale )

Draw a WSG to the display without flipping or rotation.

Parameters
wsgThe WSG to draw to the display
xOffThe x offset to draw the WSG at
yOffThe y offset to draw the WSG at
xScaleThe amount to scale the image horizontally
yScaleThe amount to scale the image vertically

◆ drawWsgSimpleScaledDown()

void drawWsgSimpleScaledDown ( const wsg_t * wsg,
int16_t xOff,
int16_t yOff,
int16_t xScale,
int16_t yScale )

Draw a WSG to the display without flipping or rotation at half size.

Parameters
wsgThe WSG to draw to the display
xOffThe x offset to draw the WSG at
yOffThe y offset to draw the WSG at
xScale1 draws at half scale, 2 at quarter scale, etc...
yScale1 draws at half scale, 2 at quarter scale, etc...

◆ drawWsgSimpleHalf()

void drawWsgSimpleHalf ( const wsg_t * wsg,
int16_t xOff,
int16_t yOff )

Draw a WSG to the display without flipping or rotation at half size.

Parameters
wsgThe WSG to draw to the display
xOffThe x offset to draw the WSG at
yOffThe y offset to draw the WSG at

◆ drawWsgSmoothScaled()

void drawWsgSmoothScaled ( const wsg_t * wsg,
int16_t xOff,
int16_t yOff,
q24_8 xScale,
q24_8 yScale )

Draw a WSG to the display without flipping or rotation. Use drawWsgSimpleScaled and drawWsgSimpleHalf if halving or doubling sprites.

Parameters
wsgThe WSG to draw to the display
xOffThe x offset to draw the WSG at
yOffThe y offset to draw the WSG at
xScaleThe amount to scale the image horizontally
yScaleThe amount to scale the image vertically

◆ drawWsgTile()

void drawWsgTile ( const wsg_t * wsg,
int32_t xOff,
int32_t yOff )

Quickly copy a WSG to the display without flipping or rotation or transparency.

If the source WSG does have transparency, an indeterminate color will be drawn to the TFT

Parameters
wsgThe WSG to draw to the display
xOffThe x offset to draw the WSG at
yOffThe y offset to draw the WSG at