ipe::CanvasBase Class Referenceabstract

`#include <ipecanvas.h>`

Inherited by Canvas, ipe::Canvas, ipe::Canvas, and ipe::Canvas.

## Classes

struct | Style

## Public Types

enum | TModifiers { EShift = 0x100, EControl = 0x200, EAlt = 0x400, EMeta = 0x800, ECommand = 0x1000 }
enum | TCursor { EStandardCursor, EHandCursor, ECrossCursor, EDotCursor }

## Public Member Functions

virtual | ~CanvasBase ()
void | setPage (const Page *page, int pno, int view, const Cascade *sheet)
void | setResources (const PdfResources *resources)
Vector | pan () const
double | zoom () const
const Cascade * | cascade () const
Vector | center () const
Vector | pos () const
Vector | unsnappedPos () const
Vector | globalPos () const
Vector | simpleSnapPos () const
const Snap & | snap () const
void | setInkMode (bool ink)
int | additionalModifiers () const
void | setAdditionalModifiers (int mod)
Vector | devToUser (const Vector &arg) const
Vector | userToDev (const Vector &arg) const
void | setCanvasStyle (const Style &style)
Style | canvasStyle () const
void | setPan (const Vector &v)
void | setZoom (double zoom)
void | setSnap (const Snap &s)
void | setDimmed (bool dimmed)
void | setAutoOrigin (const Vector &v)
Matrix | canvasTfm () const
void | setObserver (CanvasObserver *observer)
void | setFifiVisible (bool visible)
void | setSelectionVisible (bool visible)
void | setTool (Tool *tool)
void | finishTool ()
Tool * | tool ()
void | update ()
void | updateTool ()
int | canvasWidth () const
int | canvasHeight () const
virtual void | setCursor (TCursor cursor, double w=1.0, Color *color=nullptr)=0
virtual void | invalidate (int x, int y, int w, int h)=0

## Static Public Member Functions

static int | selectPageOrView (Document *doc, int page=-1, int startIndex=0, int pageWidth=240, int width=600, int height=480)

## Protected Member Functions

| CanvasBase ()
void | drawPaper (cairo_t *cc)
void | drawFrame (cairo_t *cc)
void | drawAxes (cairo_t *cc)
void | drawGrid (cairo_t *cc)
void | drawObjects (cairo_t *cc)
void | drawTool (Painter &painter)
void | snapToPaperAndFrame ()
void | refreshSurface ()
void | computeFifi (double x, double y)
void | drawFifi (cairo_t *cr)
virtual void | invalidate ()=0

## Protected Attributes

CanvasObserver * | iObserver
Tool * | iTool
const Page * | iPage
int | iPageNumber
int | iView
const Cascade * | iCascade
Style | iStyle
Vector | iPan
double | iZoom
Snap | iSnap
bool | iDimmed
bool | iAutoSnap
Vector | iAutoOrigin
int | iAdditionalModifiers
bool | isInkMode
bool | iRepaintObjects
double | iWidth
double | iHeight
double | iBWidth
double | iBHeight
cairo_surface_t * | iSurface
Vector | iUnsnappedMousePos
Vector | iMousePos
Vector | iGlobalPos
Vector | iOldFifi
bool | iFifiVisible
Snap::TSnapModes | iFifiMode
bool | iSelectionVisible
const PdfResources * | iResources
std::unique_ptr< Fonts > | iFonts

## Member Enumeration Documentation

## TModifiers

enum ipe::CanvasBase::TModifiers

Keyboard modifiers.

Enumerator
EShift |
EControl |
EAlt |
EMeta |
ECommand |

## TCursor

enum ipe::CanvasBase::TCursor

Enumerator
EStandardCursor |
EHandCursor |
ECrossCursor |
EDotCursor |

## Constructor & Destructor Documentation

## ~CanvasBase()

CanvasBase::~CanvasBase | ( |  | ) |

virtual

destructor.

## CanvasBase()

CanvasBase::CanvasBase | ( |  | ) |

protected

Construct a new canvas.

Referenced by ipe::CanvasObserver::canvasObserverSizeChanged().

