SDL2_gfxPrimitives.cpp file

Classes

struct SDL2_gfxBresenhamIterator
The structure passed to the internal Bresenham iterator.
struct SDL2_gfxMurphyIterator
The structure passed to the internal Murphy iterator.

Functions

auto pixel(SDL_Renderer* renderer, Sint16 x, Sint16 y) -> int
Draw pixel in currently set color.
auto pixelColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Uint32 color) -> int
Draw pixel with blending enabled if a<255.
auto pixelRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw pixel with blending enabled if a<255.
auto pixelRGBAWeight(SDL_Renderer* renderer, Sint16 x, Sint16 y, Uint8 r, Uint8 g, Uint8 b, Uint8 a, Uint32 weight) -> int
Draw pixel with blending enabled and using alpha weight on color.
auto hline(SDL_Renderer* renderer, Sint16 x1, Sint16 x2, Sint16 y) -> int
Draw horizontal line in currently set color.
auto hlineColor(SDL_Renderer* renderer, Sint16 x1, Sint16 x2, Sint16 y, Uint32 color) -> int
Draw horizontal line with blending.
auto hlineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 x2, Sint16 y, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw horizontal line with blending.
auto vline(SDL_Renderer* renderer, Sint16 x, Sint16 y1, Sint16 y2) -> int
Draw vertical line in currently set color.
auto vlineColor(SDL_Renderer* renderer, Sint16 x, Sint16 y1, Sint16 y2, Uint32 color) -> int
Draw vertical line with blending.
auto vlineRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y1, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw vertical line with blending.
auto rectangleColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color) -> int
Draw rectangle with blending.
auto rectangleRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw rectangle with blending.
auto roundedRectangleColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint32 color) -> int
Draw rounded-corner rectangle with blending.
auto roundedRectangleRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw rounded-corner rectangle with blending.
auto roundedBoxColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint32 color) -> int
Draw rounded-corner box (filled rectangle) with blending.
auto roundedBoxRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw rounded-corner box (filled rectangle) with blending.
auto boxColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color) -> int
Draw box (filled rectangle) with blending.
auto boxRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw box (filled rectangle) with blending.
auto line(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2) -> int
Draw line with alpha blending using the currently set color.
auto lineColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color) -> int
Draw line with alpha blending.
auto lineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw line with alpha blending.
auto _aalineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a, int draw_endpoint) -> int
Internal function to draw anti-aliased line with alpha blending and endpoint control.
auto aalineColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color) -> int
Draw anti-aliased line with alpha blending.
auto aalineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw anti-aliased line with alpha blending.
auto circleColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint32 color) -> int
Draw circle with blending.
auto circleRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw circle with blending.
auto arcColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 color) -> int
Arc with blending.
auto arcRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Arc with blending.
auto aacircleColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint32 color) -> int
Draw anti-aliased circle with blending.
auto aacircleRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw anti-aliased circle with blending.
auto _drawQuadrants(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 dx, Sint16 dy, Sint32 f) -> int
Internal function to draw pixels or lines in 4 quadrants.
auto _ellipseRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a, Sint32 f) -> int
auto ellipseColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 color) -> int
Draw ellipse with blending.
auto ellipseRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw ellipse with blending.
auto filledCircleColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint32 color) -> int
Draw filled circle with blending.
auto filledCircleRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw filled circle with blending.
auto aaellipseColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 color) -> int
Draw anti-aliased ellipse with blending.
auto aaellipseRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw anti-aliased ellipse with blending.
auto filledEllipseColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 color) -> int
Draw filled ellipse with blending.
auto filledEllipseRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw filled ellipse with blending.
auto _pieRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a, Uint8 filled) -> int
Internal float (low-speed) pie-calc implementation by drawing polygons.
auto pieColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 color) -> int
Draw pie (outline) with alpha blending.
auto pieRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw pie (outline) with alpha blending.
auto filledPieColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 color) -> int
Draw filled pie with alpha blending.
auto filledPieRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw filled pie with alpha blending.
auto trigonColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color) -> int
Draw trigon (triangle outline) with alpha blending.
auto trigonRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw trigon (triangle outline) with alpha blending.
auto aatrigonColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color) -> int
Draw anti-aliased trigon (triangle outline) with alpha blending.
auto aatrigonRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw anti-aliased trigon (triangle outline) with alpha blending.
auto filledTrigonColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color) -> int
Draw filled trigon (triangle) with alpha blending.
auto filledTrigonRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw filled trigon (triangle) with alpha blending.
auto polygonColor(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint32 color) -> int
Draw polygon with alpha blending.
auto polygon(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n) -> int
Draw polygon with the currently set color and blend mode.
auto polygonRGBA(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw polygon with alpha blending.
auto aapolygonColor(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint32 color) -> int
Draw anti-aliased polygon with alpha blending.
auto aapolygonRGBA(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw anti-aliased polygon with alpha blending.
auto _gfxPrimitivesCompareInt(const void* a, const void* b) -> int
Internal helper qsort callback functions used in filled polygon drawing.
auto filledPolygonRGBAMT(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint8 r, Uint8 g, Uint8 b, Uint8 a, int** polyInts, int* polyAllocated) -> int
Draw filled polygon with alpha blending (multi-threaded capable).
auto filledPolygonColor(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint32 color) -> int
Draw filled polygon with alpha blending.
auto filledPolygonRGBA(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw filled polygon with alpha blending.
auto _HLineTextured(SDL_Renderer* renderer, Sint16 x1, Sint16 x2, Sint16 y, SDL_Texture* texture, int texture_w, int texture_h, int texture_dx, int texture_dy) -> int
Internal function to draw a textured horizontal line.
auto texturedPolygonMT(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, SDL_Surface* texture, int texture_dx, int texture_dy, int** polyInts, int* polyAllocated) -> int
Draws a polygon filled with the given texture (Multi-Threading Capable).
auto texturedPolygon(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, SDL_Surface* texture, int texture_dx, int texture_dy) -> int
Draws a polygon filled with the given texture.
void gfxPrimitivesSetFont(const void* fontdata, Uint32 cw, Uint32 ch)
Sets or resets the current global font data.
void gfxPrimitivesSetFontRotation(Uint32 rotation)
Sets current global font character rotation steps.
auto characterRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, char c, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw a character of the currently set font.
auto characterColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, char c, Uint32 color) -> int
Draw a character of the currently set font.
auto stringColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, const char* s, Uint32 color) -> int
Draw a string in the currently set font.
auto stringRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, const char* s, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw a string in the currently set font.
auto _evaluateBezier(double* data, int ndata, double t) -> double
Internal function to calculate bezier interpolator of data array with ndata values at position 't'.
auto bezierColor(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, int s, Uint32 color) -> int
Draw a bezier curve with alpha blending.
auto bezierRGBA(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, int s, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw a bezier curve with alpha blending.
auto thickLineColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 width, Uint32 color) -> int
Draw a thick line with alpha blending.
auto thickLineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 width, Uint8 r, Uint8 g, Uint8 b, Uint8 a) -> int
Draw a thick line with alpha blending.

