# ipe::TransformTool Class Reference
Ipe canvas

A tool for transforming the selected objects on the canvas. More...

`#include <ipetool.h>`

Inherits ipe::Tool.

List of all members.

## Public Types

- enum TType { ETranslate, EScale, EStretch, ERotate }

## 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 ()

## Protected Member Functions

- void compute (const Vector &v)

## Protected Attributes

- Page * iPage
- int iView
- TType iType
- bool iWithShift
- bool iOnlyHorizontal
- bool iOnlyVertical
- Vector iMouseDown
- Matrix iTransform
- Vector iOrigin
- bool iValid

## Detailed Description

A tool for transforming the selected objects on the canvas.

Supports moving, rotating, scaling, and stretching.

## Member Enumeration Documentation

enum ipe::TransformTool::TType

Enumerator:

  ETranslate |
  EScale |
  EStretch |
  ERotate |

## Constructor & Destructor Documentation

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.

## Member Function Documentation

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

Check that the transformation can be performed.

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

Implements ipe::Tool.

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.

void TransformTool::mouseMove | ( |  | ) | `[virtual]`

Called when the mouse is moved on the canvas.

Reimplemented from ipe::Tool.

void TransformTool::report | ( |  | ) | `[virtual]`

Report the final transformation chosen.

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

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

## Member Data Documentation

Page* ipe::TransformTool::iPage`[protected]`

int ipe::TransformTool::iView`[protected]`

TType ipe::TransformTool::iType`[protected]`

bool ipe::TransformTool::iWithShift`[protected]`

bool ipe::TransformTool::iOnlyHorizontal`[protected]`

bool ipe::TransformTool::iOnlyVertical`[protected]`

Vector ipe::TransformTool::iMouseDown`[protected]`

Matrix ipe::TransformTool::iTransform`[protected]`

Vector ipe::TransformTool::iOrigin`[protected]`

bool ipe::TransformTool::iValid`[protected]`

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

- ipetool.h
- ipetool.cpp