## Member Function Documentation

## setPage()

void CanvasBase::setPage | ( | const Page * | page,
|  | int | pno,
|  | int | view,
|  | const Cascade * | sheet
| ) |  |

Set the page to be displayed.

Doesn't take ownership of any argument. The page number pno is only needed if page numbering is turned on.

## setResources()

void CanvasBase::setResources | ( | const PdfResources * | resources | ) |

set information about Latex fonts (from ipe::Document)

## pan()

Vector ipe::CanvasBase::pan | ( |  | ) | const

inline

Return current pan.

Referenced by Canvas::magnify(), and ipe::PanTool::mouseButton().

## zoom()

double ipe::CanvasBase::zoom | ( |  | ) | const

inline

Return current zoom.

Referenced by ipe::SelectTool::draw(), ipe::SelectTool::SelectTool(), and ipe::Canvas::sizeHint().

## cascade()

const Cascade* ipe::CanvasBase::cascade | ( |  | ) | const

inline

Return current style sheet cascade.

Referenced by ipe::PanTool::draw().

## center()

Vector ipe::CanvasBase::center | ( |  | ) | const

inline

Return center of canvas.

## pos()

Vector ipe::CanvasBase::pos | ( |  | ) | const

inline

Return last mouse position (snapped!) in user coordinates.

Referenced by ipe::TransformTool::mouseButton(), ipe::TransformTool::mouseMove(), and ipe::TransformTool::TransformTool().

## unsnappedPos()

Vector ipe::CanvasBase::unsnappedPos | ( |  | ) | const

inline

Return last unsnapped mouse position in user coordinates.

Referenced by ipe::PanTool::mouseButton(), ipe::PanTool::mouseMove(), ipe::SelectTool::mouseMove(), ipe::PanTool::PanTool(), and ipe::SelectTool::SelectTool().

## globalPos()

Vector ipe::CanvasBase::globalPos | ( |  | ) | const

inline

Return global mouse position of last mouse press/release.

Referenced by ipe::Canvas::tabletEvent().

## simpleSnapPos()

Vector CanvasBase::simpleSnapPos | ( |  | ) | const

Return snapped mouse position without angular snapping.

## snap()

const Snap& ipe::CanvasBase::snap | ( |  | ) | const

inline

Return current snapping information.

Referenced by ipe::TransformTool::TransformTool().

## setInkMode()

void ipe::CanvasBase::setInkMode | ( | bool | ink | ) |

inline

Set ink mode.

## additionalModifiers()

int ipe::CanvasBase::additionalModifiers | ( |  | ) | const

inline

Return current additional modifiers.

## setAdditionalModifiers()

void CanvasBase::setAdditionalModifiers | ( | int | mod | ) |

Set additional modifiers.

These modifier bits are passed to the Tool when a key is pressed or a drawing action is performed in addition to the actual keyboard modifiers.

## devToUser()

Vector CanvasBase::devToUser | ( | const Vector & | arg | ) | const

Convert canvas (device) coordinates to user coordinates.

References ipe::Vector::x, and ipe::Vector::y.

Referenced by Canvas::magnify().

## userToDev()

Vector CanvasBase::userToDev | ( | const Vector & | arg | ) | const

Convert user coordinates to canvas (device) coordinates.

References ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::Canvas::drawFifi().

## setCanvasStyle()

void CanvasBase::setCanvasStyle | ( | const Style & | style | ) |

Set style of canvas drawing.

Includes paper color, pretty text, and grid.

## canvasStyle()

Style ipe::CanvasBase::canvasStyle | ( |  | ) | const

inline

Return canvas style.

## setPan()

void CanvasBase::setPan | ( | const Vector & | v | ) |

Set current pan position.

The pan position is the user coordinate that is displayed at the very center of the canvas.

Referenced by Canvas::magnify(), and ipe::PanTool::mouseButton().

## setZoom()

void CanvasBase::setZoom | ( | double | zoom | ) |

Set current zoom factor.

The zoom factor maps user coordinates to screen pixel coordinates.

Referenced by Canvas::magnify().