Variables

static int* gfxPrimitivesPolyIntsGlobal
Global vertex array to use if optional parameters are not given in filledPolygonMT calls.
static int gfxPrimitivesPolyAllocatedGlobal
Flag indicating if global vertex array was already allocated.
static SDL_Texture* gfxPrimitivesFont
Global cache for NxM pixel font textures created at runtime.
static const unsigned char* currentFontdata
Pointer to the current font data. Default is a 8x8 pixel internal font.
static Uint32 charWidth
Width of the current font. Default is 8.
static Uint32 charHeight
Height of the current font. Default is 8.
static Uint32 charWidthLocal
Width for rendering. Autocalculated.
static Uint32 charHeightLocal
Height for rendering. Autocalculated.
static Uint32 charPitch
Pitch of the current font in bytes. Default is 1.
static Uint32 charRotation
Characters 90deg clockwise rotations. Default is 0. Max is 3.
static Uint32 charSize
Character data size in bytes of the current font. Default is 8.

Defines

#define AAlevels
#define AAbits
#define DEFAULT_ELLIPSE_OVERSCAN
Internal function to draw ellipse or filled ellipse with blending.

Function documentation

int pixel(SDL_Renderer* renderer, Sint16 x, Sint16 y)

Draw pixel in currently set color.

Parameters
renderer The renderer to draw on.
x X (horizontal) coordinate of the pixel.
y Y (vertical) coordinate of the pixel.
Returns Returns 0 on success, -1 on failure.

int pixelColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Uint32 color)

Draw pixel with blending enabled if a<255.

Parameters
renderer The renderer to draw on.
x X (horizontal) coordinate of the pixel.
y Y (vertical) coordinate of the pixel.
color The color value of the pixel to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int pixelRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw pixel with blending enabled if a<255.

Parameters
renderer The renderer to draw on.
x X (horizontal) coordinate of the pixel.
y Y (vertical) coordinate of the pixel.
r The red color value of the pixel to draw.
g The green color value of the pixel to draw.
b The blue color value of the pixel to draw.
a The alpha value of the pixel to draw.
Returns Returns 0 on success, -1 on failure.

int pixelRGBAWeight(SDL_Renderer* renderer, Sint16 x, Sint16 y, Uint8 r, Uint8 g, Uint8 b, Uint8 a, Uint32 weight)

Draw pixel with blending enabled and using alpha weight on color.

Parameters
renderer The renderer to draw on.
x The horizontal coordinate of the pixel.
y The vertical position of the pixel.
r The red color value of the pixel to draw.
g The green color value of the pixel to draw.
b The blue color value of the pixel to draw.
a The alpha value of the pixel to draw.
weight The weight multiplied into the alpha value of the pixel.
Returns Returns 0 on success, -1 on failure.

