X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fnodepath.h;h=b330ff96415b9ca8a75f8b2f9e7e324e77ed24df;hb=8b9a820756fdf348239872236be2257f854e094a;hp=f426d414f68e1fba1c8bde40f866093a1e8dbdd0;hpb=72aa7310f3a87958233d5cb4bf1386ff999be0ac;p=inkscape.git diff --git a/src/nodepath.h b/src/nodepath.h index f426d414f..b330ff964 100644 --- a/src/nodepath.h +++ b/src/nodepath.h @@ -16,11 +16,13 @@ //#include "sp-path.h" //#include "desktop-handles.h" #include "libnr/nr-path-code.h" -#include "livarot/Path.h" #include - +#include #include +struct SPCanvasItem; +class SPCurve; +struct SPItem; class SPObject; class SPDesktop; class SPPath; @@ -28,11 +30,16 @@ class SPKnot; class LivePathEffectObject; namespace Inkscape { -namespace XML { -class Node; -} + namespace XML { + class Node; + } + + namespace LivePathEffect { + class Effect; + } } +typedef std::map > HelperPathList; /** * Radial objects are represented by an angle and a distance from @@ -82,19 +89,22 @@ namespace Inkscape { namespace NodePath { /** - * This is a node on a subpath + * The entire nodepath, containing multiple subpaths */ class Path; /** - * This is a subdivision of a NodePath + * A subpath is a continuous chain of linked nodes */ class SubPath; +/** + * One side of a node, i.e. prev or next + */ class NodeSide; /** - * This is a node (point) along a subpath + * A node on a subpath */ class Node; @@ -231,9 +241,6 @@ class Path { guint numSelected() {return (selected? g_list_length(selected) : 0);} NR::Point& singleSelectedCoords() {return (((Node *) selected->data)->pos);} - /// livarot library is used for "point on path" and "nearest position on path", so we need to maintain its path representation as well - ::Path *livarot_path; - /// draw a "sketch" of the path by using these variables SPCanvasItem *helper_path; SPCurve *curve; @@ -241,6 +248,9 @@ class Path { guint32 helperpath_rgba; gdouble helperpath_width; + // the helperpaths provided by all LPEs (and their paramaters) of the current item + HelperPathList* helper_path_vec; + /// true if we changed repr, to tell this change from an external one such as from undo, simplify, or another desktop unsigned int local_change; @@ -268,7 +278,6 @@ enum { // Do function documentation in nodepath.cpp Inkscape::NodePath::Path * sp_nodepath_new (SPDesktop * desktop, SPObject *object, bool show_handles, const char * repr_key = NULL, SPItem *item = NULL); void sp_nodepath_destroy (Inkscape::NodePath::Path * nodepath); -void sp_nodepath_ensure_livarot_path(Inkscape::NodePath::Path *np); void sp_nodepath_deselect (Inkscape::NodePath::Path *nodepath); void sp_nodepath_select_all (Inkscape::NodePath::Path *nodepath, bool invert); void sp_nodepath_select_all_from_subpath(Inkscape::NodePath::Path *nodepath, bool invert); @@ -302,18 +311,23 @@ void sp_node_selected_set_type (Inkscape::NodePath::Path *nodepath, Inkscape::No void sp_node_selected_set_line_type (Inkscape::NodePath::Path *nodepath, NRPathcode code); void sp_node_selected_move (Inkscape::NodePath::Path *nodepath, gdouble dx, gdouble dy); void sp_node_selected_move_screen (Inkscape::NodePath::Path *nodepath, gdouble dx, gdouble dy); -void sp_node_selected_move_absolute (Inkscape::NodePath::Path *nodepath, NR::Coord val, NR::Dim2 axis); -NR::Rect sp_node_selected_bbox (Inkscape::NodePath::Path *nodepath); -NR::Maybe sp_node_selected_common_coord (Inkscape::NodePath::Path *nodepath, NR::Dim2 axis); +void sp_node_selected_move_absolute (Inkscape::NodePath::Path *nodepath, Geom::Coord val, Geom::Dim2 axis); +Geom::Rect sp_node_selected_bbox (Inkscape::NodePath::Path *nodepath); +boost::optional sp_node_selected_common_coord (Inkscape::NodePath::Path *nodepath, Geom::Dim2 axis); void sp_nodepath_show_handles(Inkscape::NodePath::Path *nodepath, bool show); +//SPCanvasItem *sp_nodepath_generate_helperpath(SPDesktop *desktop, SPCurve *curve, const SPItem *item, guint32 color); +//SPCanvasItem *sp_nodepath_generate_helperpath(SPDesktop *desktop, SPPath *path); +SPCanvasItem *sp_nodepath_helperpath_from_path(SPDesktop *desktop, SPPath *path); void sp_nodepath_show_helperpath(Inkscape::NodePath::Path *nodepath, bool show); +void sp_nodepath_update_helperpaths(Inkscape::NodePath::Path *np); +void sp_nodepath_make_straight_path(Inkscape::NodePath::Path *np); void sp_nodepath_selected_nodes_rotate (Inkscape::NodePath::Path * nodepath, gdouble angle, int which, bool screen); void sp_nodepath_selected_nodes_scale (Inkscape::NodePath::Path * nodepath, gdouble grow, int which); void sp_nodepath_selected_nodes_scale_screen (Inkscape::NodePath::Path * nodepath, gdouble grow, int which); -void sp_nodepath_flip (Inkscape::NodePath::Path *nodepath, NR::Dim2 axis, NR::Maybe center); +void sp_nodepath_flip (Inkscape::NodePath::Path *nodepath, NR::Dim2 axis, boost::optional center); #endif