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