SDL3_gfx 1.0.1 Graphics primitives and surface functions for SDL3

Macros | Functions
SDL3_rotozoom.h File Reference
`#include <math.h>`
`#include <SDL3/SDL.h>`

Go to the source code of this file.

## Macros
#define | M_PI 3.1415926535897932384626433832795
#define | SMOOTHING_OFF 0
| Disable anti-aliasing (no smoothing).
#define | SMOOTHING_ON 1
| Enable anti-aliasing (smoothing).
#define | SDL3_ROTOZOOM_SCOPE extern

## Functions
SDL3_ROTOZOOM_SCOPE SDL_Surface * | rotozoomSurface (SDL_Surface *src, double angle, double zoom, int smooth)
| Rotates and zooms a surface and optional anti-aliasing.
SDL3_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.
SDL3_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.
SDL3_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.
SDL3_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.
SDL3_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.
SDL3_ROTOZOOM_SCOPE SDL_Surface * | shrinkSurface (SDL_Surface *src, int factorx, int factory)
| Shrink a surface by an integer ratio using averaging.
SDL3_ROTOZOOM_SCOPE SDL_Surface * | rotateSurface90Degrees (SDL_Surface *src, int numClockwiseTurns)
| Rotates a 8/16/24/32 bit surface in increments of 90 degrees.

## Macro Definition Documentation

## ◆ M_PI

#define M_PI 3.1415926535897932384626433832795

Definition at line 41 of file SDL3_rotozoom.h.

## ◆ SDL3_ROTOZOOM_SCOPE

#define SDL3_ROTOZOOM_SCOPE extern

Definition at line 70 of file SDL3_rotozoom.h.

## ◆ SMOOTHING_OFF

#define SMOOTHING_OFF 0

Disable anti-aliasing (no smoothing).

Definition at line 51 of file SDL3_rotozoom.h.

## ◆ SMOOTHING_ON

#define SMOOTHING_ON 1

Enable anti-aliasing (smoothing).

Definition at line 56 of file SDL3_rotozoom.h.

## Function Documentation

## ◆ rotateSurface90Degrees()

SDL3_ROTOZOOM_SCOPE SDL_Surface * rotateSurface90Degrees | ( | SDL_Surface * | src,
|  | int | numClockwiseTurns )

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

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)

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.

Definition at line 784 of file SDL3_rotozoom.c.

## ◆ rotozoomSurface()

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

Rotates and zooms a surface and optional anti-aliasing.

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.

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.

Definition at line 1014 of file SDL3_rotozoom.c.

## ◆ rotozoomSurfaceSize()

SDL3_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.

Definition at line 992 of file SDL3_rotozoom.c.

## ◆ rotozoomSurfaceSizeXY()

SDL3_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.

Definition at line 975 of file SDL3_rotozoom.c.

## ◆ rotozoomSurfaceXY()

SDL3_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.

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.

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.

Definition at line 1035 of file SDL3_rotozoom.c.

## ◆ shrinkSurface()

SDL3_ROTOZOOM_SCOPE SDL_Surface * shrinkSurface | ( | SDL_Surface * | src,
|  | int | factorx,
|  | int | factory )

Shrink a surface by an integer ratio using averaging.

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.

Parameters

  src | The surface to shrink.
  factorx | The horizontal shrinking ratio.
  factory | The vertical shrinking ratio.

Returns
  The new, shrunken surface.

Definition at line 1487 of file SDL3_rotozoom.c.

## ◆ zoomSurface()

SDL3_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.

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.

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.

Definition at line 1338 of file SDL3_rotozoom.c.

## ◆ zoomSurfaceSize()

SDL3_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.

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

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.

Definition at line 1288 of file SDL3_rotozoom.c.