int hline(SDL_Renderer* renderer, Sint16 x1, Sint16 x2, Sint16 y)

Draw horizontal line in currently set color.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. left) of the line.
x2 X coordinate of the second point (i.e. right) of the line.
y Y coordinate of the points of the line.
Returns Returns 0 on success, -1 on failure.

int hlineColor(SDL_Renderer* renderer, Sint16 x1, Sint16 x2, Sint16 y, Uint32 color)

Draw horizontal line with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. left) of the line.
x2 X coordinate of the second point (i.e. right) of the line.
y Y coordinate of the points of the line.
color The color value of the line to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int hlineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 x2, Sint16 y, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw horizontal line with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. left) of the line.
x2 X coordinate of the second point (i.e. right) of the line.
y Y coordinate of the points of the line.
r The red value of the line to draw.
g The green value of the line to draw.
b The blue value of the line to draw.
a The alpha value of the line to draw.
Returns Returns 0 on success, -1 on failure.

int vline(SDL_Renderer* renderer, Sint16 x, Sint16 y1, Sint16 y2)

Draw vertical line in currently set color.

Parameters
renderer The renderer to draw on.
x X coordinate of points of the line.
y1 Y coordinate of the first point (i.e. top) of the line.
y2 Y coordinate of the second point (i.e. bottom) of the line.
Returns Returns 0 on success, -1 on failure.

int vlineColor(SDL_Renderer* renderer, Sint16 x, Sint16 y1, Sint16 y2, Uint32 color)

Draw vertical line with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the points of the line.
y1 Y coordinate of the first point (i.e. top) of the line.
y2 Y coordinate of the second point (i.e. bottom) of the line.
color The color value of the line to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int vlineRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y1, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw vertical line with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the points of the line.
y1 Y coordinate of the first point (i.e. top) of the line.
y2 Y coordinate of the second point (i.e. bottom) of the line.
r The red value of the line to draw.
g The green value of the line to draw.
b The blue value of the line to draw.
a The alpha value of the line to draw.
Returns Returns 0 on success, -1 on failure.

int rectangleColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color)

Draw rectangle with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. top right) of the rectangle.
y1 Y coordinate of the first point (i.e. top right) of the rectangle.
x2 X coordinate of the second point (i.e. bottom left) of the rectangle.
y2 Y coordinate of the second point (i.e. bottom left) of the rectangle.
color The color value of the rectangle to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int rectangleRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw rectangle with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. top right) of the rectangle.
y1 Y coordinate of the first point (i.e. top right) of the rectangle.
x2 X coordinate of the second point (i.e. bottom left) of the rectangle.
y2 Y coordinate of the second point (i.e. bottom left) of the rectangle.
r The red value of the rectangle to draw.
g The green value of the rectangle to draw.
b The blue value of the rectangle to draw.
a The alpha value of the rectangle to draw.
Returns Returns 0 on success, -1 on failure.

int roundedRectangleColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint32 color)

Draw rounded-corner rectangle with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. top right) of the rectangle.
y1 Y coordinate of the first point (i.e. top right) of the rectangle.
x2 X coordinate of the second point (i.e. bottom left) of the rectangle.
y2 Y coordinate of the second point (i.e. bottom left) of the rectangle.
rad The radius of the corner arc.
color The color value of the rectangle to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int roundedRectangleRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw rounded-corner rectangle with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. top right) of the rectangle.
y1 Y coordinate of the first point (i.e. top right) of the rectangle.
x2 X coordinate of the second point (i.e. bottom left) of the rectangle.
y2 Y coordinate of the second point (i.e. bottom left) of the rectangle.
rad The radius of the corner arc.
r The red value of the rectangle to draw.
g The green value of the rectangle to draw.
b The blue value of the rectangle to draw.
a The alpha value of the rectangle to draw.
Returns Returns 0 on success, -1 on failure.

int roundedBoxColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint32 color)

Draw rounded-corner box (filled rectangle) with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. top right) of the box.
y1 Y coordinate of the first point (i.e. top right) of the box.
x2 X coordinate of the second point (i.e. bottom left) of the box.
y2 Y coordinate of the second point (i.e. bottom left) of the box.
rad The radius of the corner arcs of the box.
color The color value of the box to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int roundedBoxRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw rounded-corner box (filled rectangle) with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. top right) of the box.
y1 Y coordinate of the first point (i.e. top right) of the box.
x2 X coordinate of the second point (i.e. bottom left) of the box.
y2 Y coordinate of the second point (i.e. bottom left) of the box.
rad The radius of the corner arcs of the box.
r The red value of the box to draw.
g The green value of the box to draw.
b The blue value of the box to draw.
a The alpha value of the box to draw.
Returns Returns 0 on success, -1 on failure.

int boxColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color)

