Logo Search packages:      
Sourcecode: inkscape version File versions  Download package

SnapManager Class Reference

#include <snap.h>

List of all members.


Detailed Description

Class to coordinate snapping operations.

Each SPNamedView has one of these. It offers methods to snap points to whatever snappers are defined (e.g. grid, guides etc.). It also allows callers to snap points which have undergone some transformation (e.g. translation, scaling etc.)

Definition at line 52 of file snap.h.


Public Types

typedef std::list< const
Inkscape::Snapper * > 
SnapperList
enum  Transformation { TRANSLATION, SCALE, STRETCH, SKEW }

Public Member Functions

Inkscape::SnappedPoint constrainedSnap (Inkscape::SnapPreferences::PointType point_type, Geom::Point const &p, Inkscape::SnapSourceType const &source_type, Inkscape::Snapper::ConstraintLine const &constraint, bool first_point=true, Geom::OptRect const &bbox_to_snap=Geom::OptRect()) const
 Try to snap a point along a constraint line to grids, guides or objects.
void constrainedSnapReturnByRef (Inkscape::SnapPreferences::PointType point_type, Geom::Point &p, Inkscape::SnapSourceType const source_type, Inkscape::Snapper::ConstraintLine const &constraint, bool first_point=true, Geom::OptRect const &bbox_to_snap=Geom::OptRect()) const
 Try to snap a point along a constraint line to grids, guides or objects.
Inkscape::SnappedPoint constrainedSnapScale (Inkscape::SnapPreferences::PointType point_type, std::vector< std::pair< Geom::Point, int > > const &p, Geom::Point const &pointer, Geom::Scale const &s, Geom::Point const &o) const
 Apply a scaling to a set of points and snap such that the aspect ratio of the selection is preserved.
Inkscape::SnappedPoint constrainedSnapSkew (Inkscape::SnapPreferences::PointType point_type, std::vector< std::pair< Geom::Point, int > > const &p, Geom::Point const &pointer, Inkscape::Snapper::ConstraintLine const &constraint, Geom::Point const &s, Geom::Point const &o, Geom::Dim2 d) const
 Apply a skew to a set of points and snap such that the direction of the skew is preserved.
Inkscape::SnappedPoint constrainedSnapStretch (Inkscape::SnapPreferences::PointType point_type, std::vector< std::pair< Geom::Point, int > > const &p, Geom::Point const &pointer, Geom::Coord const &s, Geom::Point const &o, Geom::Dim2 d, bool uniform) const
 Apply a stretch to a set of points and snap such that the direction of the stretch is preserved.
Inkscape::SnappedPoint constrainedSnapTranslation (Inkscape::SnapPreferences::PointType point_type, std::vector< std::pair< Geom::Point, int > > const &p, Geom::Point const &pointer, Inkscape::Snapper::ConstraintLine const &constraint, Geom::Point const &tr) const
 Apply a translation to a set of points and try to snap along a constraint.
Inkscape::SnappedPoint freeSnap (Inkscape::SnapPreferences::PointType point_type, Geom::Point const &p, Inkscape::SnapSourceType const &source_type, bool first_point=true, Geom::OptRect const &bbox_to_snap=Geom::OptRect()) const
 Try to snap a point to grids, guides or objects.
void freeSnapReturnByRef (Inkscape::SnapPreferences::PointType point_type, Geom::Point &p, Inkscape::SnapSourceType const source_type, bool first_point=true, Geom::OptRect const &bbox_to_snap=Geom::OptRect()) const
 Try to snap a point to grids, guides or objects.
Inkscape::SnappedPoint freeSnapScale (Inkscape::SnapPreferences::PointType point_type, std::vector< std::pair< Geom::Point, int > > const &p, Geom::Point const &pointer, Geom::Scale const &s, Geom::Point const &o) const
 Apply a scaling to a set of points and try to snap freely in 2 degrees-of-freedom.
Inkscape::SnappedPoint freeSnapTranslation (Inkscape::SnapPreferences::PointType point_type, std::vector< std::pair< Geom::Point, int > > const &p, Geom::Point const &pointer, Geom::Point const &tr) const
 Apply a translation to a set of points and try to snap freely in 2 degrees-of-freedom.
