diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2008-07-25 21:03:44 +0000 |
|---|---|---|
| committer | johanengelen <johanengelen@users.sourceforge.net> | 2008-07-25 21:03:44 +0000 |
| commit | 57d418b27cd2f4b75de1672c0a6e58fe2e5546c9 (patch) | |
| tree | a5b44b406145087d79d14033b080e6918befc0d3 /src/2geom/pathvector.cpp | |
| parent | copyedit (diff) | |
| download | inkscape-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.cpp | 26 |
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 |