Draw box (filled rectangle) with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. top right) of the box.
y1 Y coordinate of the first point (i.e. top right) of the box.
x2 X coordinate of the second point (i.e. bottom left) of the box.
y2 Y coordinate of the second point (i.e. bottom left) of the box.
color The color value of the box to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int boxRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw box (filled rectangle) with blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. top right) of the box.
y1 Y coordinate of the first point (i.e. top right) of the box.
x2 X coordinate of the second point (i.e. bottom left) of the box.
y2 Y coordinate of the second point (i.e. bottom left) of the box.
r The red value of the box to draw.
g The green value of the box to draw.
b The blue value of the box to draw.
a The alpha value of the box to draw.
Returns Returns 0 on success, -1 on failure.

int line(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2)

Draw line with alpha blending using the currently set color.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the line.
y1 Y coordinate of the first point of the line.
x2 X coordinate of the second point of the line.
y2 Y coordinate of the second point of the line.
Returns Returns 0 on success, -1 on failure.

int lineColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color)

Draw line with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the line.
y1 Y coordinate of the first point of the line.
x2 X coordinate of the second point of the line.
y2 Y coordinate of the seond point of the line.
color The color value of the line to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int lineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw line with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the line.
y1 Y coordinate of the first point of the line.
x2 X coordinate of the second point of the line.
y2 Y coordinate of the second point of the line.
r The red value of the line to draw.
g The green value of the line to draw.
b The blue value of the line to draw.
a The alpha value of the line to draw.
Returns Returns 0 on success, -1 on failure.

int _aalineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a, int draw_endpoint)

Internal function to draw anti-aliased line with alpha blending and endpoint control.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the aa-line.
y1 Y coordinate of the first point of the aa-line.
x2 X coordinate of the second point of the aa-line.
y2 Y coordinate of the second point of the aa-line.
r The red value of the aa-line to draw.
g The green value of the aa-line to draw.
b The blue value of the aa-line to draw.
a The alpha value of the aa-line to draw.
draw_endpoint Flag indicating if the endpoint should be drawn; draw if non-zero.
Returns Returns 0 on success, -1 on failure.

This implementation of the Wu antialiasing code is based on Mike Abrash's DDJ article which was reprinted as Chapter 42 of his Graphics Programming Black Book, but has been optimized to work with SDL and utilizes 32-bit fixed-point arithmetic by A. Schiffler. The endpoint control allows the supression to draw the last pixel useful for rendering continous aa-lines with alpha<255.

int aalineColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color)

Draw anti-aliased line with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the aa-line.
y1 Y coordinate of the first point of the aa-line.
x2 X coordinate of the second point of the aa-line.
y2 Y coordinate of the second point of the aa-line.
color The color value of the aa-line to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int aalineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw anti-aliased line with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the aa-line.
y1 Y coordinate of the first point of the aa-line.
x2 X coordinate of the second point of the aa-line.
y2 Y coordinate of the second point of the aa-line.
r The red value of the aa-line to draw.
g The green value of the aa-line to draw.
b The blue value of the aa-line to draw.
a The alpha value of the aa-line to draw.
Returns Returns 0 on success, -1 on failure.

int circleColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint32 color)

Draw circle with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the circle.
y Y coordinate of the center of the circle.
rad Radius in pixels of the circle.
color The color value of the circle to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int circleRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw circle with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the circle.
y Y coordinate of the center of the circle.
rad Radius in pixels of the circle.
r The red value of the circle to draw.
g The green value of the circle to draw.
b The blue value of the circle to draw.
a The alpha value of the circle to draw.
Returns Returns 0 on success, -1 on failure.

int arcColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 color)

Arc with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the arc.
y Y coordinate of the center of the arc.
rad Radius in pixels of the arc.
start Starting radius in degrees of the arc. 0 degrees is down, increasing counterclockwise.
end Ending radius in degrees of the arc. 0 degrees is down, increasing counterclockwise.
color The color value of the arc to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int arcRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Arc with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the arc.
y Y coordinate of the center of the arc.
rad Radius in pixels of the arc.
start Starting radius in degrees of the arc. 0 degrees is down, increasing counterclockwise.
end Ending radius in degrees of the arc. 0 degrees is down, increasing counterclockwise.
r The red value of the arc to draw.
g The green value of the arc to draw.
b The blue value of the arc to draw.
a The alpha value of the arc to draw.
Returns Returns 0 on success, -1 on failure.

int aacircleColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint32 color)

Draw anti-aliased circle with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the aa-circle.
y Y coordinate of the center of the aa-circle.
rad Radius in pixels of the aa-circle.
color The color value of the aa-circle to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int aacircleRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw anti-aliased circle with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the aa-circle.
y Y coordinate of the center of the aa-circle.
rad Radius in pixels of the aa-circle.
r The red value of the aa-circle to draw.
g The green value of the aa-circle to draw.
b The blue value of the aa-circle to draw.
a The alpha value of the aa-circle to draw.
Returns Returns 0 on success, -1 on failure.

