From: buliabyak Date: Sat, 1 Apr 2006 03:04:55 +0000 (+0000) Subject: switch get_nearest_position and get_point to using supplied livarot Path instead... X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=7a93ed04a44250aab4929b7cd6c94d0bd517a516;p=inkscape.git switch get_nearest_position and get_point to using supplied livarot Path instead of creating one each time from an item --- diff --git a/src/splivarot.cpp b/src/splivarot.cpp index df5b82710..8dbdcdfd7 100644 --- a/src/splivarot.cpp +++ b/src/splivarot.cpp @@ -42,7 +42,8 @@ #include "livarot/Path.h" #include "livarot/Shape.h" -Path *Path_for_item(SPItem *item, bool doTransformation, bool transformFull = true); +#include "splivarot.h" + bool Ancetre(Inkscape::XML::Node *a, Inkscape::XML::Node *who); void sp_selected_path_boolop(bool_op bop); @@ -1566,31 +1567,17 @@ Path_for_item(SPItem *item, bool doTransformation, bool transformFull) return dest; } -NR::Maybe get_nearest_position_on_Path(SPItem *item, NR::Point p) +NR::Maybe get_nearest_position_on_Path(Path *path, NR::Point p) { - //Create and initialize a livarot Path - Path *path = Path_for_item(item, true, true); - if (path == NULL) { - return NR::Nothing(); - } - path->ConvertWithBackData(0.01); - //get nearest position on path Path::cut_position pos = path->PointToCurvilignPosition(p); - delete path; return pos; } -NR::Point get_point_on_Path(SPItem *item, int piece, double t) +NR::Point get_point_on_Path(Path *path, int piece, double t) { - //Create and initialize a livarot Path - Path *path = Path_for_item(item, true, true); - path->ConvertWithBackData(0.01); - - //get nearest position on path NR::Point p; path->PointAt(piece, t, p); - delete path; return p; } diff --git a/src/splivarot.h b/src/splivarot.h index ae83d22bb..4e73eac9f 100644 --- a/src/splivarot.h +++ b/src/splivarot.h @@ -41,8 +41,9 @@ void sp_selected_path_outline (); // simplifies a path (removes small segments and the like) void sp_selected_path_simplify (); -NR::Maybe get_nearest_position_on_Path(SPItem *item, NR::Point p); -NR::Point get_point_on_Path(SPItem *item, int piece, double t); +Path *Path_for_item(SPItem *item, bool doTransformation, bool transformFull = true); +NR::Maybe get_nearest_position_on_Path(Path *path, NR::Point p); +NR::Point get_point_on_Path(Path *path, int piece, double t); #endif