## setSnap()

void CanvasBase::setSnap | ( | const Snap & | s | ) |

Set the snapping information.

## setDimmed()

void CanvasBase::setDimmed | ( | bool | dimmed | ) |

Dim whole canvas, except for the Tool.

This mode will be reset when the Tool finishes.

## setAutoOrigin()

void CanvasBase::setAutoOrigin | ( | const Vector & | v | ) |

Enable automatic angular snapping with this origin.

Referenced by ipe::TransformTool::TransformTool().

## canvasTfm()

Matrix CanvasBase::canvasTfm | ( |  | ) | const

Matrix mapping user coordinates to canvas coordinates.

Referenced by Canvas::drawRect(), and ipe::Canvas::paintEvent().

## setObserver()

void CanvasBase::setObserver | ( | CanvasObserver * | observer | ) |

Set an observer.

Use 0 to delete current observer.

## setFifiVisible()

void CanvasBase::setFifiVisible | ( | bool | visible | ) |

Set whether Fifi should be shown.

Fifi will only be shown if a snapping mode is active.

## setSelectionVisible()

void CanvasBase::setSelectionVisible | ( | bool | visible | ) |

Set whether selection should be shown when there is no tool.

## setTool()

void CanvasBase::setTool | ( | Tool * | tool | ) |

Set a new tool.

Calls canvasObserverToolChanged().

## finishTool()

void CanvasBase::finishTool | ( |  | ) |

Referenced by ipe::SelectTool::key(), ipe::PanTool::mouseButton(), ipe::SelectTool::mouseButton(), and ipe::TransformTool::mouseButton().

## tool()

Tool* ipe::CanvasBase::tool | ( |  | ) |

inline

## update()

void CanvasBase::update | ( |  | ) |

Mark for update with redrawing of objects.

Referenced by Canvas::magnify().

## updateTool()

void CanvasBase::updateTool | ( |  | ) |

Mark for update with redrawing of tool only.

Referenced by ipe::SelectTool::key(), ipe::PanTool::mouseMove(), ipe::SelectTool::mouseMove(), and ipe::TransformTool::mouseMove().

## canvasWidth()

int ipe::CanvasBase::canvasWidth | ( |  | ) | const

inline

## canvasHeight()

int ipe::CanvasBase::canvasHeight | ( |  | ) | const

inline

## setCursor()

virtual void ipe::CanvasBase::setCursor | ( | TCursor | cursor,
|  | double | w = `1.0`,
|  | Color * | color = `nullptr`
| ) |  |

pure virtual

Implemented in ipe::Canvas.

Referenced by ipe::PanTool::PanTool(), ipe::SelectTool::SelectTool(), and ipe::TransformTool::TransformTool().

## selectPageOrView()

int CanvasBase::selectPageOrView | ( | Document * | doc,
|  | int | page = `-1`,
|  | int | startIndex = `0`,
|  | int | pageWidth = `240`,
|  | int | width = `600`,
|  | int | height = `480`
| ) |  |

static

Show dialog to select a page or a view.

If page is negative (the default), shows thumbnails of all pages of the document in a dialog. If the user selects a page, the page number is returned. If the dialog is canceled, -1 is returned.

If page is non-negative, all views of this page are shown, and the selected view number is returned.

itemWidth is the width of the page thumbnails (the height is computed automatically).

If page is negative (the default), shows thumbnails of all pages of the document in a dialog. If the user selects a page, the page number is returned. If the dialog is canceled, -1 is returned.

If page is non-negative, all views of this page are shown, and the selected view number is returned.

References ipe::Thumbnail::height(), and ipe::Thumbnail::width().

Referenced by ipe::PageSelector::fill().

## invalidate() [1/2]

virtual void ipe::CanvasBase::invalidate | ( | int | x,
|  | int | y,
|  | int | w,
|  | int | h
| ) |  |

pure virtual

Implemented in ipe::Canvas.

## drawPaper()

void CanvasBase::drawPaper | ( | cairo_t * | cc | ) |

protected

References ipe::Layout::iOrigin, ipe::Layout::iPaperSize, ipe::Vector::x, and ipe::Vector::y.

