# ipe::Snap Class Reference
Ipe Utilities

Performs snapping operations, and stores snapping state. More...

`#include <ipesnap.h>`

List of all members.

## Public Types

- enum TSnapModes {
  ESnapNone = 0, ESnapVtx = 1, ESnapBd = 2, ESnapInt = 4,
  ESnapGrid = 8, ESnapAngle = 0x10, ESnapAuto = 0x20
  }

## Public Member Functions

- bool intersectionSnap (Vector &pos, const Page *page, double snapDist) const
- bool snapAngularIntersection (Vector &pos, const Line &l, const Page *page, double snapDist) const
- bool simpleSnap (Vector &pos, const Page *page, double snapDist) const
- bool snap (Vector &pos, const Page *page, double snapDist, Vector *autoOrg=0) const
- Line getLine (const Vector &mouse, const Vector &base) const
- bool setEdge (const Vector &pos, const Page *page)

## 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

enum ipe::Snap::TSnapModes

The different snap modes as bitmasks.

Enumerator:

  ESnapNone |
  ESnapVtx |
  ESnapBd |
  ESnapInt |
  ESnapGrid |
  ESnapAngle |
  ESnapAuto |

## Member Function Documentation

bool Snap::intersectionSnap | ( | Vector & | pos,
|  | const Page * | page,
|  | double | snapDist
| ) |  | const

Perform intersection snapping.

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

Perform snapping to intersection of angular line and pos.

bool Snap::simpleSnap | ( | Vector & | pos,
|  | const Page * | page,
|  | double | snapDist
| ) |  | const

Tries vertex, intersection, boundary, and grid snapping.

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

bool Snap::snap | ( | Vector & | pos,
|  | const Page * | page,
|  | double | snapDist,
|  | Vector * | autoOrg = `0`
| ) |  | 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.

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

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

bool Snap::setEdge | ( | const Vector & | pos,
|  | const Page * | page
| ) |  |

Set axis origin and direction from edge near mouse.

Returns `true` if successful.

## Member Data Documentation

int ipe::Snap::iSnap

Activated snapping modes (TSnapModes)

bool ipe::Snap::iGridVisible

Is the grid visible?

int ipe::Snap::iGridSize

Snap grid spacing.

double ipe::Snap::iAngleSize

Angle for angular snapping.

int ipe::Snap::iSnapDistance

Snap distance (in pixels).

bool ipe::Snap::iWithAxes

Show coordinate system?

Vector ipe::Snap::iOrigin

Origin of coordinate system.

Angle ipe::Snap::iDir

Direction of x-axis.

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

- ipesnap.h
- ipesnap.cpp