summaryrefslogtreecommitdiffstats
path: root/src/2geom/pathvector.cpp
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2008-07-25 21:03:44 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2008-07-25 21:03:44 +0000
commit57d418b27cd2f4b75de1672c0a6e58fe2e5546c9 (patch)
treea5b44b406145087d79d14033b080e6918befc0d3 /src/2geom/pathvector.cpp
parentcopyedit (diff)
downloadinkscape-57d418b27cd2f4b75de1672c0a6e58fe2e5546c9.tar.gz
inkscape-57d418b27cd2f4b75de1672c0a6e58fe2e5546c9.zip
update to 2geom rev. 1507
(bzr r6416)
Diffstat (limited to 'src/2geom/pathvector.cpp')
-rw-r--r--src/2geom/pathvector.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/2geom/pathvector.cpp b/src/2geom/pathvector.cpp
index 1e0a20003..6d4e24c9f 100644
--- a/src/2geom/pathvector.cpp
+++ b/src/2geom/pathvector.cpp
@@ -88,6 +88,32 @@ Rect bounds_exact( PathVector const& pv )
return bound;
}
+/* Note: undefined for empty pathvectors or pathvectors with empty paths.
+ * */
+PathVectorPosition nearestPoint(PathVector const & path_in, Point const& _point, double *distance_squared)
+{
+ PathVectorPosition retval;
+
+ double mindsq = infinity();
+ unsigned int i = 0;
+ for (Geom::PathVector::const_iterator pit = path_in.begin(); pit != path_in.end(); ++pit) {
+ double dsq;
+ double t = pit->nearestPoint(_point, &dsq);
+ if (dsq < mindsq) {
+ mindsq = dsq;
+ retval.path_nr = i;
+ retval.t = t;
+ }
+
+ ++i;
+ }
+
+ if (distance_squared) {
+ *distance_squared = mindsq;
+ }
+ return retval;
+}
+
} // namespace Geom
#endif // SEEN_GEOM_PATHVECTOR_CPP