Ipelib
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.

Enumerator
ESnapNone 
ESnapVtx 
ESnapCtl 
ESnapBd 
ESnapInt 
ESnapGrid 
ESnapAngle 
ESnapAuto 
ESnapCustom 

Member Function Documentation

◆ intersectionSnap()

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

Perform intersection snapping.

References ipe::size().

Referenced by simpleSnap().

◆ snapAngularIntersection()

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

Perform snapping to intersection of angular line and pos.

Referenced by snap().

◆ simpleSnap()

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

Tries vertex, intersection, boundary, and grid snapping.

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

References ipe::Page::count(), ESnapBd, ESnapCtl, ESnapCustom, ESnapGrid, ESnapInt, ESnapNone, ESnapVtx, iGridSize, intersectionSnap(), iSnap, ipe::Page::objSnapsInView(), ipe::Page::snapBnd(), ipe::Page::snapCtl(), ipe::Page::snapVtx(), ipe::Vector::x, and ipe::Vector::y.

Referenced by snap().

◆ snap()

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

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 ESnapAngle, ESnapAuto, ESnapBd, getLine(), ipe::Line::intersects(), iOrigin, iSnap, ipe::Line::project(), simpleSnap(), snapAngularIntersection(), and ipe::Vector::sqLen().

◆ getLine()

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

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

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

Referenced by snap().

◆ setEdge()

bool Snap::setEdge ( const Vector & pos,
const Page * page,
int view )
noexcept

Member Data Documentation

◆ iSnap

int ipe::Snap::iSnap

Activated snapping modes (TSnapModes)

Referenced by simpleSnap(), and snap().

◆ iGridVisible

bool ipe::Snap::iGridVisible

Is the grid visible?

◆ iGridSize

int ipe::Snap::iGridSize

Snap grid spacing.

Referenced by simpleSnap().

◆ iAngleSize

double ipe::Snap::iAngleSize

Angle for angular snapping.

Referenced by getLine().

◆ iSnapDistance

int ipe::Snap::iSnapDistance

Snap distance (in pixels).

◆ iWithAxes

bool ipe::Snap::iWithAxes

Show coordinate system?

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

◆ iOrigin

Vector ipe::Snap::iOrigin

Origin of coordinate system.

Referenced by setEdge(), and snap().

◆ iDir

Angle ipe::Snap::iDir

Direction of x-axis.

Referenced by getLine(), and setEdge().


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