diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2012-02-14 20:56:34 +0000 |
|---|---|---|
| committer | Diederik van Lierop <mail@diedenrezi.nl> | 2012-02-14 20:56:34 +0000 |
| commit | e182d3546498c8c865fb155481890c5571430c6f (patch) | |
| tree | 3ea9d416ab9610220a3e11fbdae0f62c1ba91741 /src/object-snapper.cpp | |
| parent | Update Authors & Translators lists in About dialog (diff) | |
| download | inkscape-e182d3546498c8c865fb155481890c5571430c6f.tar.gz inkscape-e182d3546498c8c865fb155481890c5571430c6f.zip | |
1) Add checkboxes for perpendicular and tangential snapping to the document properties dialog (on the snap tab)
2) Newly created guides (dragged off the ruler) will take on the angle of the curve that's being snapped to (either perpendicularly or tangentialy, depending of the settings in the document properties dialog)
(bzr r10975)
Diffstat (limited to 'src/object-snapper.cpp')
| -rw-r--r-- | src/object-snapper.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp index 1a4d79a7d..328f58e68 100644 --- a/src/object-snapper.cpp +++ b/src/object-snapper.cpp @@ -499,8 +499,8 @@ void Inkscape::ObjectSnapper::_snapPaths(IntermSnapResults &isr, // continue counting bool strict_snapping = _snapmanager->snapprefs.getStrictSnapping(); - bool snap_perp = _snapmanager->snapprefs.isTargetSnappable(SNAPTARGET_PATH_PERPENDICULAR); - bool snap_tang = _snapmanager->snapprefs.isTargetSnappable(SNAPTARGET_PATH_TANGENTIAL); + bool snap_perp = _snapmanager->snapprefs.getSnapPerp(); + bool snap_tang = _snapmanager->snapprefs.getSnapTang(); //dt->snapindicator->remove_debugging_points(); for (std::vector<SnapCandidatePath >::const_iterator it_p = _paths_to_snap_to->begin(); it_p != _paths_to_snap_to->end(); it_p++) { @@ -549,7 +549,14 @@ void Inkscape::ObjectSnapper::_snapPaths(IntermSnapResults &isr, // std::cout << " dist -> " << dist << std::endl; if (dist < getSnapperTolerance()) { // Add the curve we have snapped to - isr.curves.push_back(SnappedCurve(sp_dt, num_path, index, dist, getSnapperTolerance(), getSnapperAlwaysSnap(), false, curve, p.getSourceType(), p.getSourceNum(), it_p->target_type, it_p->target_bbox)); + Geom::Point sp_tangent_dt = Geom::Point(0,0); + if (p.getSourceType() == Inkscape::SNAPSOURCE_GUIDE_ORIGIN) { + // We currently only use the tangent when snapping guides, so only in this case we will + // actually calculate the tangent to avoid wasting CPU cycles + Geom::Point sp_tangent_doc = curve->unitTangentAt(*np); + sp_tangent_dt = dt->doc2dt(sp_tangent_doc) - dt->doc2dt(Geom::Point(0,0)); + } + isr.curves.push_back(SnappedCurve(sp_dt, sp_tangent_dt, num_path, index, dist, getSnapperTolerance(), getSnapperAlwaysSnap(), false, curve, p.getSourceType(), p.getSourceNum(), it_p->target_type, it_p->target_bbox)); if (snap_tang || snap_perp) { // For each curve that's within snapping range, we will now also search for tangential and perpendicular snaps _snapPathsTangPerp(snap_tang, snap_perp, isr, p, curve, dt); |