int _drawQuadrants(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 dx, Sint16 dy, Sint32 f)

Internal function to draw pixels or lines in 4 quadrants.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the quadrant.
y Y coordinate of the center of the quadrant.
dx X offset in pixels of the corners of the quadrant.
dy Y offset in pixels of the corners of the quadrant.
f Flag indicating if the quadrant should be filled (1) or not (0).
Returns Returns 0 on success, -1 on failure.

int ellipseColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 color)

Draw ellipse with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the ellipse.
y Y coordinate of the center of the ellipse.
rx Horizontal radius in pixels of the ellipse.
ry Vertical radius in pixels of the ellipse.
color The color value of the ellipse to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int ellipseRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw ellipse with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the ellipse.
y Y coordinate of the center of the ellipse.
rx Horizontal radius in pixels of the ellipse.
ry Vertical radius in pixels of the ellipse.
r The red value of the ellipse to draw.
g The green value of the ellipse to draw.
b The blue value of the ellipse to draw.
a The alpha value of the ellipse to draw.
Returns Returns 0 on success, -1 on failure.

int filledCircleColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint32 color)

Draw filled circle with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the filled circle.
y Y coordinate of the center of the filled circle.
rad Radius in pixels of the filled circle.
color The color value of the filled circle to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int filledCircleRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw filled circle with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the filled circle.
y Y coordinate of the center of the filled circle.
rad Radius in pixels of the filled circle.
r The red value of the filled circle to draw.
g The green value of the filled circle to draw.
b The blue value of the filled circle to draw.
a The alpha value of the filled circle to draw.
Returns Returns 0 on success, -1 on failure.

int aaellipseColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 color)

Draw anti-aliased ellipse with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the aa-ellipse.
y Y coordinate of the center of the aa-ellipse.
rx Horizontal radius in pixels of the aa-ellipse.
ry Vertical radius in pixels of the aa-ellipse.
color The color value of the aa-ellipse to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int aaellipseRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw anti-aliased ellipse with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the aa-ellipse.
y Y coordinate of the center of the aa-ellipse.
rx Horizontal radius in pixels of the aa-ellipse.
ry Vertical radius in pixels of the aa-ellipse.
r The red value of the aa-ellipse to draw.
g The green value of the aa-ellipse to draw.
b The blue value of the aa-ellipse to draw.
a The alpha value of the aa-ellipse to draw.
Returns Returns 0 on success, -1 on failure.

int filledEllipseColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint32 color)

Draw filled ellipse with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the filled ellipse.
y Y coordinate of the center of the filled ellipse.
rx Horizontal radius in pixels of the filled ellipse.
ry Vertical radius in pixels of the filled ellipse.
color The color value of the filled ellipse to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int filledEllipseRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rx, Sint16 ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw filled ellipse with blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the filled ellipse.
y Y coordinate of the center of the filled ellipse.
rx Horizontal radius in pixels of the filled ellipse.
ry Vertical radius in pixels of the filled ellipse.
r The red value of the filled ellipse to draw.
g The green value of the filled ellipse to draw.
b The blue value of the filled ellipse to draw.
a The alpha value of the filled ellipse to draw.
Returns Returns 0 on success, -1 on failure.

int _pieRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a, Uint8 filled)

Internal float (low-speed) pie-calc implementation by drawing polygons.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the pie.
y Y coordinate of the center of the pie.
rad Radius in pixels of the pie.
start Starting radius in degrees of the pie.
end Ending radius in degrees of the pie.
r The red value of the pie to draw.
g The green value of the pie to draw.
b The blue value of the pie to draw.
a The alpha value of the pie to draw.
filled Flag indicating if the pie should be filled (=1) or not (=0).
Returns Returns 0 on success, -1 on failure.

Note: Determines vertex array and uses polygon or filledPolygon drawing routines to render.

int pieColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 color)

Draw pie (outline) with alpha blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the pie.
y Y coordinate of the center of the pie.
rad Radius in pixels of the pie.
start Starting radius in degrees of the pie.
end Ending radius in degrees of the pie.
color The color value of the pie to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int pieRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw pie (outline) with alpha blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the pie.
y Y coordinate of the center of the pie.
rad Radius in pixels of the pie.
start Starting radius in degrees of the pie.
end Ending radius in degrees of the pie.
r The red value of the pie to draw.
g The green value of the pie to draw.
b The blue value of the pie to draw.
a The alpha value of the pie to draw.
Returns Returns 0 on success, -1 on failure.

int filledPieColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint32 color)

Draw filled pie with alpha blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the filled pie.
y Y coordinate of the center of the filled pie.
rad Radius in pixels of the filled pie.
start Starting radius in degrees of the filled pie.
end Ending radius in degrees of the filled pie.
color The color value of the filled pie to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int filledPieRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, Sint16 rad, Sint16 start, Sint16 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw filled pie with alpha blending.

