Code

Split SPCanvasItem and SPCanvasGroup to individual .h files. Removed forward header.
[inkscape.git] / src / sp-conn-end-pair.h
index 9b9e181db9b3dfc359bc6d0e81643945c1c059fc..fa585d618a430bcfce900bc1e48a1fb909b02565 100644 (file)
 
 
 class SPConnEnd;
+struct SPCurve;
+
 namespace Inkscape {
 namespace XML {
 class Node;
 }
 }
 
+extern void recreateCurve(SPCurve *curve, Avoid::ConnRef *connRef, gdouble curvature);
 
 class SPConnEndPair {
 public:
@@ -38,19 +41,16 @@ public:
     void writeRepr(Inkscape::XML::Node *const repr) const;
     void getAttachedItems(SPItem *[2]) const;
     void getEndpoints(Geom::Point endPts[]) const;
-    void reroutePath(void);
+    gdouble getCurvature(void) const;
+    SPConnEnd** getConnEnds(void);
+    bool isOrthogonal(void) const;
+    friend void recreateCurve(SPCurve *curve, Avoid::ConnRef *connRef, gdouble curvature);
+    void tellLibavoidNewEndpoints(const bool processTransaction = false);
+    bool reroutePathFromLibavoid(void);
     void makePathInvalid(void);
     void update(void);
     bool isAutoRoutingConn(void);
     void rerouteFromManipulation(void);
-    void reroute(void);
-    sigc::connection connectInvalidPath(sigc::slot<void, SPPath *> slot);
-
-    // A signal emited by a call back from libavoid.  Used to let 
-    // connectors know when they need to reroute themselves.
-    sigc::signal<void, SPPath *> _invalid_path_signal;
-    // A sigc connection to listen for connector path invalidation.
-    sigc::connection _invalid_path_connection;
 
 private:
     SPConnEnd *_connEnd[2];
@@ -61,6 +61,7 @@ private:
     Avoid::ConnRef *_connRef;
 
     int _connType;
+    gdouble _connCurvature;
     
     // A sigc connection for transformed signal.
     sigc::connection _transformed_connection;
@@ -74,8 +75,9 @@ void sp_conn_end_pair_build(SPObject *object);
 
 // _connType options:
 enum {
-    SP_CONNECTOR_NOAVOID,    // Basic connector - a straight line.
-    SP_CONNECTOR_POLYLINE    // Object avoiding polyline.
+    SP_CONNECTOR_NOAVOID,     // Basic connector - a straight line.
+    SP_CONNECTOR_POLYLINE,    // Object avoiding polyline.
+    SP_CONNECTOR_ORTHOGONAL   // Object avoiding orthogonal polyline (only horizontal and verical segments).
 };