#include <affinecontroller.h>
Public Types | |
typedef PapyrusPointer < AffineController > | pointer |
Public Member Functions | |
~AffineController () | |
double | get_translate_x () |
X position. | |
double | get_translate_y () |
Y position. | |
void | get_translate (double &tx, double &ty) |
(X,Y) position | |
void | set_translate_x (double tx) |
Sets the X position. | |
void | set_translate_y (double ty) |
Sets the Y position. | |
void | set_translate (double tx, double ty) |
Sets position to (X,Y). | |
void | translate (double x, double y) |
void | get_scale (double &sx, double &sy) |
convenience method to get scaling in x and y dimensions with a single function call | |
void | set_scale_x (double scale_x) |
sets scaling in the x dimension and emits changed signal | |
void | set_scale_y (double scale_y) |
sets scaling in the y dimension and emits changed signal | |
void | set_scale (double scale_x, double scale_y) |
sets scaling in the x and y dimensions and emits changed signal | |
void | set_scale (double s) |
sets scaling in the x and y dimensions and emits changed signal | |
void | scale (double x, double y) |
void | scale (double s) |
double | get_rotation (DegRad unit=RADIANS) |
Get rotation r in the specified units. | |
void | set_rotation (double r, DegRad unit=RADIANS) |
Rotate to r as the specified units. | |
void | rotate (double r, DegRad unit=RADIANS) |
Rotate by r as the specified units. | |
void | get_skew (double &skewx, double &skewy, DegRad unit=RADIANS) |
Get the x and y skewing angles. | |
void | set_skew_x (double skewx, DegRad unit=RADIANS) |
Set the x skewing angle. | |
void | set_skew_y (double skewy, DegRad unit=RADIANS) |
Set the y skewing angle. | |
void | set_skew (double skewx, double skewy, DegRad unit=RADIANS) |
Set the x and y skewing angles. | |
void | set_skew (double s, DegRad unit=RADIANS) |
Set the x and y skewing angles to a single value. | |
void | skew (double x, double y, DegRad unit=RADIANS) |
Skew the x and y angles independently. | |
void | skew (double s, DegRad unit=RADIANS) |
Skew the x and y angles uniformly. | |
double | centroid_x () |
Get centroid x position about which the Drawable is rotated. | |
void | set_centroid_x (double centroid_x) |
Set the x value of the centroid about which the Drawable will be rotated. | |
double | centroid_y () |
Get centroid y position about which the Drawable is rotated. | |
void | set_centroid_y (double centroid_y) |
Set the y value of the centroid about which the Drawable will be rotated. | |
void | get_centroid (double ¢roid_x, double ¢roid_y) |
Get the (x,y) centroid about which the Drawable will be rotated. | |
void | set_centroid (double centroid_x, double centroid_y) |
Set the (x,y) centroid about which the Drawable will be rotated. | |
Matrix & | matrix () |
Return the matrix of this controller. | |
const Matrix & | matrix () const |
Return the matrix of this controller. | |
int | matrix_level () const |
void | set_matrix_level (int level) |
void | reset_position () |
Reset position to default values of xy = (0,0), scale = (1,1), rotation = 0, and shear xy = (0,0). | |
sigc::signal< void > | signal_xy () |
Signal emitted when the xy position is changed. | |
sigc::signal< void > | signal_scale () |
Signal emitted when the scale is changed. | |
sigc::signal< void > | signal_rotation () |
Signal emitted when the rotation value is changed. | |
sigc::signal< void > | signal_skew () |
Signal emitted when the skew is changed. | |
sigc::signal< void > | signal_centroid () |
Signal emitted when the centroid is changed. | |
Static Public Member Functions | |
static pointer | create (const Glib::ustring &id, double tx=0.0, double ty=0.0, double sx=1.0, double sy=1.0, double r=0.0) |
static pointer | create (const Glib::ustring &id, DrawableSet::pointer drawables, double tx=0.0, double ty=0.0, double sx=1.0, double sy=1.0, double r=0.0) |
static pointer | create (double tx=0.0, double ty=0.0, double sx=1.0, double sy=1.0, double r=0.0) |
static pointer | create (DrawableSet::pointer drawables, double tx=0.0, double ty=0.0, double sx=1.0, double sy=1.0, double r=0.0) |
Protected Member Functions | |
AffineController (const Glib::ustring &id, DrawableSet::pointer drawables, double tx=0.0, double ty=0.0, double sx=1.0, double sy=1.0, double r=0.0) | |
Constructor that sets initial transforms. | |
void | recalculate_matrix () |
Recalculates m_matrix if m_regenerate_matrix is true and sets m_regenerate_matrix to false; does nothing if m_regenerate_matrix is false. | |
virtual void | on_drawable_added (Drawable::pointer d) |
virtual void | on_drawable_removed (Drawable::pointer d) |
Protected Attributes | |
double | m_tx |
x translation value | |
double | m_ty |
y translation value | |
double | m_sx |
x scaling value | |
double | m_sy |
y scaling value | |
double | m_r |
rotation value in radians | |
double | m_skewx |
skew x angle in radians | |
double | m_skewy |
skew y angle in radians | |
double | m_centroid_x |
x centroid value | |
double | m_centroid_y |
y centroid value | |
Matrix::pointer | m_matrix |
The cairo matrix returned from matrix and used in rendering. | |
int | m_matrix_level |
sigc::signal< void > | m_signal_xy |
Signal emitted when the xy position is changed. | |
sigc::signal< void > | m_signal_scale |
Signal emitted when the scale is changed. | |
sigc::signal< void > | m_signal_rotation |
Signal emitted when the rotation value is changed. | |
sigc::signal< void > | m_signal_skew |
Signal emitted when the skew is changed. | |
sigc::signal< void > | m_signal_centroid |
Signal emitted when the centroid is changed. |
typedef PapyrusPointer<AffineController> Papyrus::AffineController::pointer |
Reimplemented from Papyrus::DrawableController.
Reimplemented in Papyrus::Rotator, Papyrus::Scaler, Papyrus::Translator, and Papyrus::Zoomer.
Papyrus::AffineController::AffineController | ( | const Glib::ustring & | id, | |
DrawableSet::pointer | drawables, | |||
double | tx = 0.0 , |
|||
double | ty = 0.0 , |
|||
double | sx = 1.0 , |
|||
double | sy = 1.0 , |
|||
double | r = 0.0 | |||
) | [protected] |
Constructor that sets initial transforms.
If no parameters are specified, initial values set translation to (0,0) with a (1,1) scale ratio and no rotation or shearing.
If either scale parameter < 0.0, the parameter will be reset to 1.0.
References create(), Papyrus::DrawableSet::m_drawables, m_matrix, m_sx, m_sy, on_drawable_added(), and recalculate_matrix().
Papyrus::AffineController::~AffineController | ( | ) |
double Papyrus::AffineController::centroid_x | ( | ) |
Get centroid x position about which the Drawable is rotated.
References m_centroid_x.
double Papyrus::AffineController::centroid_y | ( | ) |
Get centroid y position about which the Drawable is rotated.
References m_centroid_y.
AffineController::pointer Papyrus::AffineController::create | ( | DrawableSet::pointer | drawables, | |
double | tx = 0.0 , |
|||
double | ty = 0.0 , |
|||
double | sx = 1.0 , |
|||
double | sy = 1.0 , |
|||
double | r = 0.0 | |||
) | [static] |
References PAPYRUS_CREATE.
AffineController::pointer Papyrus::AffineController::create | ( | double | tx = 0.0 , |
|
double | ty = 0.0 , |
|||
double | sx = 1.0 , |
|||
double | sy = 1.0 , |
|||
double | r = 0.0 | |||
) | [static] |
References PAPYRUS_CREATE.
AffineController::pointer Papyrus::AffineController::create | ( | const Glib::ustring & | id, | |
DrawableSet::pointer | drawables, | |||
double | tx = 0.0 , |
|||
double | ty = 0.0 , |
|||
double | sx = 1.0 , |
|||
double | sy = 1.0 , |
|||
double | r = 0.0 | |||
) | [static] |
References PAPYRUS_CREATE.
AffineController::pointer Papyrus::AffineController::create | ( | const Glib::ustring & | id, | |
double | tx = 0.0 , |
|||
double | ty = 0.0 , |
|||
double | sx = 1.0 , |
|||
double | sy = 1.0 , |
|||
double | r = 0.0 | |||
) | [static] |
References PAPYRUS_CREATE.
Referenced by AffineController().
void Papyrus::AffineController::get_centroid | ( | double & | centroid_x, | |
double & | centroid_y | |||
) |
Get the (x,y) centroid about which the Drawable will be rotated.
References m_centroid_x, and m_centroid_y.
double Papyrus::AffineController::get_rotation | ( | DegRad | unit = RADIANS |
) |
Get rotation r in the specified units.
References Papyrus::DEGREES, and m_r.
void Papyrus::AffineController::get_scale | ( | double & | sx, | |
double & | sy | |||
) |
void Papyrus::AffineController::get_skew | ( | double & | skewx, | |
double & | skewy, | |||
DegRad | unit = RADIANS | |||
) |
Get the x and y skewing angles.
References Papyrus::DEGREES, m_skewx, m_skewy, and Papyrus::RADIANS.
void Papyrus::AffineController::get_translate | ( | double & | tx, | |
double & | ty | |||
) |
double Papyrus::AffineController::get_translate_x | ( | ) |
X position.
References m_tx.
double Papyrus::AffineController::get_translate_y | ( | ) |
Y position.
References m_ty.
const Matrix & Papyrus::AffineController::matrix | ( | ) | const |
Return the matrix of this controller.
References m_matrix.
Matrix & Papyrus::AffineController::matrix | ( | ) |
Return the matrix of this controller.
References m_matrix.
int Papyrus::AffineController::matrix_level | ( | ) | const |
References m_matrix_level.
void Papyrus::AffineController::on_drawable_added | ( | Drawable::pointer | d | ) | [protected, virtual] |
Reimplemented from Papyrus::DrawableController.
References m_matrix, and m_matrix_level.
Referenced by AffineController().
void Papyrus::AffineController::on_drawable_removed | ( | Drawable::pointer | d | ) | [protected, virtual] |
Reimplemented from Papyrus::DrawableController.
References m_matrix.
void Papyrus::AffineController::recalculate_matrix | ( | ) | [protected] |
Recalculates m_matrix if m_regenerate_matrix is true and sets m_regenerate_matrix to false; does nothing if m_regenerate_matrix is false.
References m_centroid_x, m_centroid_y, m_matrix, m_r, m_skewx, m_skewy, m_sx, m_sy, m_tx, m_ty, Papyrus::Matrix::rotate(), Papyrus::Matrix::scale(), Papyrus::Matrix::skew(), and Papyrus::Matrix::translate().
Referenced by AffineController(), reset_position(), rotate(), Papyrus::Rotator::Rotator(), scale(), Papyrus::Scaler::Scaler(), set_centroid(), set_centroid_x(), set_centroid_y(), set_rotation(), set_scale(), set_scale_x(), set_scale_y(), set_skew(), set_skew_x(), set_skew_y(), set_translate(), set_translate_x(), set_translate_y(), skew(), translate(), and Papyrus::Translator::Translator().
void Papyrus::AffineController::reset_position | ( | ) |
Reset position to default values of xy = (0,0), scale = (1,1), rotation = 0, and shear xy = (0,0).
References m_centroid_x, m_centroid_y, m_r, m_signal_centroid, m_signal_rotation, m_signal_scale, m_signal_skew, m_signal_xy, m_skewx, m_skewy, m_sx, m_sy, m_tx, m_ty, and recalculate_matrix().
void Papyrus::AffineController::rotate | ( | double | r, | |
DegRad | unit = RADIANS | |||
) |
Rotate by r as the specified units.
If previous rotation was pr then new rotation is pr+r
References Papyrus::DEGREES, m_r, m_signal_rotation, and recalculate_matrix().
Referenced by Papyrus::Rotator::on_motion().
void Papyrus::AffineController::scale | ( | double | s | ) |
References m_signal_scale, m_sx, m_sy, and recalculate_matrix().
void Papyrus::AffineController::scale | ( | double | x, | |
double | y | |||
) |
References m_signal_scale, m_sx, m_sy, and recalculate_matrix().
Referenced by Papyrus::Scaler::on_motion(), Papyrus::Zoomer::zoom_in(), and Papyrus::Zoomer::zoom_out().
void Papyrus::AffineController::set_centroid | ( | double | centroid_x, | |
double | centroid_y | |||
) |
Set the (x,y) centroid about which the Drawable will be rotated.
References m_centroid_x, m_centroid_y, m_signal_centroid, and recalculate_matrix().
void Papyrus::AffineController::set_centroid_x | ( | double | centroid_x | ) |
Set the x value of the centroid about which the Drawable will be rotated.
References m_centroid_x, m_signal_centroid, and recalculate_matrix().
void Papyrus::AffineController::set_centroid_y | ( | double | centroid_y | ) |
Set the y value of the centroid about which the Drawable will be rotated.
References m_centroid_y, m_signal_centroid, and recalculate_matrix().
void Papyrus::AffineController::set_matrix_level | ( | int | level | ) |
References Papyrus::DrawableSet::m_drawables, m_matrix, and m_matrix_level.
void Papyrus::AffineController::set_rotation | ( | double | r, | |
DegRad | unit = RADIANS | |||
) |
Rotate to r as the specified units.
References Papyrus::DEGREES, m_r, m_signal_rotation, and recalculate_matrix().
void Papyrus::AffineController::set_scale | ( | double | s | ) |
sets scaling in the x and y dimensions and emits changed signal
s | The amount to scale the x and y dimensions by; must be > 0.0 or no change will occur |
References m_signal_scale, m_sx, m_sy, and recalculate_matrix().
void Papyrus::AffineController::set_scale | ( | double | scale_x, | |
double | scale_y | |||
) |
sets scaling in the x and y dimensions and emits changed signal
scale_x | The new x dimension scaling; must be > 0.0 or no change to x scaling will occur | |
scale_y | The new y dimension scaling; must be > 0.0 or no change to y scaling will occur |
References m_signal_scale, m_sx, m_sy, and recalculate_matrix().
void Papyrus::AffineController::set_scale_x | ( | double | scale_x | ) |
sets scaling in the x dimension and emits changed signal
scale_x | The new x dimension scaling; must be > 0.0 or no change to x scaling will occur |
References m_signal_scale, m_sx, and recalculate_matrix().
void Papyrus::AffineController::set_scale_y | ( | double | scale_y | ) |
sets scaling in the y dimension and emits changed signal
scale_y | The new y dimension scaling; must be > 0.0 or no change to y scaling will occur |
References m_signal_scale, m_sy, and recalculate_matrix().
void Papyrus::AffineController::set_skew | ( | double | s, | |
DegRad | unit = RADIANS | |||
) |
Set the x and y skewing angles to a single value.
References Papyrus::DEGREES, m_signal_skew, m_skewx, m_skewy, Papyrus::RADIANS, and recalculate_matrix().
void Papyrus::AffineController::set_skew | ( | double | skewx, | |
double | skewy, | |||
DegRad | unit = RADIANS | |||
) |
Set the x and y skewing angles.
References Papyrus::DEGREES, m_signal_skew, m_skewx, m_skewy, Papyrus::RADIANS, and recalculate_matrix().
void Papyrus::AffineController::set_skew_x | ( | double | skewx, | |
DegRad | unit = RADIANS | |||
) |
Set the x skewing angle.
References Papyrus::DEGREES, m_signal_skew, m_skewx, Papyrus::RADIANS, and recalculate_matrix().
void Papyrus::AffineController::set_skew_y | ( | double | skewy, | |
DegRad | unit = RADIANS | |||
) |
Set the y skewing angle.
References Papyrus::DEGREES, m_signal_skew, m_skewy, Papyrus::RADIANS, and recalculate_matrix().
void Papyrus::AffineController::set_translate | ( | double | tx, | |
double | ty | |||
) |
Sets position to (X,Y).
Absolute move to (tx,ty).
References m_signal_xy, m_tx, m_ty, and recalculate_matrix().
void Papyrus::AffineController::set_translate_x | ( | double | tx | ) |
Sets the X position.
If previous position was (px,py) new position is (tx,py).
References m_signal_xy, m_tx, and recalculate_matrix().
void Papyrus::AffineController::set_translate_y | ( | double | ty | ) |
Sets the Y position.
If previous position was (px,py) new position is (px,ty).
References m_signal_xy, m_ty, and recalculate_matrix().
sigc::signal< void > Papyrus::AffineController::signal_centroid | ( | ) |
Signal emitted when the centroid is changed.
References m_signal_centroid.
sigc::signal< void > Papyrus::AffineController::signal_rotation | ( | ) |
Signal emitted when the rotation value is changed.
References m_signal_rotation.
sigc::signal< void > Papyrus::AffineController::signal_scale | ( | ) |
Signal emitted when the scale is changed.
References m_signal_scale.
sigc::signal< void > Papyrus::AffineController::signal_skew | ( | ) |
Signal emitted when the skew is changed.
References m_signal_skew.
sigc::signal< void > Papyrus::AffineController::signal_xy | ( | ) |
Signal emitted when the xy position is changed.
References m_signal_xy.
void Papyrus::AffineController::skew | ( | double | s, | |
DegRad | unit = RADIANS | |||
) |
Skew the x and y angles uniformly.
References Papyrus::DEGREES, m_signal_skew, m_skewx, m_skewy, Papyrus::RADIANS, and recalculate_matrix().
void Papyrus::AffineController::skew | ( | double | x, | |
double | y, | |||
DegRad | unit = RADIANS | |||
) |
Skew the x and y angles independently.
References Papyrus::DEGREES, m_signal_skew, m_skewx, m_skewy, Papyrus::RADIANS, and recalculate_matrix().
void Papyrus::AffineController::translate | ( | double | x, | |
double | y | |||
) |
References m_signal_xy, m_tx, m_ty, and recalculate_matrix().
Referenced by Papyrus::Translator::on_motion().
double Papyrus::AffineController::m_centroid_x [protected] |
x centroid value
Referenced by centroid_x(), get_centroid(), recalculate_matrix(), reset_position(), set_centroid(), and set_centroid_x().
double Papyrus::AffineController::m_centroid_y [protected] |
y centroid value
Referenced by centroid_y(), get_centroid(), recalculate_matrix(), reset_position(), set_centroid(), and set_centroid_y().
Matrix::pointer Papyrus::AffineController::m_matrix [protected] |
The cairo matrix returned from matrix and used in rendering.
Referenced by AffineController(), matrix(), on_drawable_added(), on_drawable_removed(), recalculate_matrix(), and set_matrix_level().
int Papyrus::AffineController::m_matrix_level [protected] |
Referenced by matrix_level(), on_drawable_added(), Papyrus::Scaler::Scaler(), and set_matrix_level().
double Papyrus::AffineController::m_r [protected] |
rotation value in radians
Referenced by get_rotation(), recalculate_matrix(), reset_position(), rotate(), and set_rotation().
sigc::signal<void> Papyrus::AffineController::m_signal_centroid [protected] |
Signal emitted when the centroid is changed.
Referenced by reset_position(), set_centroid(), set_centroid_x(), set_centroid_y(), and signal_centroid().
sigc::signal<void> Papyrus::AffineController::m_signal_rotation [protected] |
Signal emitted when the rotation value is changed.
Referenced by reset_position(), rotate(), set_rotation(), and signal_rotation().
sigc::signal<void> Papyrus::AffineController::m_signal_scale [protected] |
Signal emitted when the scale is changed.
Referenced by reset_position(), scale(), set_scale(), set_scale_x(), set_scale_y(), and signal_scale().
sigc::signal<void> Papyrus::AffineController::m_signal_skew [protected] |
Signal emitted when the skew is changed.
Referenced by reset_position(), set_skew(), set_skew_x(), set_skew_y(), signal_skew(), and skew().
sigc::signal<void> Papyrus::AffineController::m_signal_xy [protected] |
Signal emitted when the xy position is changed.
Referenced by reset_position(), set_translate(), set_translate_x(), set_translate_y(), signal_xy(), and translate().
double Papyrus::AffineController::m_skewx [protected] |
skew x angle in radians
Referenced by get_skew(), recalculate_matrix(), reset_position(), set_skew(), set_skew_x(), and skew().
double Papyrus::AffineController::m_skewy [protected] |
skew y angle in radians
Referenced by get_skew(), recalculate_matrix(), reset_position(), set_skew(), set_skew_y(), and skew().
double Papyrus::AffineController::m_sx [protected] |
x scaling value
Referenced by AffineController(), get_scale(), recalculate_matrix(), reset_position(), scale(), set_scale(), and set_scale_x().
double Papyrus::AffineController::m_sy [protected] |
y scaling value
Referenced by AffineController(), get_scale(), recalculate_matrix(), reset_position(), scale(), set_scale(), and set_scale_y().
double Papyrus::AffineController::m_tx [protected] |
x translation value
Referenced by get_translate(), get_translate_x(), recalculate_matrix(), reset_position(), set_translate(), set_translate_x(), and translate().
double Papyrus::AffineController::m_ty [protected] |
y translation value
Referenced by get_translate(), get_translate_y(), recalculate_matrix(), reset_position(), set_translate(), set_translate_y(), and translate().