SDL2_rotozoom.hpp file

Functions

auto rotozoomSurface(SDL_Surface* src, double angle, double zoom, int smooth) -> SDL2_ROTOZOOM_SCOPE SDL_Surface*
Rotates and zooms a surface and optional anti-aliasing.
auto rotozoomSurfaceXY(SDL_Surface* src, double angle, double zoomx, double zoomy, int smooth) -> SDL2_ROTOZOOM_SCOPE SDL_Surface*
Rotates and zooms a surface with different horizontal and vertival scaling factors and optional anti-aliasing.
auto rotozoomSurfaceSize(int width, int height, double angle, double zoom, int* dstwidth, int* dstheight) -> SDL2_ROTOZOOM_SCOPE void
Returns the size of the resulting target surface for a rotozoomSurface() call.
auto rotozoomSurfaceSizeXY(int width, int height, double angle, double zoomx, double zoomy, int* dstwidth, int* dstheight) -> SDL2_ROTOZOOM_SCOPE void
Returns the size of the resulting target surface for a rotozoomSurfaceXY() call.
auto zoomSurface(SDL_Surface* src, double zoomx, double zoomy, int smooth) -> SDL2_ROTOZOOM_SCOPE SDL_Surface*
Zoom a surface by independent horizontal and vertical factors with optional smoothing.
auto zoomSurfaceSize(int width, int height, double zoomx, double zoomy, int* dstwidth, int* dstheight) -> SDL2_ROTOZOOM_SCOPE void
Calculates the size of the target surface for a zoomSurface() call.
auto shrinkSurface(SDL_Surface* src, int factorx, int factory) -> SDL2_ROTOZOOM_SCOPE SDL_Surface*
Shrink a surface by an integer ratio using averaging.
auto rotateSurface90Degrees(SDL_Surface* src, int numClockwiseTurns) -> SDL2_ROTOZOOM_SCOPE SDL_Surface*
Rotates a 8/16/24/32 bit surface in increments of 90 degrees.

Defines

#define M_PI
#define SMOOTHING_OFF
Disable anti-aliasing (no smoothing).
#define SMOOTHING_ON
Enable anti-aliasing (smoothing).
#define SDL2_ROTOZOOM_SCOPE

Function documentation

SDL2_ROTOZOOM_SCOPE SDL_Surface* rotozoomSurface(SDL_Surface* src, double angle, double zoom, int smooth)

Rotates and zooms a surface and optional anti-aliasing.

Parameters
src The surface to rotozoom.
angle The angle to rotate in degrees.
zoom The scaling factor.
smooth Antialiasing flag; set to SMOOTHING_ON to enable.
Returns The new rotozoomed surface.

Rotates and zoomes a 32bit or 8bit 'src' surface to newly created 'dst' surface. 'angle' is the rotation in degrees and 'zoom' a scaling factor. If 'smooth' is set then the destination 32bit surface is anti-aliased. If the surface is not 8bit or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly.

SDL2_ROTOZOOM_SCOPE SDL_Surface* rotozoomSurfaceXY(SDL_Surface* src, double angle, double zoomx, double zoomy, int smooth)

Rotates and zooms a surface with different horizontal and vertival scaling factors and optional anti-aliasing.

Parameters
src The surface to rotozoom.
angle The angle to rotate in degrees.
zoomx The horizontal scaling factor.
zoomy The vertical scaling factor.
smooth Antialiasing flag; set to SMOOTHING_ON to enable.
Returns The new rotozoomed surface.

Rotates and zooms a 32bit or 8bit 'src' surface to newly created 'dst' surface. 'angle' is the rotation in degrees, 'zoomx and 'zoomy' scaling factors. If 'smooth' is set then the destination 32bit surface is anti-aliased. If the surface is not 8bit or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly.

SDL2_ROTOZOOM_SCOPE void rotozoomSurfaceSize(int width, int height, double angle, double zoom, int* dstwidth, int* dstheight)

Returns the size of the resulting target surface for a rotozoomSurface() call.

Parameters
width The source surface width.
height The source surface height.
angle The angle to rotate in degrees.
zoom The scaling factor.
dstwidth The calculated width of the rotozoomed destination surface.
dstheight The calculated height of the rotozoomed destination surface.

SDL2_ROTOZOOM_SCOPE void rotozoomSurfaceSizeXY(int width, int height, double angle, double zoomx, double zoomy, int* dstwidth, int* dstheight)

Returns the size of the resulting target surface for a rotozoomSurfaceXY() call.

Parameters
width The source surface width.
height The source surface height.
angle The angle to rotate in degrees.
zoomx The horizontal scaling factor.
zoomy The vertical scaling factor.
dstwidth The calculated width of the rotozoomed destination surface.
dstheight The calculated height of the rotozoomed destination surface.

SDL2_ROTOZOOM_SCOPE SDL_Surface* zoomSurface(SDL_Surface* src, double zoomx, double zoomy, int smooth)

Zoom a surface by independent horizontal and vertical factors with optional smoothing.

Parameters
src The surface to zoom.
zoomx The horizontal zoom factor.
zoomy The vertical zoom factor.
smooth Antialiasing flag; set to SMOOTHING_ON to enable.
Returns The new, zoomed surface.

Zooms a 32bit or 8bit 'src' surface to newly created 'dst' surface. 'zoomx' and 'zoomy' are scaling factors for width and height. If 'smooth' is on then the destination 32bit surface is anti-aliased. If the surface is not 8bit or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly. If zoom factors are negative, the image is flipped on the axes.

SDL2_ROTOZOOM_SCOPE void zoomSurfaceSize(int width, int height, double zoomx, double zoomy, int* dstwidth, int* dstheight)

Calculates the size of the target surface for a zoomSurface() call.

Parameters
width The width of the source surface to zoom.
height The height of the source surface to zoom.
zoomx The horizontal zoom factor.
zoomy The vertical zoom factor.
dstwidth Pointer to an integer to store the calculated width of the zoomed target surface.
dstheight Pointer to an integer to store the calculated height of the zoomed target surface.

The minimum size of the target surface is 1. The input factors can be positive or negative.

SDL2_ROTOZOOM_SCOPE SDL_Surface* shrinkSurface(SDL_Surface* src, int factorx, int factory)

Shrink a surface by an integer ratio using averaging.

Parameters
src The surface to shrink.
factorx The horizontal shrinking ratio.
factory The vertical shrinking ratio.
Returns The new, shrunken surface.

Shrinks a 32bit or 8bit 'src' surface to a newly created 'dst' surface. 'factorx' and 'factory' are the shrinking ratios (i.e. 2=1/2 the size, 3=1/3 the size, etc.) The destination surface is antialiased by averaging the source box RGBA or Y information. If the surface is not 8bit or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly. The input surface is not modified. The output surface is newly allocated.

SDL2_ROTOZOOM_SCOPE SDL_Surface* rotateSurface90Degrees(SDL_Surface* src, int numClockwiseTurns)

Rotates a 8/16/24/32 bit surface in increments of 90 degrees.

Parameters
src Source surface to rotate.
numClockwiseTurns Number of clockwise 90 degree turns to apply to the source.
Returns The new, rotated surface; or NULL for surfaces with incorrect input format.

Specialized 90 degree rotator which rotates a 'src' surface in 90 degree increments clockwise returning a new surface. Faster than rotozoomer since no scanning or interpolation takes place. Input surface must be 8/16/24/32 bit. (code contributed by J. Schiller, improved by C. Allport and A. Schiffler)