LMMS
Loading...
Searching...
No Matches
juce::AffineTransform Class Referencefinal

#include <juce_AffineTransform.h>

Public Member Functions

 AffineTransform ()=default
 AffineTransform (const AffineTransform &)=default
 AffineTransform (float mat00, float mat01, float mat02, float mat10, float mat11, float mat12) noexcept
AffineTransformoperator= (const AffineTransform &)=default
bool operator== (const AffineTransform &other) const noexcept
bool operator!= (const AffineTransform &other) const noexcept
template<typename ValueType>
void transformPoint (ValueType &x, ValueType &y) const noexcept
template<typename ValueType>
void transformPoints (ValueType &x1, ValueType &y1, ValueType &x2, ValueType &y2) const noexcept
template<typename ValueType>
void transformPoints (ValueType &x1, ValueType &y1, ValueType &x2, ValueType &y2, ValueType &x3, ValueType &y3) const noexcept
AffineTransform translated (float deltaX, float deltaY) const noexcept
template<typename PointType>
AffineTransform translated (PointType delta) const noexcept
AffineTransform withAbsoluteTranslation (float translationX, float translationY) const noexcept
AffineTransform rotated (float angleInRadians) const noexcept
AffineTransform rotated (float angleInRadians, float pivotX, float pivotY) const noexcept
AffineTransform scaled (float factorX, float factorY) const noexcept
AffineTransform scaled (float factor) const noexcept
AffineTransform scaled (float factorX, float factorY, float pivotX, float pivotY) const noexcept
AffineTransform sheared (float shearX, float shearY) const noexcept
AffineTransform inverted () const noexcept
AffineTransform followedBy (const AffineTransform &other) const noexcept
bool isIdentity () const noexcept
bool isSingularity () const noexcept
bool isOnlyTranslation () const noexcept
float getTranslationX () const noexcept
float getTranslationY () const noexcept
float getDeterminant () const noexcept
float getScaleFactor () const noexcept

Static Public Member Functions

static AffineTransform translation (float deltaX, float deltaY) noexcept
template<typename PointType>
static AffineTransform translation (PointType delta) noexcept
static AffineTransform rotation (float angleInRadians) noexcept
static AffineTransform rotation (float angleInRadians, float pivotX, float pivotY) noexcept
static AffineTransform scale (float factorX, float factorY) noexcept
static AffineTransform scale (float factor) noexcept
static AffineTransform scale (float factorX, float factorY, float pivotX, float pivotY) noexcept
static AffineTransform shear (float shearX, float shearY) noexcept
static AffineTransform verticalFlip (float height) noexcept
static AffineTransform fromTargetPoints (float x00, float y00, float x10, float y10, float x01, float y01) noexcept
static AffineTransform fromTargetPoints (float sourceX1, float sourceY1, float targetX1, float targetY1, float sourceX2, float sourceY2, float targetX2, float targetY2, float sourceX3, float sourceY3, float targetX3, float targetY3) noexcept
template<typename PointType>
static AffineTransform fromTargetPoints (PointType source1, PointType target1, PointType source2, PointType target2, PointType source3, PointType target3) noexcept

Public Attributes

float mat00 { 1.0f }
float mat01 { 0.0f }
float mat02 { 0.0f }
float mat10 { 0.0f }
float mat11 { 1.0f }
float mat12 { 0.0f }

Static Public Attributes

static const AffineTransform identity

Detailed Description

Represents a 2D affine-transformation matrix.

An affine transformation is a transformation such as a rotation, scale, shear, resize or translation.

These are used for various 2D transformation tasks, e.g. with Path objects.

See also
Path, Point, Line

@tags{Graphics}

Constructor & Destructor Documentation

◆ AffineTransform() [1/3]

juce::AffineTransform::AffineTransform ( )
default

Creates an identity transform.

◆ AffineTransform() [2/3]

juce::AffineTransform::AffineTransform ( const AffineTransform & )
default

Creates a copy of another transform.

◆ AffineTransform() [3/3]

juce::AffineTransform::AffineTransform ( float mat00,
float mat01,
float mat02,
float mat10,
float mat11,
float mat12 )
noexcept

Creates a transform from a set of raw matrix values.

The resulting matrix is:

(mat00 mat01 mat02)
(mat10 mat11 mat12)
(  0     0     1  )

Member Function Documentation

◆ followedBy()

AffineTransform juce::AffineTransform::followedBy ( const AffineTransform & other) const
noexcept