Parameters
renderer The renderer to draw on.
x X coordinate of the center of the filled pie.
y Y coordinate of the center of the filled pie.
rad Radius in pixels of the filled pie.
start Starting radius in degrees of the filled pie.
end Ending radius in degrees of the filled pie.
r The red value of the filled pie to draw.
g The green value of the filled pie to draw.
b The blue value of the filled pie to draw.
a The alpha value of the filled pie to draw.
Returns Returns 0 on success, -1 on failure.

int trigonColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color)

Draw trigon (triangle outline) with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the trigon.
y1 Y coordinate of the first point of the trigon.
x2 X coordinate of the second point of the trigon.
y2 Y coordinate of the second point of the trigon.
x3 X coordinate of the third point of the trigon.
y3 Y coordinate of the third point of the trigon.
color The color value of the trigon to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

Note: Creates vertex array and uses polygon routine to render.

int trigonRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw trigon (triangle outline) with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the trigon.
y1 Y coordinate of the first point of the trigon.
x2 X coordinate of the second point of the trigon.
y2 Y coordinate of the second point of the trigon.
x3 X coordinate of the third point of the trigon.
y3 Y coordinate of the third point of the trigon.
r The red value of the trigon to draw.
g The green value of the trigon to draw.
b The blue value of the trigon to draw.
a The alpha value of the trigon to draw.
Returns Returns 0 on success, -1 on failure.

int aatrigonColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color)

Draw anti-aliased trigon (triangle outline) with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the aa-trigon.
y1 Y coordinate of the first point of the aa-trigon.
x2 X coordinate of the second point of the aa-trigon.
y2 Y coordinate of the second point of the aa-trigon.
x3 X coordinate of the third point of the aa-trigon.
y3 Y coordinate of the third point of the aa-trigon.
color The color value of the aa-trigon to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

Note: Creates vertex array and uses aapolygon routine to render.

int aatrigonRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw anti-aliased trigon (triangle outline) with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the aa-trigon.
y1 Y coordinate of the first point of the aa-trigon.
x2 X coordinate of the second point of the aa-trigon.
y2 Y coordinate of the second point of the aa-trigon.
x3 X coordinate of the third point of the aa-trigon.
y3 Y coordinate of the third point of the aa-trigon.
r The red value of the aa-trigon to draw.
g The green value of the aa-trigon to draw.
b The blue value of the aa-trigon to draw.
a The alpha value of the aa-trigon to draw.
Returns Returns 0 on success, -1 on failure.

int filledTrigonColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color)

Draw filled trigon (triangle) with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the filled trigon.
y1 Y coordinate of the first point of the filled trigon.
x2 X coordinate of the second point of the filled trigon.
y2 Y coordinate of the second point of the filled trigon.
x3 X coordinate of the third point of the filled trigon.
y3 Y coordinate of the third point of the filled trigon.
color The color value of the filled trigon to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

Note: Creates vertex array and uses aapolygon routine to render.

int filledTrigonRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw filled trigon (triangle) with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the filled trigon.
y1 Y coordinate of the first point of the filled trigon.
x2 X coordinate of the second point of the filled trigon.
y2 Y coordinate of the second point of the filled trigon.
x3 X coordinate of the third point of the filled trigon.
y3 Y coordinate of the third point of the filled trigon.
r The red value of the filled trigon to draw.
g The green value of the filled trigon to draw.
b The blue value of the filled trigon to draw.
a The alpha value of the filled trigon to draw.
Returns Returns 0 on success, -1 on failure.

Note: Creates vertex array and uses aapolygon routine to render.

int polygonColor(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint32 color)

Draw polygon with alpha blending.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the polygon.
vy Vertex array containing Y coordinates of the points of the polygon.
n Number of points in the vertex array. Minimum number is 3.
color The color value of the polygon to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int polygon(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n)

Draw polygon with the currently set color and blend mode.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the polygon.
vy Vertex array containing Y coordinates of the points of the polygon.
n Number of points in the vertex array. Minimum number is 3.
Returns Returns 0 on success, -1 on failure.