## drawFrame()

void CanvasBase::drawFrame | ( | cairo_t * | cc | ) |

protected

References ipe::Layout::iFrameSize, ipe::Vector::x, and ipe::Vector::y.

## drawAxes()

void CanvasBase::drawAxes | ( | cairo_t * | cc | ) |

protected

References ipe::Vector::x, and ipe::Vector::y.

## drawGrid()

void CanvasBase::drawGrid | ( | cairo_t * | cc | ) |

protected

References ipe::Vector::x, ipe::Vector::y, and ipe::Vector::ZERO.

## drawObjects()

void CanvasBase::drawObjects | ( | cairo_t * | cc | ) |

protected

References ipe::Attribute::BACKGROUND(), ipe::Text::draw(), ipe::Object::draw(), ipe::Symbol::iObject, ipe::Layout::iOrigin, ipe::Layout::iPaperSize, ipe::CairoPainter::setDimmed(), ipe::Vector::x, and ipe::Vector::y.

## drawTool()

void CanvasBase::drawTool | ( | Painter & | painter | ) |

protected

Draw the current canvas tool.

If no tool is set, it draws the selected objects.

References ipe::EPrimarySelected, ipe::ESecondarySelected, ipe::Painter::setPen(), and ipe::Painter::setStroke().

Referenced by Canvas::drawRect(), and ipe::Canvas::paintEvent().

## snapToPaperAndFrame()

void CanvasBase::snapToPaperAndFrame | ( |  | ) |

protected

References ipe::Rect::bottomLeft(), ipe::Rect::bottomRight(), ipe::Snap::ESnapBd, ipe::Snap::ESnapVtx, ipe::Layout::iFrameSize, ipe::Layout::paper(), ipe::Vector::snap(), ipe::Rect::topLeft(), ipe::Rect::topRight(), and ipe::Vector::ZERO.

## refreshSurface()

void CanvasBase::refreshSurface | ( |  | ) |

protected

Referenced by Canvas::drawRect(), ipe::Canvas::paintEvent(), and ipe::Canvas::~Canvas().

## computeFifi()

void CanvasBase::computeFifi | ( | double | x,
|  | double | y
| ) |  |

protected

Stores the mouse position in iUnsnappedMousePos, computes Fifi if snapping is enabled, and stores snapped position in iMousePos.

References ipe::Snap::ESnapAuto, ipe::Snap::ESnapNone, ipe::Vector::x, and ipe::Vector::y.

Referenced by Canvas::drawRect(), ipe::Canvas::mouseButton(), Canvas::mouseMove(), ipe::Canvas::mouseMoveEvent(), and ipe::Canvas::tabletEvent().

## drawFifi()

void CanvasBase::drawFifi | ( | cairo_t * | cr | ) |

protected

References ipe::Snap::ESnapAngle, ipe::Snap::ESnapAuto, ipe::Snap::ESnapBd, ipe::Snap::ESnapCtl, ipe::Snap::ESnapGrid, ipe::Snap::ESnapInt, ipe::Snap::ESnapNone, and ipe::Snap::ESnapVtx.

## invalidate() [2/2]

virtual void ipe::CanvasBase::invalidate | ( |  | ) |

protected pure virtual

Implemented in ipe::Canvas.

## Member Data Documentation

## iObserver

CanvasObserver* ipe::CanvasBase::iObserver

protected

Referenced by Canvas::drawRect(), Canvas::magnify(), ipe::Canvas::mouseButton(), Canvas::mouseMove(), ipe::Canvas::mouseMoveEvent(), Canvas::scrollWheel(), ipe::Canvas::tabletEvent(), and ipe::Canvas::wheelEvent().

## iTool

Tool* ipe::CanvasBase::iTool

protected

Referenced by Canvas::drawRect(), Canvas::key(), ipe::Canvas::keyPressEvent(), ipe::Canvas::mouseButton(), Canvas::mouseMove(), ipe::Canvas::mouseMoveEvent(), and ipe::Canvas::tabletEvent().

## iPage

