21 std::vector<Inkscape::SnapCandidatePoint> transformed_points;
25 for (std::vector<Inkscape::SnapCandidatePoint>::const_iterator i = points.begin(); i != points.end(); ++i) {
31 if (i == points.begin()) {
49 std::vector<Inkscape::SnapCandidatePoint>::iterator j = transformed_points.begin();
52 bool first_free_snap =
true;
54 for (std::vector<Inkscape::SnapCandidatePoint>::const_iterator i = points.begin(); i != points.end(); ++i) {
63 if (first_free_snap) {
65 first_free_snap =
false;
76 bool store_best_snap =
false;
80 store_best_snap =
true;
95 store_best_snap =
true;
100 if (store_best_snap || i == points.begin()) {
101 best_original_point = (*i);
145 return sm->
freeSnap(p, bbox_to_snap);
176 if (fabs(b[
index]) > 1e-4) {
219 bool const c1 = fabs(b[
Geom::X]) < 1e-6;
220 bool const c2 = fabs(b[
Geom::Y]) < 1e-6;
221 if ((c1 || c2) && !(c1 && c2)) {
226 return sm->
freeSnap(p, bbox_to_snap);
void expandTo(CPoint const &p)
Enlarge the rectangle to contain the given point.
Axis-aligned rectangle that can be empty.
Two-dimensional point that doubles as a vector.
Axis aligned, non-empty rectangle.
Rotation around the origin.
SnappedPoint snap(::SnapManager *sm, SnapCandidatePoint const &p, Geom::Point pt_orig, Geom::OptRect const &bbox_to_snap) const override
Geom::Point getTransformedPoint(SnapCandidatePoint const &p) const override
void storeTransform(SnapCandidatePoint const &original_point, SnappedPoint &snapped_point) override
SnappedPoint snap(::SnapManager *sm, SnapCandidatePoint const &p, Geom::Point pt_orig, Geom::OptRect const &bbox_to_snap) const override
SnappedPoint snap(::SnapManager *sm, SnapCandidatePoint const &p, Geom::Point pt_orig, Geom::OptRect const &bbox_to_snap) const override
Geom::Scale _scale_snapped
void storeTransform(SnapCandidatePoint const &original_point, SnappedPoint &snapped_point) override
Geom::Point getTransformedPoint(SnapCandidatePoint const &p) const override
void storeTransform(SnapCandidatePoint const &original_point, SnappedPoint &snapped_point) override
SnappedPoint snap(::SnapManager *sm, SnapCandidatePoint const &p, Geom::Point pt_orig, Geom::OptRect const &bbox_to_snap) const override
Geom::Coord _skew_snapped
Geom::Point getTransformedPoint(SnapCandidatePoint const &p) const override
Geom::Point getTransformedPoint(SnapCandidatePoint const &p) const override
SnappedPoint snap(::SnapManager *sm, SnapCandidatePoint const &p, Geom::Point pt_orig, Geom::OptRect const &bbox_to_snap) const override
void storeTransform(SnapCandidatePoint const &original_point, SnappedPoint &snapped_point) override
Geom::Scale _stretch_snapped
SnappedPoint snap(::SnapManager *sm, SnapCandidatePoint const &p, Geom::Point pt_orig, Geom::OptRect const &bbox_to_snap) const override
void storeTransform(SnapCandidatePoint const &original_point, SnappedPoint &snapped_point) override
SnappedPoint snap(::SnapManager *sm, SnapCandidatePoint const &p, Geom::Point pt_orig, Geom::OptRect const &bbox_to_snap) const override
Geom::Point _vector_snapped
Geom::Point getTransformedPoint(SnapCandidatePoint const &p) const override
Class to store data for points which are snap candidates, either as a source or as a target.
Inkscape::SnapSourceType getSourceType() const
Geom::Point const & getPoint() const
Class describing the result of an attempt to snap.
void setSecondSnapDistance(Geom::Coord const d)
Geom::Point getPoint() const
bool getAlwaysSnap() const
Geom::Coord getSnapDistance() const
void setSnapDistance(Geom::Coord const d)
bool isOtherSnapBetter(SnappedPoint const &other_one, bool weighted) const
bool getAtIntersection() const
void setPointerDistance(Geom::Coord const d)
Class to coordinate snapping operations.
Inkscape::SnappedPoint constrainedSnap(Inkscape::SnapCandidatePoint const &p, Inkscape::Snapper::SnapConstraint const &constraint, 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 freeSnap(Inkscape::SnapCandidatePoint const &p, Geom::OptRect const &bbox_to_snap=Geom::OptRect(), bool to_path_only=false) const
Try to snap a point to grids, guides or objects.
constexpr Coord infinity()
Get a value representing infinity.
double Coord
Floating point type used to store coordinates.
int sgn(const T &x)
Sign function - indicates the sign of a numeric type.
SBasis L2(D2< SBasis > const &a, unsigned k)
T dot(D2< T > const &a, D2< T > const &b)
D2< T > rot90(D2< T > const &a)
Helper class to stream background task notifications as a series of messages.
@ SNAPSOURCE_BBOX_CATEGORY