Represents a 2D affine-transformation matrix. More...
#include <juce_AffineTransform.h>
Public Member Functions | |
AffineTransform ()=default | |
Creates an identity transform. More... | |
AffineTransform (const AffineTransform &)=default | |
Creates a copy of another transform. More... | |
AffineTransform (float mat00, float mat01, float mat02, float mat10, float mat11, float mat12) noexcept | |
Creates a transform from a set of raw matrix values. More... | |
AffineTransform | followedBy (const AffineTransform &other) const noexcept |
Returns the result of concatenating another transformation after this one. More... | |
float | getDeterminant () const noexcept |
Returns the determinant of the transform. More... | |
float | getTranslationX () const noexcept |
If this transform is only a translation, this returns the X offset. More... | |
float | getTranslationY () const noexcept |
If this transform is only a translation, this returns the X offset. More... | |
AffineTransform | inverted () const noexcept |
Returns a matrix which is the inverse operation of this one. More... | |
bool | isIdentity () const noexcept |
Returns true if this transform has no effect on points. More... | |
bool | isOnlyTranslation () const noexcept |
Returns true if the transform only translates, and doesn't scale or rotate the points. More... | |
bool | isSingularity () const noexcept |
Returns true if this transform maps to a singularity - i.e. More... | |
bool | operator!= (const AffineTransform &other) const noexcept |
Compares two transforms. More... | |
AffineTransform & | operator= (const AffineTransform &)=default |
Copies from another AffineTransform object. More... | |
bool | operator== (const AffineTransform &other) const noexcept |
Compares two transforms. More... | |
AffineTransform | rotated (float angleInRadians) const noexcept |
Returns a transform which is the same as this one followed by a rotation. More... | |
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. More... | |
AffineTransform | scaled (float factor) const noexcept |
Returns a transform which is the same as this one followed by a re-scaling. More... | |
AffineTransform | scaled (float factorX, float factorY) const noexcept |
Returns a transform which is the same as this one followed by a re-scaling. More... | |
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. More... | |
AffineTransform | sheared (float shearX, float shearY) const noexcept |
Returns a transform which is the same as this one followed by a shear. More... | |
template<typename ValueType > | |
void | transformPoint (ValueType &x, ValueType &y) const noexcept |
Transforms a 2D coordinate using this matrix. More... | |
template<typename ValueType > | |
void | transformPoints (ValueType &x1, ValueType &y1, ValueType &x2, ValueType &y2) const noexcept |
Transforms two 2D coordinates using this matrix. More... | |
template<typename ValueType > | |
void | transformPoints (ValueType &x1, ValueType &y1, ValueType &x2, ValueType &y2, ValueType &x3, ValueType &y3) const noexcept |
Transforms three 2D coordinates using this matrix. More... | |
AffineTransform | translated (float deltaX, float deltaY) const noexcept |
Returns a new transform which is the same as this one followed by a translation. More... | |
template<typename PointType > | |
AffineTransform | translated (PointType delta) const noexcept |
Returns a new transform which is the same as this one followed by a translation. More... | |
AffineTransform | withAbsoluteTranslation (float translationX, float translationY) const noexcept |
Returns a copy of this transform with the specified translation matrix values. More... | |
Static Public Member Functions | |
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 |
Returns the transform that will map three specified points onto three target points. More... | |
static AffineTransform | fromTargetPoints (float x00, float y00, float x10, float y10, float x01, float y01) noexcept |
Returns the transform that will map three known points onto three coordinates that are supplied. More... | |
template<typename PointType > | |
static AffineTransform | fromTargetPoints (PointType source1, PointType target1, PointType source2, PointType target2, PointType source3, PointType target3) noexcept |
Returns the transform that will map three specified points onto three target points. More... | |
static AffineTransform | rotation (float angleInRadians) noexcept |
Returns a new transform which is a rotation about (0, 0). More... | |
static AffineTransform | rotation (float angleInRadians, float pivotX, float pivotY) noexcept |
Returns a new transform which is a rotation about a given point. More... | |
static AffineTransform | scale (float factor) noexcept |
Returns a new transform which is a re-scale about the origin. More... | |
static AffineTransform | scale (float factorX, float factorY) noexcept |
Returns a new transform which is a re-scale about the origin. More... | |
static AffineTransform | scale (float factorX, float factorY, float pivotX, float pivotY) noexcept |
Returns a new transform which is a re-scale centred around the point provided. More... | |
static AffineTransform | shear (float shearX, float shearY) noexcept |
Returns a shear transform, centred around the origin (0, 0). More... | |
static AffineTransform | translation (float deltaX, float deltaY) noexcept |
Returns a new transform which is a translation. More... | |
template<typename PointType > | |
static AffineTransform | translation (PointType delta) noexcept |
Returns a new transform which is a translation. More... | |
static AffineTransform | verticalFlip (float height) noexcept |
Returns a transform that will flip coordinates vertically within a window of the given height. More... | |
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 } |
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.
@tags{Graphics}
|
default |
Creates an identity transform.
|
default |
Creates a copy of another transform.
|
noexcept |
Creates a transform from a set of raw matrix values.
The resulting matrix is:
(mat00 mat01 mat02) (mat10 mat11 mat12) ( 0 0 1 )
|
noexcept |
Returns the result of concatenating another transformation after this one.
Referenced by juce::RenderingHelpers::SoftwareRendererSavedState::drawGlyph(), juce::RenderingHelpers::TranslationOrTransform::getTransformWith(), and juce::RenderingHelpers::TranslationOrTransform::setOrigin().
|
staticnoexcept |
Returns the transform that will map three specified points onto three target points.
|
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).
|
inlinestaticnoexcept |
Returns the transform that will map three specified points onto three target points.
References juce::gl::target1, juce::gl::target2, and juce::gl::target3.
|
noexcept |
Returns the determinant of the transform.
|
inlinenoexcept |
If this transform is only a translation, this returns the X offset.
Referenced by juce::RenderingHelpers::SoftwareRendererSavedState::drawGlyph().
|
inlinenoexcept |
If this transform is only a translation, this returns the X offset.
Referenced by juce::RenderingHelpers::SoftwareRendererSavedState::drawGlyph().
|
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.
|
noexcept |
Returns true if this transform has no effect on points.
|
noexcept |
Returns true if the transform only translates, and doesn't scale or rotate the points.
Referenced by juce::RenderingHelpers::SoftwareRendererSavedState::drawGlyph().
|
noexcept |
Returns true if this transform maps to a singularity - i.e.
if it has no inverse.
|
noexcept |
Compares two transforms.
|
default |
Copies from another AffineTransform object.
|
noexcept |
Compares two transforms.
|
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).
|
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.
|
staticnoexcept |
Returns a new transform which is a rotation about (0, 0).
|
staticnoexcept |
Returns a new transform which is a rotation about a given point.
|
staticnoexcept |
Returns a new transform which is a re-scale about the origin.
|
staticnoexcept |
Returns a new transform which is a re-scale about the origin.
Referenced by juce::RenderingHelpers::SoftwareRendererSavedState::drawGlyph(), and juce::RenderingHelpers::CachedGlyphEdgeTable< RendererType >::generate().
|
staticnoexcept |
Returns a new transform which is a re-scale centred around the point provided.
|
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).
|
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).
|
noexcept |
Returns a transform which is the same as this one followed by a re-scaling.
The scaling is centred around the origin provided.
|
staticnoexcept |
Returns a shear transform, centred around the origin (0, 0).
|
noexcept |
Returns a transform which is the same as this one followed by a shear.
The shear is centred around the origin (0, 0).
|
inlinenoexcept |
Transforms a 2D coordinate using this matrix.
References juce::gl::x, and juce::gl::y.
|
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).
References juce::gl::x1, juce::gl::x2, juce::gl::y1, and juce::gl::y2.
|
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).
References juce::gl::x1, juce::gl::x2, juce::gl::y1, and juce::gl::y2.
|
noexcept |
Returns a new transform which is the same as this one followed by a translation.
Referenced by juce::RenderingHelpers::TranslationOrTransform::getTransformWith().
|
inlinenoexcept |
Returns a new transform which is the same as this one followed by a translation.
|
staticnoexcept |
Returns a new transform which is a translation.
Referenced by juce::RenderingHelpers::SoftwareRendererSavedState::endTransparencyLayer(), juce::RenderingHelpers::TranslationOrTransform::getTransform(), and juce::RenderingHelpers::TranslationOrTransform::setOrigin().
|
inlinestaticnoexcept |
Returns a new transform which is a translation.
|
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.
|
noexcept |
Returns a copy of this transform with the specified translation matrix values.
float juce::AffineTransform::mat00 { 1.0f } |
float juce::AffineTransform::mat01 { 0.0f } |
float juce::AffineTransform::mat02 { 0.0f } |
float juce::AffineTransform::mat10 { 0.0f } |
float juce::AffineTransform::mat11 { 1.0f } |
float juce::AffineTransform::mat12 { 0.0f } |