Ipelib: ipe::CanvasBase Class Reference

Ipelib

Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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 | ( |  | ) |
| protectedpure 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