Ipelib

Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ipe::TransformTool Class Reference
Ipe canvas

`#include <ipetool.h>`

Inherits ipe::Tool.

## Public Types
enum | TType { ETranslate, EScale, EStretch, ERotate, EShear }

## Public Member Functions
| TransformTool (CanvasBase *canvas, Page *page, int view, TType type, bool withShift)
bool | isValid () const
virtual void | draw (Painter &painter) const
virtual void | mouseButton (int button, bool press)
virtual void | mouseMove ()
virtual void | report ()
Public Member Functions inherited from ipe::Tool
virtual | ~Tool ()
virtual bool | key (String text, int modifiers)
virtual void | snapVtx (const Vector &mouse, Vector &pos, double &bound, bool cp) const

## Protected Member Functions
void | compute (const Vector &v)
Protected Member Functions inherited from ipe::Tool
| Tool (CanvasBase *canvas)

## Protected Attributes
Page * | iPage
int | iView
TType | iType
bool | iWithShift
bool | iOnlyHorizontal
bool | iOnlyVertical
Vector | iMouseDown
Matrix | iTransform
Vector | iOrigin
Angle | iDir
bool | iValid
Protected Attributes inherited from ipe::Tool
CanvasBase * | iCanvas

## Detailed Description

A tool for transforming the selected objects on the canvas.

Supports moving, rotating, scaling, stretching, and shearing.

## Member Enumeration Documentation

## ◆ TType

enum ipe::TransformTool::TType

Enumerator
ETranslate |
EScale |
EStretch |
ERotate |
EShear |

## Constructor & Destructor Documentation

## ◆ TransformTool()

TransformTool::TransformTool | ( | CanvasBase * | canvas,
|  | Page * | page,
|  | int | view,
|  | TType | type,
|  | bool | withShift
| ) |  |

Constructor starts transformation.

After constructing a TransformTool, you must call isValid() to ensure that the transformation can be performed.

A transformation can fail because the selection contains pinned objects, or because the initial mouse position is identical to the transformation origin.

References ipe::abs(), ipe::Rect::addRect(), ipe::Page::bbox(), ipe::Rect::bottomLeft(), ipe::Page::count(), ipe::EFixedPin, ipe::CanvasBase::EHandCursor, ipe::ENoPin, EScale, EShear, EStretch, ETranslate, ipe::EVerticalPin, ipe::Tool::iCanvas, ipe::Snap::iDir, iDir, iMouseDown, iOnlyHorizontal, iOnlyVertical, ipe::Snap::iOrigin, iOrigin, iPage, iType, iValid, iView, ipe::Snap::iWithAxes, iWithShift, ipe::Page::object(), ipe::Object::pinned(), ipe::CanvasBase::pos(), ipe::Page::select(), ipe::CanvasBase::setAutoOrigin(), ipe::CanvasBase::setCursor(), ipe::CanvasBase::snap(), ipe::Rect::topRight(), ipe::Vector::x, and ipe::Vector::y.

## Member Function Documentation

## ◆ isValid()

bool TransformTool::isValid | ( |  | ) | const

Check that the transformation can be performed.

References iValid.

## ◆ draw()

void TransformTool::draw | ( | Painter & | painter | ) | const
| virtual

Implements ipe::Tool.

References ipe::Page::count(), ipe::Object::drawSimple(), iPage, iTransform, ipe::Page::object(), ipe::Page::select(), ipe::Painter::setStroke(), and ipe::Painter::transform().

## ◆ mouseButton()

void TransformTool::mouseButton | ( | int | button,
|  | bool | press
| ) |  |
| virtual

Called when a mouse button is pressed or released on the canvas.

button is 1, 2, or 3, with Shift/Ctrl/Alt/Meta modifiers added in (as defined in CanvasBase::TModifiers. press is true for button-down, and false for button-up.

Reimplemented from ipe::Tool.

References compute(), ipe::CanvasBase::finishTool(), ipe::Tool::iCanvas, ipe::CanvasBase::pos(), and report().

## ◆ mouseMove()

void TransformTool::mouseMove | ( |  | ) |
| virtual

Called when the mouse is moved on the canvas.

Reimplemented from ipe::Tool.

References compute(), ipe::Tool::iCanvas, ipe::CanvasBase::pos(), and ipe::CanvasBase::updateTool().

## ◆ report()

void TransformTool::report | ( |  | ) |
| virtual

Report the final transformation chosen.

The implementation in TransformTool does nothing. Derived classes should reimplement report().

Referenced by mouseButton().

## ◆ compute()

void TransformTool::compute | ( | const Vector & | v | ) |
| protected

References ipe::abs(), ipe::Vector::angle(), ERotate, EScale, EShear, EStretch, ETranslate, iDir, iMouseDown, iOnlyHorizontal, iOnlyVertical, iOrigin, iTransform, iType, iWithShift, ipe::Vector::sqLen(), ipe::Vector::x, and ipe::Vector::y.

Referenced by mouseButton(), and mouseMove().

## Member Data Documentation

## ◆ iPage

Page* ipe::TransformTool::iPage
| protected

Referenced by draw(), and TransformTool().

## ◆ iView

int ipe::TransformTool::iView
| protected

Referenced by TransformTool().

## ◆ iType

TType ipe::TransformTool::iType
| protected

Referenced by compute(), and TransformTool().

## ◆ iWithShift

bool ipe::TransformTool::iWithShift
| protected

Referenced by compute(), and TransformTool().

## ◆ iOnlyHorizontal

bool ipe::TransformTool::iOnlyHorizontal
| protected

Referenced by compute(), and TransformTool().

## ◆ iOnlyVertical

bool ipe::TransformTool::iOnlyVertical
| protected

Referenced by compute(), and TransformTool().

## ◆ iMouseDown

Vector ipe::TransformTool::iMouseDown
| protected

Referenced by compute(), and TransformTool().

## ◆ iTransform

Matrix ipe::TransformTool::iTransform
| protected

Referenced by compute(), and draw().

## ◆ iOrigin

Vector ipe::TransformTool::iOrigin
| protected

Referenced by compute(), and TransformTool().

## ◆ iDir

Angle ipe::TransformTool::iDir
| protected

Referenced by compute(), and TransformTool().

## ◆ iValid

bool ipe::TransformTool::iValid
| protected

Referenced by isValid(), and TransformTool().

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

- ipetool.h
- ipetool.cpp