SPDesktop const * getDesktop () const
SPDocumentgetDocument () const
SnapperList getGridSnappers () const
 Return a list of gridsnappers.
SPGuide const * getGuideToIgnore () const
SPNamedView const * getNamedView () const
bool getSnapIndicator () const
SnapperList getSnappers () const
 Return a list of snappers.
bool gridSnapperMightSnap () const
void guideConstrainedSnap (Geom::Point &p, SPGuide const &guideline) const
 Try to snap a point on a guide to the intersection with another guide or a path.
void guideFreeSnap (Geom::Point &p, Geom::Point const &guide_normal, SPGuideDragType drag_type) const
 Try to snap a point of a guide to another guide or to a node.
Geom::Point multipleOfGridPitch (Geom::Point const &t) const
 Snap to the closest multiple of a grid pitch.
void setup (SPDesktop const *desktop, bool snapindicator, std::vector< SPItem const * > &items_to_ignore, std::vector< std::pair< Geom::Point, int > > *unselected_nodes=NULL, SPGuide *guide_to_ignore=NULL)
 Prepare the snap manager for the actual snapping, which includes building a list of snap targets to ignore and toggling the snap indicator.
void setup (SPDesktop const *desktop, bool snapindicator=true, SPItem const *item_to_ignore=NULL, std::vector< std::pair< Geom::Point, int > > *unselected_nodes=NULL, SPGuide *guide_to_ignore=NULL)
 Prepare the snap manager for the actual snapping, which includes building a list of snap targets to ignore and toggling the snap indicator.
 SnapManager (SPNamedView const *v)
bool someSnapperMightSnap () const
 Return true if any snapping might occur, whether its to grids, guides or objects.

Public Attributes

Inkscape::GuideSnapper guide
 guide snapper
Inkscape::ObjectSnapper object
 snapper to other objects
Inkscape::SnapPreferences snapprefs

Protected Attributes

SPNamedView const * _named_view

Private Member Functions

void _displaySnapsource (Inkscape::SnapPreferences::PointType point_type, std::pair< Geom::Point, int > const &p) const
 Mark the location of the snap source (not the snap target!) on the canvas by drawing a symbol.
Inkscape::SnappedPoint _snapTransformed (Inkscape::SnapPreferences::PointType type, std::vector< std::pair< Geom::Point, int > > const &points, Geom::Point const &pointer, bool constrained, Inkscape::Snapper::ConstraintLine const &constraint, Transformation transformation_type, Geom::Point const &transformation, Geom::Point const &origin, Geom::Dim2 dim, bool uniform) const
 Method for snapping sets of points while they are being transformed.
Geom::Point _transformPoint (std::pair< Geom::Point, int > const &p, Transformation const transformation_type, Geom::Point const &transformation, Geom::Point const &origin, Geom::Dim2 const dim, bool const uniform) const
 Takes an untransformed point, applies the given transformation, and returns the transformed point. Eliminates lots of duplicated code.
Inkscape::SnappedPoint findBestSnap (Geom::Point const &p, Inkscape::SnapSourceType const source_type, SnappedConstraints &sc, bool constrained, bool noCurves=false) const
 Given a set of possible snap targets, find the best target (which is not necessarily also the nearest target), and show the snap indicator if requested.

Private Attributes

SPDesktop const * _desktop
SPGuide * _guide_to_ignore
 A guide that should not be snapped to, e.g. the guide that is currently being dragged.
SPItem const * _item_to_ignore
 Single item that should not be snapped to. If not NULL then this takes precedence over _items_to_ignore. Set using the setup() method.
std::vector< SPItem const * > * _items_to_ignore
 Items that should not be snapped to, for example the items that are currently being dragged. Set using the setup() method.
bool _snapindicator
 When true, an indicator will be drawn at the position that was being snapped to.
std::vector< std::pair
< Geom::Point, int > > * 
_unselected_nodes
 Nodes of the path that is currently being edited and which have not been selected and which will therefore be stationary. Only these nodes will be considered for snapping to. Of each unselected node both the position (Geom::Point) and the type (Inkscape::SnapTargetType) will be stored.

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

Generated by  Doxygen 1.6.0   Back to index