Code

Merge from trunk.
[inkscape.git] / src / shape-editor.h
index 4e78869570839aea6979a8967b092f9b05c51c37..f400244b326ac40b8ad73512af8181007c7caa27 100644 (file)
  */
 
 #include <forward.h>
-#include <libnr/nr-forward.h>
+#include <2geom/forward.h>
 
 namespace Inkscape { namespace NodePath { class Path; } }
 namespace Inkscape { namespace XML { class Node; } }
 
-#include "libnr/nr-path-code.h"
-#include "libnr/nr-point.h"
-#include <boost/optional.hpp>
-#include <vector>
-
 class KnotHolder;
 class SPDesktop;
 class SPNodeContext;
 class ShapeEditorsCollective;
+class LivePathEffectObject;
+
+#include "libnr/nr-path-code.h"
+#include <2geom/point.h>
+#include <boost/optional.hpp>
+#include <vector>
 
 enum SubType{
     SH_NODEPATH,
@@ -40,16 +41,10 @@ public:
     ~ShapeEditor();
 
     void set_item (SPItem *item, SubType type, bool keep_knotholder = false);
-    void set_item_lpe_path_parameter(SPItem *item, SPObject *lpeobject, const char * key);
-    void set_knotholder(KnotHolder * knot_holder);
-    void reset_item (SubType type, bool keep_knotholder = true);
     void unset_item (SubType type, bool keep_knotholder = false);
 
-    const SPItem *get_item (SubType type);
-
-    bool has_nodepath ();
-    bool has_knotholder ();
-    void update_knotholder ();
+    bool has_nodepath (); //((deprecated))
+    void update_knotholder (); //((deprecated))
 
     bool has_local_change (SubType type);
     void decrement_local_change (SubType type);
@@ -59,106 +54,24 @@ public:
 
     void nodepath_destroyed ();
 
-    void update_statusbar ();
-
-    bool is_over_stroke (NR::Point event_p, bool remember);
-
-    void add_node_near_point(); // uses the shapeeditor's remembered point, if any
-
-    void select_segment_near_point(bool toggle); // uses the shapeeditor's remembered point, if any
-
-    void cancel_hit ();
-
-    bool hits_curve ();
-
-    void curve_drag (gdouble eventx, gdouble eventy);
-
-    void finish_drag ();
-
-    void select_rect (NR::Rect  const &rect, bool add);
-
     bool has_selection ();
-    void deselect ();
-
-    Inkscape::NodePath::Path *get_nodepath() {return nodepath;} //((deprecated))
-    ShapeEditorsCollective *get_container() {return container;}
-
-    void add_node();
-
-    void delete_nodes();
-    void delete_nodes_preserving_shape();
-    void delete_segment();
-
-    void set_node_type(int type);
-
-    void break_at_nodes();
-    void join_nodes();
-    void join_segments();
 
-    void duplicate_nodes();
+    Inkscape::NodePath::Path *get_nodepath() {return NULL;} //((deprecated))
+    ShapeEditorsCollective *get_container() {return NULL;}
 
-    void set_type_of_segments(NRPathcode code);
+    // this one is only public because it's called from non-C++ repr changed callback
+    void shapeeditor_event_attr_changed(gchar const *name);
 
-    void move_nodes(gdouble dx, gdouble dy);
-    void move_nodes_screen(SPDesktop *desktop, gdouble dx, gdouble dy);
-
-    void rotate_nodes(gdouble angle, int which, bool screen);
-
-    void scale_nodes(gdouble const grow, int const which);
-    void scale_nodes_screen(gdouble const grow, int const which);
-
-    void select_all (bool invert);
-    void select_all_from_subpath (bool invert);
-    void select_next ();
-    void select_prev ();
-
-    void show_handles (bool show);
-    void show_helperpath (bool show);
-
-    void flip (NR::Dim2 axis, boost::optional<NR::Point> center = boost::optional<NR::Point>());
-
-    void distribute (NR::Dim2 axis);
-    void align (NR::Dim2 axis);
-
-    bool nodepath_edits_repr_key(gchar const *name);
+    bool knot_mouseover();
 
 private:
-    SPDesktop *desktop;
+    bool has_knotholder ();
+    void reset_item (SubType type, bool keep_knotholder = true);
+    const SPItem *get_item (SubType type);
 
-    Inkscape::NodePath::Path *nodepath;
+    SPDesktop *desktop;
     KnotHolder *knotholder;
-
-    ShapeEditorsCollective *container;
-
-    //Inkscape::XML::Node *lidtened_repr;
-
-    double grab_t;
-    int grab_node; // number of node grabbed by sp_node_context_is_over_stroke
-    bool hit;
-    NR::Point curvepoint_event; // int coords from event
-    NR::Point curvepoint_doc; // same, in doc coords
-
-    Inkscape::XML::Node *listener_attached_for;
-};
-
-
-/* As the next stage, this will be a collection of multiple ShapeEditors,
-with the same interface as the single ShapeEditor, passing the actions to all its
-contained ShapeEditors. Thus it should be easy to switch node context from 
-using a single ShapeEditor to using a ShapeEditorsCollective. */
-
-class ShapeEditorsCollective {
-public:
-
-    ShapeEditorsCollective(SPDesktop *desktop);
-    ~ShapeEditorsCollective();
-
-    void update_statusbar();
-
-private:
-    std::vector<ShapeEditor> editors;
-
-    SPNodeContext *nc; // who holds us
+    Inkscape::XML::Node *knotholder_listener_attached_for;
 };
 
 #endif