#include <TdkCoordTransformer.h>
Auxliary Methods | |
| These methods can be used to calculate aspect ratio between world coordinates area and device coordinates area. | |
| const TdkTransformationType & | getTransformationType () const |
| Gets transformation type. | |
| void | setTransformationType (const TdkTransformationType &transformationType) |
| Sets transformation type. If your canvas is discrete (e.g., countable number of lines an columns), like QtCanvas, you should set as discrete and if you are using a device not discrete (e.g. PDF document) you should set it as not discrete. | |
| static void | adjustWindowBox (double &llxW, double &llyW, double &urxW, double &uryW, const double &llxV, const double &llyV, const double &urxV, const double &uryV, const TdkTransformationType &transformationType, const bool ¢ralized=false) |
| Adjust the informed window (world) bounding box according to a device bounding box. This may be helpfull when you want to keep the aspect ratio during a drawing of a theme (layer). The box will be expaded in the correct direction, and you can choose to centralize the draw informaing the last paramenter as true. | |
Public Types | |
This enum specifies the possible transformation types. | |
| enum | TdkTransformationType { TdkDiscrete = 1, TdkNotDiscrete = 2 } |
Public Member Functions | |
Constructor and Destructor Methods | |
Methods related to instantiation and destruction. | |
| TdkCoordTransformer (const TdkTransformationType &transformationType=TdkDiscrete) | |
| Empty constructor. | |
| ~TdkCoordTransformer () | |
| Destructor. | |
Window (World) and Viewport (Device) Set Methods | |
Methods used to set world and device coordinates area. | |
| void | setWindow (const double &llx, const double &lly, const double &urx, const double &ury) |
| Adjusts world (or window) coordinates area (supposing a cartesian reference system). | |
| void | setWindow (const TeBox &box) |
| Adjusts world (window) coordinates area (supposing a cartesian reference system). | |
| void | getWindow (double &llx, double &lly, double &urx, double &ury) |
| Returns the world (window) coordinates area (supposing a cartesian reference system). | |
| void | setViewport (const double &llx, const double &lly, const double &urx, const double &ury) |
| Adjusts device coordinates area (supposing a cartesian reference system). | |
| void | setViewport (const TeBox &box) |
| Adjusts device coordinates area (supposing a cartesian reference system). | |
| void | getViewport (double &llx, double &lly, double &urx, double &ury) |
| Returns the device coordinates area. | |
| void | window2Viewport (const double &wx, const double &wy, double &vx, double &vy) |
| Transform world (or window) coordinates to device (or viewpoort) coordinates. | |
| void | window2Viewport (const TeCoord2D &wc, TeCoord2D &vc) |
| Transform world (or window) value to device (or viewpoort) value. | |
| void | window2Viewport (const TdkPrimitiveCoord &wc, TdkPrimitiveCoord &vc) |
| Transform world (or window) value to device (or viewpoort) value. | |
| void | window2Viewport (const TeBox &wbox, TeBox &vbox) |
| Transform world (or window) value to device (or viewpoort) value. | |
| void | window2Viewport (const double &w, double &v, const bool &xdirection=true) |
| Transform world (or window) value to device (or viewpoort) value according to one axis. | |
| void | window2Viewport (const TeLine2D &lineIn, TeLine2D &lineOut) |
| Transform line world (or window) coordinates to device (or viewport) coordinates. | |
| void | window2Viewport (const TePolygon &polyIn, TePolygon &polyOut) |
| Transform polygon world (or window) coordinates to device (or viewport) coordinates. | |
| void | window2Viewport (TdkPrimitiveCoord *inputCoords, TdkPrimitiveCoord *outputCoords, const int &numCoords) |
| Transform the array of coordinates in world (or window) coordinates to device (or viewport) coordinates. You should pass an output array pre-allocated with the same size as inputCoords array. | |
| void | viewport2Window (const double &vx, const double &vy, double &wx, double &wy) |
| Transform viewport (or device) coordinates to world (or window) coordinates. | |
| void | viewport2Window (const TdkPrimitiveCoord &vc, TdkPrimitiveCoord &wc) |
| Transform viewport (or device) coordinates to world (or window) coordinates. | |
| void | viewport2Window (const double &v, double &w, const bool &xdirection=true) |
| Transform device (or viewpoort) value to world (or window) value according to one axis. | |
| void | viewport2Window (const TeLine2D &lineIn, TeLine2D &lineOut) |
| Transform line device (or viewport) coordinates to world (or window) coordinates. | |
| void | viewport2Window (const TePolygon &polyIn, TePolygon &polyOut) |
| Transform polygon device (or viewport) coordinates to world (or window) coordinates. | |
| void | viewport2Window (TdkPrimitiveCoord *inputCoords, TdkPrimitiveCoord *outputCoords, const int &numCoords) |
| Transform the array of coordinates in device (or viewport) coordinates to world (or window) coordinates. You should pass an output array pre-allocated with the same size as inputCoords array. | |
Protected Member Functions | |
Mapping Function Definition Methods | |
Methods that can be used to calculate the factor used in mapping from device to world and world to device. | |
| void | updateTransformation () |
Protected Attributes | |
| double | sX_ |
| Factor used in coordinate system transformation along "x" axis. | |
| double | sY_ |
| Factor used in coordinate system transformation along "y" axis. | |
| double | s_ |
| double | tX_ |
| double | tY_ |
| double | llxW_ |
| Window (World) lower left abscissa. | |
| double | llyW_ |
| Window (World) lower left ordinate. | |
| double | urxW_ |
| Window (World) upper right abscissa. | |
| double | uryW_ |
| Window (World) upper right ordinate. | |
| double | widthW_ |
| Window (World) width. | |
| double | heightW_ |
| Window (World) height. | |
| double | llxV_ |
| Viewport (Device) lower left abscissa. | |
| double | llyV_ |
| Viewport (Device) lower left abscissa. | |
| double | urxV_ |
| Viewport (Device) upper right abscissa. | |
| double | uryV_ |
| Viewport (Device) upper right abscissa. | |
| double | widthV_ |
| Viewport (Device) width. | |
| double | heightV_ |
| Viewport (Device) height. | |
| TdkTransformationType | transformationType_ |
| Indicates if it is a discrete transformation or not. | |
This class has methods that transform a coordinate from window (world) system to a value in device coordinate system and in the opposite way.
| TdkCoordTransformer::TdkCoordTransformer | ( | const TdkTransformationType & | transformationType = TdkDiscrete |
) |
| TdkCoordTransformer::~TdkCoordTransformer | ( | ) | [inline] |
Destructor.
| void TdkCoordTransformer::setWindow | ( | const double & | llx, | |
| const double & | lly, | |||
| const double & | urx, | |||
| const double & | ury | |||
| ) |
Adjusts world (or window) coordinates area (supposing a cartesian reference system).
| llx | Lower left abscissa. (Input) | |
| lly | Lower left ordinate. (Input) | |
| urx | Upper left abscissa. (Input) | |
| ury | Upper left ordinate. (Input) |
| void TdkCoordTransformer::setWindow | ( | const TeBox & | box | ) |
Adjusts world (window) coordinates area (supposing a cartesian reference system).
| box | Bounding box of world. (Input) |
| void TdkCoordTransformer::getWindow | ( | double & | llx, | |
| double & | lly, | |||
| double & | urx, | |||
| double & | ury | |||
| ) |
Returns the world (window) coordinates area (supposing a cartesian reference system).
| llx | Lower left abscissa. (Output) | |
| lly | Lower left ordinate. (Output) | |
| urx | Upper left abscissa. (Output) | |
| ury | Upper left ordinate. (Output) |
| void TdkCoordTransformer::setViewport | ( | const double & | llx, | |
| const double & | lly, | |||
| const double & | urx, | |||
| const double & | ury | |||
| ) |
Adjusts device coordinates area (supposing a cartesian reference system).
| llx | Lower left abscissa. (Input) | |
| lly | Lower left ordinate. (Input) | |
| urx | Upper left abscissa. (Input) | |
| ury | Upper left ordinate. (Input) |
| void TdkCoordTransformer::setViewport | ( | const TeBox & | box | ) |
Adjusts device coordinates area (supposing a cartesian reference system).
| box | Device bounding box. (Input) |
| void TdkCoordTransformer::getViewport | ( | double & | llx, | |
| double & | lly, | |||
| double & | urx, | |||
| double & | ury | |||
| ) |
Returns the device coordinates area.
| llx | Lower left abscissa. (Output) | |
| lly | Lower left ordinate. (Output) | |
| urx | Upper left abscissa. (Output) | |
| ury | Upper left ordinate. (Output) |
| void TdkCoordTransformer::window2Viewport | ( | const double & | wx, | |
| const double & | wy, | |||
| double & | vx, | |||
| double & | vy | |||
| ) |
Transform world (or window) coordinates to device (or viewpoort) coordinates.
| wx | World (or window) abscissa. (Input) | |
| wy | World (or window) ordinate. (Input) | |
| vx | Viewport (or device) abscissa. (Output) | |
| vy | Viewport (or device) ordinate. (Output) |
| void TdkCoordTransformer::window2Viewport | ( | const TeCoord2D & | wc, | |
| TeCoord2D & | vc | |||
| ) |
Transform world (or window) value to device (or viewpoort) value.
| wc | World (or window) value. (Input) | |
| vc | Viewport (or device) value. (Output) |
| void TdkCoordTransformer::window2Viewport | ( | const TdkPrimitiveCoord & | wc, | |
| TdkPrimitiveCoord & | vc | |||
| ) |
Transform world (or window) value to device (or viewpoort) value.
| wc | World (or window) value. (Input) | |
| vc | Viewport (or device) value. (Output) |
| void TdkCoordTransformer::window2Viewport | ( | const TeBox & | wbox, | |
| TeBox & | vbox | |||
| ) |
Transform world (or window) value to device (or viewpoort) value.
| wbox | World (or window) value. (Input) | |
| vbox | Viewport (or device) value. (Output) |
| void TdkCoordTransformer::window2Viewport | ( | const double & | w, | |
| double & | v, | |||
| const bool & | xdirection = true | |||
| ) |
Transform world (or window) value to device (or viewpoort) value according to one axis.
| w | World (or window) value. (Input) | |
| v | Viewport (or device) value. (Output) | |
| xdirection | If world and device don't keep aspect ratio you should specify what axis to consider. |
| void TdkCoordTransformer::window2Viewport | ( | const TeLine2D & | lineIn, | |
| TeLine2D & | lineOut | |||
| ) |
Transform line world (or window) coordinates to device (or viewport) coordinates.
| lineIn | A line with vertexes in world (or window) coordinates. (Input) | |
| lineOut | A copy of the first line with vertexes in viewport (or device) coordinates. (Output) |
| void TdkCoordTransformer::window2Viewport | ( | const TePolygon & | polyIn, | |
| TePolygon & | polyOut | |||
| ) |
Transform polygon world (or window) coordinates to device (or viewport) coordinates.
| polyIn | A polygon with vertexes in world (or window) coordinates. (Input) | |
| polyOut | A copy of the first polygon with vertexes in viewport (or device) coordinates. (Output) |
| void TdkCoordTransformer::window2Viewport | ( | TdkPrimitiveCoord * | inputCoords, | |
| TdkPrimitiveCoord * | outputCoords, | |||
| const int & | numCoords | |||
| ) |
Transform the array of coordinates in world (or window) coordinates to device (or viewport) coordinates. You should pass an output array pre-allocated with the same size as inputCoords array.
| inputCoords | A pointer to an array of coordinates in world (or window) coordinates. (Input) | |
| outputCoords | A copy of the array with coordinates in viewport (or device) coordinates. (Output) | |
| numCoords | The number of coordinates of inputCoords array. |
| void TdkCoordTransformer::viewport2Window | ( | const double & | vx, | |
| const double & | vy, | |||
| double & | wx, | |||
| double & | wy | |||
| ) |
Transform viewport (or device) coordinates to world (or window) coordinates.
| vx | Viewport (or device) abscissa. (Input) | |
| vy | Viewport (or device) ordinate. (Input) | |
| wx | World (or window) abscissa. (Output) | |
| wy | World (or window) ordinate. (Output) |
| void TdkCoordTransformer::viewport2Window | ( | const TdkPrimitiveCoord & | vc, | |
| TdkPrimitiveCoord & | wc | |||
| ) |
Transform viewport (or device) coordinates to world (or window) coordinates.
| vc | Viewport (or device) value. (Input) | |
| wc | World (or window) value. (Output) |
| void TdkCoordTransformer::viewport2Window | ( | const double & | v, | |
| double & | w, | |||
| const bool & | xdirection = true | |||
| ) |
Transform device (or viewpoort) value to world (or window) value according to one axis.
| v | Viewport (or device) value. (Input) | |
| w | World (or window) value. (Output) | |
| xdirection | If world and device don't keep aspect ratio you should specify what axis to consider. |
| void TdkCoordTransformer::viewport2Window | ( | const TeLine2D & | lineIn, | |
| TeLine2D & | lineOut | |||
| ) |
Transform line device (or viewport) coordinates to world (or window) coordinates.
| lineIn | A line with vertexes in viewport (or device) coordinates. (Input) | |
| lineOut | A copy of the first line with vertexes in world (or window) coordinates. (Output) |
| void TdkCoordTransformer::viewport2Window | ( | const TePolygon & | polyIn, | |
| TePolygon & | polyOut | |||
| ) |
Transform polygon device (or viewport) coordinates to world (or window) coordinates.
| polyIn | A polygon with vertexes in device (or viewport) coordinates. (Input) | |
| polyOut | A copy of the first polygon with vertexes in world (or window) coordinates. (Output) |
| void TdkCoordTransformer::viewport2Window | ( | TdkPrimitiveCoord * | inputCoords, | |
| TdkPrimitiveCoord * | outputCoords, | |||
| const int & | numCoords | |||
| ) |
Transform the array of coordinates in device (or viewport) coordinates to world (or window) coordinates. You should pass an output array pre-allocated with the same size as inputCoords array.
| inputCoords | A pointer to an array of coordinates in viewport (or device) coordinates. (Input) | |
| outputCoords | A copy of the array with coordinates in world (or window) coordinates. (Output) | |
| numCoords | The number of coordinates of inputCoords array. |
| const TdkCoordTransformer::TdkTransformationType & TdkCoordTransformer::getTransformationType | ( | ) | const |
Gets transformation type.
| void TdkCoordTransformer::setTransformationType | ( | const TdkTransformationType & | transformationType | ) |
Sets transformation type. If your canvas is discrete (e.g., countable number of lines an columns), like QtCanvas, you should set as discrete and if you are using a device not discrete (e.g. PDF document) you should set it as not discrete.
| transformationType | Transformation type. (Input) |
| void TdkCoordTransformer::adjustWindowBox | ( | double & | llxW, | |
| double & | llyW, | |||
| double & | urxW, | |||
| double & | uryW, | |||
| const double & | llxV, | |||
| const double & | llyV, | |||
| const double & | urxV, | |||
| const double & | uryV, | |||
| const TdkTransformationType & | transformationType, | |||
| const bool & | centralized = false | |||
| ) | [static] |
Adjust the informed window (world) bounding box according to a device bounding box. This may be helpfull when you want to keep the aspect ratio during a drawing of a theme (layer). The box will be expaded in the correct direction, and you can choose to centralize the draw informaing the last paramenter as true.
| llxW | Window lower left abscissa. (Input and Output) | |
| llyW | Window lower left ordinate. (Input and Output) | |
| urxW | Window upper right abscissa. (Input and Output) | |
| uryW | Window upper right ordinate. (Input and Output) | |
| llxV | Viewport lower left abscissa. (Input) | |
| llyV | Viewport lower left ordinate. (Input) | |
| urxV | Viewport upper right abscissa. (Input) | |
| uryV | Viewport upper right ordinate. (Input) | |
| transformationType | Transformation type. (Input) | |
| centralized | Tells if the expanded bounding box will be in the middle. |
| void TdkCoordTransformer::updateTransformation | ( | ) | [inline, protected] |
double TdkCoordTransformer::sX_ [protected] |
Factor used in coordinate system transformation along "x" axis.
double TdkCoordTransformer::sY_ [protected] |
Factor used in coordinate system transformation along "y" axis.
double TdkCoordTransformer::s_ [protected] |
double TdkCoordTransformer::tX_ [protected] |
double TdkCoordTransformer::tY_ [protected] |
double TdkCoordTransformer::llxW_ [protected] |
Window (World) lower left abscissa.
double TdkCoordTransformer::llyW_ [protected] |
Window (World) lower left ordinate.
double TdkCoordTransformer::urxW_ [protected] |
Window (World) upper right abscissa.
double TdkCoordTransformer::uryW_ [protected] |
Window (World) upper right ordinate.
double TdkCoordTransformer::widthW_ [protected] |
Window (World) width.
double TdkCoordTransformer::heightW_ [protected] |
Window (World) height.
double TdkCoordTransformer::llxV_ [protected] |
Viewport (Device) lower left abscissa.
double TdkCoordTransformer::llyV_ [protected] |
Viewport (Device) lower left abscissa.
double TdkCoordTransformer::urxV_ [protected] |
Viewport (Device) upper right abscissa.
double TdkCoordTransformer::uryV_ [protected] |
Viewport (Device) upper right abscissa.
double TdkCoordTransformer::widthV_ [protected] |
Viewport (Device) width.
double TdkCoordTransformer::heightV_ [protected] |
Viewport (Device) height.
Indicates if it is a discrete transformation or not.
1.5.2