Public Types | Public Member Functions | Public Attributes | List of all members
ipe::Snap Class Reference

#include <ipesnap.h>

Public Types

enum  TSnapModes {
  ESnapNone = 0 , ESnapVtx = 1 , ESnapCtl = 2 , ESnapBd = 4 ,
  ESnapInt = 8 , ESnapGrid = 0x10 , ESnapAngle = 0x20 , ESnapAuto = 0x40 ,
  ESnapCustom = 0x80

Public Member Functions

void intersectionSnap (const Vector &pos, Vector &fifi, const Page *page, int view, double &snapDist) const noexcept
bool snapAngularIntersection (Vector &pos, const Line &l, const Page *page, int view, double snapDist) const noexcept
TSnapModes simpleSnap (Vector &pos, const Page *page, int view, double snapDist, Tool *tool=nullptr) const noexcept
TSnapModes snap (Vector &pos, const Page *page, int view, double snapDist, Tool *tool=nullptr, Vector *autoOrg=nullptr) const noexcept
Line getLine (const Vector &mouse, const Vector &base) const noexcept
bool setEdge (const Vector &pos, const Page *page, int view) noexcept

Public Attributes

int iSnap
bool iGridVisible
int iGridSize
double iAngleSize
int iSnapDistance
bool iWithAxes
Vector iOrigin
Angle iDir

Detailed Description

Performs snapping operations, and stores snapping state.

Member Enumeration Documentation

◆ TSnapModes

The different snap modes as bitmasks.


Member Function Documentation

◆ intersectionSnap()

void Snap::intersectionSnap ( const Vector pos,
Vector fifi,
const Page page,
int  view,
double &  snapDist 
) const

Perform intersection snapping.

References ipe::size().

◆ snapAngularIntersection()

bool Snap::snapAngularIntersection ( Vector pos,
const Line l,
const Page page,
int  view,
double  snapDist 
) const

Perform snapping to intersection of angular line and pos.

◆ simpleSnap()

Snap::TSnapModes Snap::simpleSnap ( Vector pos,
const Page page,
int  view,
double  snapDist,
Tool tool = nullptr 
) const

Tries vertex, intersection, boundary, and grid snapping.

If snapping occurred, pos is set to the new user space position.

References ipe::Page::count(), ipe::Page::objSnapsInView(), ipe::Page::snapBnd(), ipe::Page::snapCtl(), ipe::Page::snapVtx(), ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::CanvasBase::simpleSnapPos().

◆ snap()

Snap::TSnapModes Snap::snap ( Vector pos,
const Page page,
int  view,
double  snapDist,
Tool tool = nullptr,
Vector autoOrg = nullptr 
) const

Performs snapping of position pos.

Returns true if snapping occurred. In that case pos is set to the new user space position.

Automatic angular snapping occurs if autoOrg is not null — the value is then used as the origin for automatic angular snapping.

References ipe::Line::intersects(), ipe::Line::project(), and ipe::Vector::sqLen().

Referenced by ipe::CanvasBase::computeFifi().

◆ getLine()

Line Snap::getLine ( const Vector mouse,
const Vector base 
) const

Find line through base with slope determined by angular snap size and direction.

References ipe::Vector::angle(), ipe::Vector::len(), and ipe::Angle::normalize().

◆ setEdge()

bool Snap::setEdge ( const Vector pos,
const Page page,
int  view 

Member Data Documentation

◆ iSnap

int ipe::Snap::iSnap

◆ iGridVisible

bool ipe::Snap::iGridVisible

Is the grid visible?

Referenced by ipe::CanvasBase::CanvasBase(), and ipe::CanvasBase::refreshSurface().

◆ iGridSize

int ipe::Snap::iGridSize

◆ iAngleSize

double ipe::Snap::iAngleSize

Angle for angular snapping.

Referenced by ipe::CanvasBase::CanvasBase(), and ipe::CanvasBase::drawAxes().

◆ iSnapDistance

int ipe::Snap::iSnapDistance

◆ iWithAxes

bool ipe::Snap::iWithAxes

◆ iOrigin

Vector ipe::Snap::iOrigin

◆ iDir

Angle ipe::Snap::iDir

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