int polygonRGBA(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw polygon with alpha blending.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the polygon.
vy Vertex array containing Y coordinates of the points of the polygon.
n Number of points in the vertex array. Minimum number is 3.
r The red value of the polygon to draw.
g The green value of the polygon to draw.
b The blue value of the polygon to draw.
a The alpha value of the polygon to draw.
Returns Returns 0 on success, -1 on failure.

int aapolygonColor(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint32 color)

Draw anti-aliased polygon with alpha blending.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the aa-polygon.
vy Vertex array containing Y coordinates of the points of the aa-polygon.
n Number of points in the vertex array. Minimum number is 3.
color The color value of the aa-polygon to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int aapolygonRGBA(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw anti-aliased polygon with alpha blending.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the aa-polygon.
vy Vertex array containing Y coordinates of the points of the aa-polygon.
n Number of points in the vertex array. Minimum number is 3.
r The red value of the aa-polygon to draw.
g The green value of the aa-polygon to draw.
b The blue value of the aa-polygon to draw.
a The alpha value of the aa-polygon to draw.
Returns Returns 0 on success, -1 on failure.

int _gfxPrimitivesCompareInt(const void* a, const void* b)

Internal helper qsort callback functions used in filled polygon drawing.

Parameters
a The surface to draw on.
b Vertex array containing X coordinates of the points of the polygon.
Returns Returns 0 if a==b, a negative number if a<b or a positive number if a>b.

int filledPolygonRGBAMT(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint8 r, Uint8 g, Uint8 b, Uint8 a, int** polyInts, int* polyAllocated)

Draw filled polygon with alpha blending (multi-threaded capable).

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the filled polygon.
vy Vertex array containing Y coordinates of the points of the filled polygon.
n Number of points in the vertex array. Minimum number is 3.
r The red value of the filled polygon to draw.
g The green value of the filled polygon to draw.
b The blue value of the filled polygon to draw.
a The alpha value of the filled polygon to draw.
polyInts Preallocated, temporary vertex array used for sorting vertices. Required for multithreaded operation; set to NULL otherwise.
polyAllocated Flag indicating if temporary vertex array was allocated. Required for multithreaded operation; set to NULL otherwise.
Returns Returns 0 on success, -1 on failure.

Note: The last two parameters are optional; but are required for multithreaded operation.

int filledPolygonColor(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint32 color)

Draw filled polygon with alpha blending.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the filled polygon.
vy Vertex array containing Y coordinates of the points of the filled polygon.
n Number of points in the vertex array. Minimum number is 3.
color The color value of the filled polygon to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int filledPolygonRGBA(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw filled polygon with alpha blending.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the filled polygon.
vy Vertex array containing Y coordinates of the points of the filled polygon.
n Number of points in the vertex array. Minimum number is 3.
r The red value of the filled polygon to draw.
g The green value of the filled polygon to draw.
b The blue value of the filed polygon to draw.
a The alpha value of the filled polygon to draw.
Returns Returns 0 on success, -1 on failure.

int _HLineTextured(SDL_Renderer* renderer, Sint16 x1, Sint16 x2, Sint16 y, SDL_Texture* texture, int texture_w, int texture_h, int texture_dx, int texture_dy)

Internal function to draw a textured horizontal line.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point (i.e. left) of the line.
x2 X coordinate of the second point (i.e. right) of the line.
y Y coordinate of the points of the line.
texture The texture to retrieve color information from.
texture_w The width of the texture.
texture_h The height of the texture.
texture_dx The X offset for the texture lookup.
texture_dy The Y offset for the textured lookup.
Returns Returns 0 on success, -1 on failure.

int texturedPolygonMT(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, SDL_Surface* texture, int texture_dx, int texture_dy, int** polyInts, int* polyAllocated)

Draws a polygon filled with the given texture (Multi-Threading Capable).

Parameters
renderer The renderer to draw on.
vx array of x vector components
vy array of x vector components
n the amount of vectors in the vx and vy array
texture the sdl surface to use to fill the polygon
texture_dx the offset of the texture relative to the screeen. If you move the polygon 10 pixels to the left and want the texture to apear the same you need to increase the texture_dx value
texture_dy see texture_dx
polyInts Preallocated temp array storage for vertex sorting (used for multi-threaded operation)
polyAllocated Flag indicating oif the temp array was allocated (used for multi-threaded operation)
Returns Returns 0 on success, -1 on failure.

int texturedPolygon(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, SDL_Surface* texture, int texture_dx, int texture_dy)

Draws a polygon filled with the given texture.

Parameters
renderer The renderer to draw on.
vx array of x vector components
vy array of x vector components
n the amount of vectors in the vx and vy array
texture the sdl surface to use to fill the polygon
texture_dx the offset of the texture relative to the screeen. if you move the polygon 10 pixels to the left and want the texture to apear the same you need to increase the texture_dx value
texture_dy see texture_dx
Returns Returns 0 on success, -1 on failure.

This standard version is calling multithreaded versions with NULL cache parameters.

void gfxPrimitivesSetFont(const void* fontdata, Uint32 cw, Uint32 ch)

Sets or resets the current global font data.

Parameters
fontdata Pointer to array of font data. Set to NULL, to reset global font to the default 8x8 font.
cw Width of character in bytes. Ignored if fontdata==NULL.
ch Height of character in bytes. Ignored if fontdata==NULL.

The font data array is organized in follows: [fontdata] = [character 0][character 1]...[character 255] where [character n] = [byte 1 row 1][byte 2 row 1]...[byte {pitch} row 1][byte 1 row 2] ...[byte {pitch} row height] where [byte n] = [bit 0]...[bit 7] where [bit n] = [0 for transparent pixel|1 for colored pixel]

void gfxPrimitivesSetFontRotation(Uint32 rotation)

Sets current global font character rotation steps.

Parameters
rotation Number of 90deg clockwise steps to rotate

Default is 0 (no rotation). 1 = 90deg clockwise. 2 = 180deg clockwise. 3 = 270deg clockwise. Changing the rotation, will reset the character cache.

int characterRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, char c, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw a character of the currently set font.

Parameters
renderer The Renderer to draw on.
x X (horizontal) coordinate of the upper left corner of the character.
y Y (vertical) coordinate of the upper left corner of the character.
c The character to draw.
r The red value of the character to draw.
g The green value of the character to draw.
b The blue value of the character to draw.
a The alpha value of the character to draw.
Returns Returns 0 on success, -1 on failure.

int characterColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, char c, Uint32 color)

Draw a character of the currently set font.

Parameters
renderer The renderer to draw on.
x X (horizontal) coordinate of the upper left corner of the character.
y Y (vertical) coordinate of the upper left corner of the character.
c The character to draw.
color The color value of the character to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int stringColor(SDL_Renderer* renderer, Sint16 x, Sint16 y, const char* s, Uint32 color)

Draw a string in the currently set font.

Parameters
renderer The renderer to draw on.
x X (horizontal) coordinate of the upper left corner of the string.
y Y (vertical) coordinate of the upper left corner of the string.
s The string to draw.
color The color value of the string to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

The spacing between consequtive characters in the string is the fixed number of pixels of the character width of the current global font.

int stringRGBA(SDL_Renderer* renderer, Sint16 x, Sint16 y, const char* s, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw a string in the currently set font.

Parameters
renderer The renderer to draw on.
x X (horizontal) coordinate of the upper left corner of the string.
y Y (vertical) coordinate of the upper left corner of the string.
s The string to draw.
r The red value of the string to draw.
g The green value of the string to draw.
b The blue value of the string to draw.
a The alpha value of the string to draw.
Returns Returns 0 on success, -1 on failure.

double _evaluateBezier(double* data, int ndata, double t)

Internal function to calculate bezier interpolator of data array with ndata values at position 't'.

Parameters
data Array of values.
ndata Size of array.
t Position for which to calculate interpolated value. t should be between [0, ndata].
Returns Interpolated value at position t, value[0] when t<0, value[n-1] when t>n.

int bezierColor(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, int s, Uint32 color)

Draw a bezier curve with alpha blending.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the bezier curve.
vy Vertex array containing Y coordinates of the points of the bezier curve.
n Number of points in the vertex array. Minimum number is 3.
s Number of steps for the interpolation. Minimum number is 2.
color The color value of the bezier curve to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int bezierRGBA(SDL_Renderer* renderer, const Sint16* vx, const Sint16* vy, int n, int s, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw a bezier curve with alpha blending.

Parameters
renderer The renderer to draw on.
vx Vertex array containing X coordinates of the points of the bezier curve.
vy Vertex array containing Y coordinates of the points of the bezier curve.
n Number of points in the vertex array. Minimum number is 3.
s Number of steps for the interpolation. Minimum number is 2.
r The red value of the bezier curve to draw.
g The green value of the bezier curve to draw.
b The blue value of the bezier curve to draw.
a The alpha value of the bezier curve to draw.
Returns Returns 0 on success, -1 on failure.

int thickLineColor(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 width, Uint32 color)

Draw a thick line with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the line.
y1 Y coordinate of the first point of the line.
x2 X coordinate of the second point of the line.
y2 Y coordinate of the second point of the line.
width Width of the line in pixels. Must be >0.
color The color value of the line to draw (0xRRGGBBAA).
Returns Returns 0 on success, -1 on failure.

int thickLineRGBA(SDL_Renderer* renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint8 width, Uint8 r, Uint8 g, Uint8 b, Uint8 a)

Draw a thick line with alpha blending.

Parameters
renderer The renderer to draw on.
x1 X coordinate of the first point of the line.
y1 Y coordinate of the first point of the line.
x2 X coordinate of the second point of the line.
y2 Y coordinate of the second point of the line.
width Width of the line in pixels. Must be >0.
r The red value of the character to draw.
g The green value of the character to draw.
b The blue value of the character to draw.
a The alpha value of the character to draw.
Returns Returns 0 on success, -1 on failure.

Variable documentation

static int* gfxPrimitivesPolyIntsGlobal

Global vertex array to use if optional parameters are not given in filledPolygonMT calls.

Note: Used for non-multithreaded (default) operation of filledPolygonMT.

static int gfxPrimitivesPolyAllocatedGlobal

Flag indicating if global vertex array was already allocated.

Note: Used for non-multithreaded (default) operation of filledPolygonMT.

Define documentation

#define DEFAULT_ELLIPSE_OVERSCAN

Internal function to draw ellipse or filled ellipse with blending.

Returns Returns 0 on success, -1 on failure.