const Page* ipe::CanvasBase::iPage

protected

Referenced by Canvas::drawRect(), and ipe::Canvas::paintEvent().

## iPageNumber

int ipe::CanvasBase::iPageNumber

protected

## iView

int ipe::CanvasBase::iView

protected

Referenced by Canvas::Canvas(), Canvas::drawRect(), Canvas::magnify(), Canvas::mouseMove(), and ipe::Canvas::~Canvas().

## iCascade

const Cascade* ipe::CanvasBase::iCascade

protected

Referenced by Canvas::drawRect(), and ipe::Canvas::paintEvent().

## iStyle

Style ipe::CanvasBase::iStyle

protected

## iPan

Vector ipe::CanvasBase::iPan

protected

## iZoom

double ipe::CanvasBase::iZoom

protected

Referenced by Canvas::drawRect(), and Canvas::magnify().

## iSnap

Snap ipe::CanvasBase::iSnap

protected

## iDimmed

bool ipe::CanvasBase::iDimmed

protected

## iAutoSnap

bool ipe::CanvasBase::iAutoSnap

protected

## iAutoOrigin

Vector ipe::CanvasBase::iAutoOrigin

protected

## iAdditionalModifiers

int ipe::CanvasBase::iAdditionalModifiers

protected

Referenced by Canvas::drawRect(), ipe::Canvas::keyPressEvent(), ipe::Canvas::mouseButton(), and ipe::Canvas::tabletEvent().

## isInkMode

bool ipe::CanvasBase::isInkMode

protected

## iRepaintObjects

bool ipe::CanvasBase::iRepaintObjects

protected

Referenced by ipe::Canvas::~Canvas().

## iWidth

double ipe::CanvasBase::iWidth

protected

Referenced by Canvas::drawRect(), ipe::Canvas::paintEvent(), and ipe::Canvas::~Canvas().

## iHeight

double ipe::CanvasBase::iHeight

protected

Referenced by Canvas::drawRect(), Canvas::magnify(), Canvas::mouseMove(), ipe::Canvas::paintEvent(), and ipe::Canvas::~Canvas().

## iBWidth

double ipe::CanvasBase::iBWidth

protected

Referenced by Canvas::drawRect(), ipe::Canvas::paintEvent(), and ipe::Canvas::~Canvas().

## iBHeight

double ipe::CanvasBase::iBHeight

protected

Referenced by Canvas::drawRect(), ipe::Canvas::paintEvent(), and ipe::Canvas::~Canvas().

## iSurface

cairo_surface_t* ipe::CanvasBase::iSurface

protected

Referenced by Canvas::drawRect(), ipe::Canvas::paintEvent(), and ipe::Canvas::~Canvas().

## iUnsnappedMousePos

Vector ipe::CanvasBase::iUnsnappedMousePos

protected

## iMousePos

Vector ipe::CanvasBase::iMousePos

protected

Referenced by ipe::Canvas::drawFifi().

## iGlobalPos

Vector ipe::CanvasBase::iGlobalPos

protected

Referenced by Canvas::drawRect(), ipe::Canvas::mouseButton(), and ipe::Canvas::tabletEvent().

## iOldFifi

Vector ipe::CanvasBase::iOldFifi

protected

Referenced by ipe::Canvas::drawFifi().

## iFifiVisible

bool ipe::CanvasBase::iFifiVisible

protected

Referenced by Canvas::drawRect(), and ipe::Canvas::paintEvent().

## iFifiMode

Snap::TSnapModes ipe::CanvasBase::iFifiMode

protected

Referenced by ipe::Canvas::drawFifi().

## iSelectionVisible

bool ipe::CanvasBase::iSelectionVisible

protected

## iResources

const PdfResources* ipe::CanvasBase::iResources

protected

## iFonts

std::unique_ptr<Fonts> ipe::CanvasBase::iFonts

protected

Referenced by Canvas::drawRect().

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

- ipecanvas.h
- ipecanvas.cpp
- ipeselector_cocoa.cpp
- ipeselector_gtk.cpp
- ipeselector_qt.cpp
- ipeselector_win.cpp