Returns the result of concatenating another transformation after this one.

◆ fromTargetPoints() [1/3]

AffineTransform juce::AffineTransform::fromTargetPoints ( float sourceX1,
float sourceY1,
float targetX1,
float targetY1,
float sourceX2,
float sourceY2,
float targetX2,
float targetY2,
float sourceX3,
float sourceY3,
float targetX3,
float targetY3 )
staticnoexcept

Returns the transform that will map three specified points onto three target points.

◆ fromTargetPoints() [2/3]

AffineTransform juce::AffineTransform::fromTargetPoints ( float x00,
float y00,
float x10,
float y10,
float x01,
float y01 )
staticnoexcept

Returns the transform that will map three known points onto three coordinates that are supplied.

This returns the transform that will transform (0, 0) into (x00, y00), (1, 0) to (x10, y10), and (0, 1) to (x01, y01).

◆ fromTargetPoints() [3/3]

template<typename PointType>
AffineTransform juce::AffineTransform::fromTargetPoints ( PointType source1,
PointType target1,
PointType source2,
PointType target2,
PointType source3,
PointType target3 )
inlinestaticnoexcept

Returns the transform that will map three specified points onto three target points.

◆ getDeterminant()

float juce::AffineTransform::getDeterminant ( ) const
noexcept

Returns the determinant of the transform.

◆ getScaleFactor()

float juce::AffineTransform::getScaleFactor ( ) const
noexcept

This method has been deprecated.

You can calculate the scale factor using:

std::sqrt (std::abs (AffineTransform::getDeterminant()))
float getDeterminant() const noexcept
Definition juce_AffineTransform.cpp:238

This method produces incorrect values for transforms containing rotations.

Returns the approximate scale factor by which lengths will be transformed. Obviously a length may be scaled by entirely different amounts depending on its direction, so this is only appropriate as a rough guide.

◆ getTranslationX()

float juce::AffineTransform::getTranslationX ( ) const
inlinenoexcept

If this transform is only a translation, this returns the X offset.

See also
isOnlyTranslation

◆ getTranslationY()

float juce::AffineTransform::getTranslationY ( ) const
inlinenoexcept

If this transform is only a translation, this returns the X offset.

See also
isOnlyTranslation

◆ inverted()

AffineTransform juce::AffineTransform::inverted ( ) const
noexcept

Returns a matrix which is the inverse operation of this one.

Some matrices don't have an inverse - in this case, the method will just return an identity transform.

◆ isIdentity()

bool juce::AffineTransform::isIdentity ( ) const
noexcept

Returns true if this transform has no effect on points.

◆ isOnlyTranslation()

bool juce::AffineTransform::isOnlyTranslation ( ) const
noexcept

Returns true if the transform only translates, and doesn't scale or rotate the points.

◆ isSingularity()

bool juce::AffineTransform::isSingularity ( ) const
noexcept

Returns true if this transform maps to a singularity - i.e. if it has no inverse.

◆ operator!=()

bool juce::AffineTransform::operator!= ( const AffineTransform & other) const
noexcept

Compares two transforms.

◆ operator=()

AffineTransform & juce::AffineTransform::operator= ( const AffineTransform & )
default

Copies from another AffineTransform object

◆ operator==()

bool juce::AffineTransform::operator== ( const AffineTransform & other) const
noexcept

Compares two transforms.

◆ rotated() [1/2]

AffineTransform juce::AffineTransform::rotated ( float angleInRadians) const
noexcept

Returns a transform which is the same as this one followed by a rotation.

The rotation is specified by a number of radians to rotate clockwise, centred around the origin (0, 0).

◆ rotated() [2/2]

AffineTransform juce::AffineTransform::rotated ( float angleInRadians,
float pivotX,
float pivotY ) const
noexcept

Returns a transform which is the same as this one followed by a rotation about a given point.

The rotation is specified by a number of radians to rotate clockwise, centred around the coordinates passed in.

◆ rotation() [1/2]

AffineTransform juce::AffineTransform::rotation ( float angleInRadians)
staticnoexcept

Returns a new transform which is a rotation about (0, 0).

◆ rotation() [2/2]

AffineTransform juce::AffineTransform::rotation ( float angleInRadians,
float pivotX,
float pivotY )
staticnoexcept

Returns a new transform which is a rotation about a given point.

◆ scale() [1/3]

AffineTransform juce::AffineTransform::scale ( float factor)
staticnoexcept

Returns a new transform which is a re-scale about the origin.

◆ scale() [2/3]

