CartoType C++ API 8.8-7-gb35e4dc71
for Windows, Linux, Qt and other platforms supporting C++ development
Public Member Functions | List of all members
CartoTypeCore::AffineTransform Class Reference

#include <cartotype_transform.h>

Public Member Functions

 AffineTransform (double aA, double aB, double aC, double aD, double aTx, double aTy)
 
 AffineTransform (InputStream &aInput)
 
void Transform (double &aX, double &aY) const
 
void Transform (Point &aPoint) const
 
void Transform (PointFP &aPoint) const
 
void Transform (Rect &aRect) const
 
void Transform (RectFP &aRect) const
 
void Concat (const AffineTransform &aTransform)
 
void Prefix (const AffineTransform &aTransform)
 
void Scale (double aXScale, double aYScale)
 
void ExtractScale (double &aXScale, double &aYScale)
 
void Invert ()
 
void Translate (double aX, double aY)
 
void Rotate (double aAngle)
 
void Rotate (double aX, double aY)
 
void ReflectY (double aY)
 
double A () const
 
double B () const
 
double C () const
 
double D () const
 
double Tx () const
 
double Ty () const
 
PointFP CenterOfRotation () const
 
TransformComponents Components () const
 
AffineTransform Interpolate (const AffineTransform &aOther, double aTime)
 
bool operator== (const AffineTransform &aTransform) const
 
bool operator!= (const AffineTransform &aTransform) const
 
uint32_t Type () const
 
bool IsIdentity () const
 
void Write (OutputStream &aOutput) const
 

Detailed Description

An affine 2D transformation.

Constructor & Destructor Documentation

◆ AffineTransform() [1/2]

CartoTypeCore::AffineTransform::AffineTransform ( double  aA,
double  aB,
double  aC,
double  aD,
double  aTx,
double  aTy 
)

Creates an affine 2D transform, specifying all 6 components.

◆ AffineTransform() [2/2]

CartoTypeCore::AffineTransform::AffineTransform ( InputStream aInput)
explicit

Reads this transform in serialized form by reading the six components A, B, C, D, Tx, Ty as double-precision floating point numbers. Throws an exception on failure.

Member Function Documentation

◆ A()

double CartoTypeCore::AffineTransform::A ( ) const
inline

Return the A (x scale) parameter.

◆ B()

double CartoTypeCore::AffineTransform::B ( ) const
inline

Returns the B (y shear) parameter.

◆ C()

double CartoTypeCore::AffineTransform::C ( ) const
inline

Returns the C (x shear) parameter.

◆ CenterOfRotation()

PointFP CartoTypeCore::AffineTransform::CenterOfRotation ( ) const

Returns the center of rotation of the projection.

◆ Components()

TransformComponents CartoTypeCore::AffineTransform::Components ( ) const

Returns the components of this transform.

◆ Concat()

void CartoTypeCore::AffineTransform::Concat ( const AffineTransform aTransform)

Concatenates aTransform to this transform.

◆ D()

double CartoTypeCore::AffineTransform::D ( ) const
inline

Returns the D (y scale) parameter.

◆ ExtractScale()

void CartoTypeCore::AffineTransform::ExtractScale ( double &  aXScale,
double &  aYScale 
)

Removes the non-negative scale components from a transform and returns them in aXScale and aYScale. There is no unique way of doing this, but the method chosen here minimises shear and prefers to decompose into scale plus rotation.

◆ Interpolate()

AffineTransform CartoTypeCore::AffineTransform::Interpolate ( const AffineTransform aOther,
double  aTime 
)

Interpolate between two transformations, which are assumed to consist of translation, rotation and scale only; no shear.

◆ Invert()

void CartoTypeCore::AffineTransform::Invert ( )

Inverts a transform if it is invertible. If not, throws KErrorNoInverse.

◆ IsIdentity()

bool CartoTypeCore::AffineTransform::IsIdentity ( ) const
inline

Returns true if this is the identity transform.

◆ operator!=()

bool CartoTypeCore::AffineTransform::operator!= ( const AffineTransform aTransform) const
inline

The inequality operator.

◆ operator==()

bool CartoTypeCore::AffineTransform::operator== ( const AffineTransform aTransform) const

The equality operator.

◆ Prefix()

void CartoTypeCore::AffineTransform::Prefix ( const AffineTransform aTransform)

Prefixes aTransform to this transform.

◆ ReflectY()

void CartoTypeCore::AffineTransform::ReflectY ( double  aY)
inline

Concatenates a reflection about the line y=aY to this transform.

◆ Rotate() [1/2]

void CartoTypeCore::AffineTransform::Rotate ( double  aAngle)

Concatenates a rotation by aAngle radians to this transform.

◆ Rotate() [2/2]

void CartoTypeCore::AffineTransform::Rotate ( double  aX,
double  aY 
)
inline

Concatenates the rotation defined by Atan2(aY,aX) to this transform.

◆ Scale()

void CartoTypeCore::AffineTransform::Scale ( double  aXScale,
double  aYScale 
)

Scales a transform by aXScale and aYScale. Does nothing if either XScale and YScale is 0, which creates a non-invertible matrix.

◆ Transform() [1/5]

void CartoTypeCore::AffineTransform::Transform ( double &  aX,
double &  aY 
) const
inline

Transforms the point (aX,aY).

◆ Transform() [2/5]

void CartoTypeCore::AffineTransform::Transform ( Point aPoint) const

Transforms aPoint.

◆ Transform() [3/5]

void CartoTypeCore::AffineTransform::Transform ( PointFP aPoint) const

Transforms aPoint.

◆ Transform() [4/5]

void CartoTypeCore::AffineTransform::Transform ( Rect aRect) const

Transform a grid-aligned rectangle. The result is the grid-aligned bounds of the transformed rectangle, so the operation cannot be reversed by the inverse transform.

◆ Transform() [5/5]

void CartoTypeCore::AffineTransform::Transform ( RectFP aRect) const

Transform a grid-aligned rectangle. The result is the grid-aligned bounds of the transformed rectangle, so the operation cannot be reversed by the inverse transform.

◆ Translate()

void CartoTypeCore::AffineTransform::Translate ( double  aX,
double  aY 
)
inline

Concatenates the translation (aX,aY) to this transform.

◆ Tx()

double CartoTypeCore::AffineTransform::Tx ( ) const
inline

Returns the TX (x translation) parameter.

◆ Ty()

double CartoTypeCore::AffineTransform::Ty ( ) const
inline

Returns the TY (y translation) parameter.

◆ Type()

uint32_t CartoTypeCore::AffineTransform::Type ( ) const

Returns the type of this transform as a combination of bit flags defined in TransformType.

◆ Write()

void CartoTypeCore::AffineTransform::Write ( OutputStream aOutput) const

Writes this transform in serialized form by writing the six components A, B, C, D, Tx, Ty as double-precision floating point numbers.


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