# ipe::Tool Class Reference
Ipe canvas

Abstract base class for various canvas tools. More...

`#include <ipetool.h>`

Inherited by ipe::PanTool, ipe::SelectTool, and ipe::TransformTool.

List of all members.

## Public Member Functions

- virtual ~Tool ()
- virtual void draw (Painter &painter) const =0
- virtual void mouseButton (int button, bool press)
- virtual void mouseMove ()
- virtual bool key (int code, int modifiers, String text)

## Protected Member Functions

- Tool (CanvasBase *canvas)

## Protected Attributes

- CanvasBase * iCanvas

## Detailed Description

Abstract base class for various canvas tools.

The Canvas doesn't know about the various modes for object creation, editing, and moving, but delegates the handling to a subclass of Tool.

## Constructor & Destructor Documentation

Tool::~Tool | ( |  | ) | `[virtual]`

Virtual destructor.

Tool::Tool | ( | CanvasBase * | canvas | ) | `[protected]`

Constructor.

## Member Function Documentation

virtual void ipe::Tool::draw | ( | Painter & | painter | ) | const`[pure virtual]`

Implemented in ipe::PanTool, ipe::SelectTool, and ipe::TransformTool.

void Tool::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 in ipe::PanTool, ipe::SelectTool, and ipe::TransformTool.

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

Called when the mouse is moved on the canvas.

Reimplemented in ipe::PanTool, ipe::SelectTool, and ipe::TransformTool.

bool Tool::key | ( | int | code,
|  | int | modifiers,
|  | String | text
| ) |  | `[virtual]`

Called when a key is pressed.

modifiers are as defined in CanvasBase::TModifiers.

Reimplemented in ipe::SelectTool.

## Member Data Documentation

CanvasBase* ipe::Tool::iCanvas`[protected]`

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

- ipetool.h
- ipetool.cpp