AffineTransform juce::AffineTransform::scale ( float factorX,
float factorY )
staticnoexcept

Returns a new transform which is a re-scale about the origin.

◆ scale() [3/3]

AffineTransform juce::AffineTransform::scale ( float factorX,
float factorY,
float pivotX,
float pivotY )
staticnoexcept

Returns a new transform which is a re-scale centred around the point provided.

◆ scaled() [1/3]

AffineTransform juce::AffineTransform::scaled ( float factor) const
noexcept

Returns a transform which is the same as this one followed by a re-scaling. The scaling is centred around the origin (0, 0).

◆ scaled() [2/3]

AffineTransform juce::AffineTransform::scaled ( float factorX,
float factorY ) const
noexcept

Returns a transform which is the same as this one followed by a re-scaling. The scaling is centred around the origin (0, 0).

◆ scaled() [3/3]

AffineTransform juce::AffineTransform::scaled ( float factorX,
float factorY,
float pivotX,
float pivotY ) const
noexcept

Returns a transform which is the same as this one followed by a re-scaling. The scaling is centred around the origin provided.

◆ shear()

AffineTransform juce::AffineTransform::shear ( float shearX,
float shearY )
staticnoexcept

Returns a shear transform, centred around the origin (0, 0).

◆ sheared()

AffineTransform juce::AffineTransform::sheared ( float shearX,
float shearY ) const
noexcept

Returns a transform which is the same as this one followed by a shear. The shear is centred around the origin (0, 0).

◆ transformPoint()

template<typename ValueType>
void juce::AffineTransform::transformPoint ( ValueType & x,
ValueType & y ) const
inlinenoexcept

Transforms a 2D coordinate using this matrix.

◆ transformPoints() [1/2]

template<typename ValueType>
void juce::AffineTransform::transformPoints ( ValueType & x1,
ValueType & y1,
ValueType & x2,
ValueType & y2 ) const
inlinenoexcept

Transforms two 2D coordinates using this matrix. This is just a shortcut for calling transformPoint() on each of these pairs of coordinates in turn. (And putting all the calculations into one function hopefully also gives the compiler a bit more scope for pipelining it).

◆ transformPoints() [2/2]

template<typename ValueType>
void juce::AffineTransform::transformPoints ( ValueType & x1,
ValueType & y1,
ValueType & x2,
ValueType & y2,
ValueType & x3,
ValueType & y3 ) const
inlinenoexcept

Transforms three 2D coordinates using this matrix. This is just a shortcut for calling transformPoint() on each of these pairs of coordinates in turn. (And putting all the calculations into one function hopefully also gives the compiler a bit more scope for pipelining it).

◆ translated() [1/2]

AffineTransform juce::AffineTransform::translated ( float deltaX,
float deltaY ) const
noexcept

Returns a new transform which is the same as this one followed by a translation.

◆ translated() [2/2]

template<typename PointType>
AffineTransform juce::AffineTransform::translated ( PointType delta) const
inlinenoexcept

Returns a new transform which is the same as this one followed by a translation.

◆ translation() [1/2]

AffineTransform juce::AffineTransform::translation ( float deltaX,
float deltaY )
staticnoexcept

Returns a new transform which is a translation.

◆ translation() [2/2]

template<typename PointType>
AffineTransform juce::AffineTransform::translation ( PointType delta)
inlinestaticnoexcept

Returns a new transform which is a translation.

◆ verticalFlip()

AffineTransform juce::AffineTransform::verticalFlip ( float height)
staticnoexcept

Returns a transform that will flip coordinates vertically within a window of the given height. This is handy for converting between upside-down coordinate systems such as OpenGL or CoreGraphics.

◆ withAbsoluteTranslation()

AffineTransform juce::AffineTransform::withAbsoluteTranslation ( float translationX,
float translationY ) const
noexcept

Returns a copy of this transform with the specified translation matrix values.

Member Data Documentation

◆ identity

const AffineTransform juce::AffineTransform::identity
static

◆ mat00

float juce::AffineTransform::mat00 { 1.0f }

◆ mat01

float juce::AffineTransform::mat01 { 0.0f }

◆ mat02

float juce::AffineTransform::mat02 { 0.0f }

◆ mat10

float juce::AffineTransform::mat10 { 0.0f }

◆ mat11

float juce::AffineTransform::mat11 { 1.0f }

◆ mat12

float juce::AffineTransform::mat12 { 0.0f }

The documentation for this class was generated from the following files: