Code

Fix snapping regression introduced by rev. #9118
[inkscape.git] / src / display / guideline.h
index a9bfc809bf96c1432dba5dd678a2b8aaceda80e7..a6ce57113815dc0a2020aaa7440ccd263aa24de0 100644 (file)
 #define SP_GUIDELINE(o) (GTK_CHECK_CAST((o), SP_TYPE_GUIDELINE, SPGuideLine))
 #define SP_IS_GUIDELINE(o) (GTK_CHECK_TYPE((o), SP_TYPE_GUIDELINE))
 
+class SPCtrlPoint;
+
 struct SPGuideLine {
     SPCanvasItem item;
+    SPCtrlPoint *origin; // unlike 'item', this is only held locally
 
     guint32 rgba;
 
-    int position;
-    Geom::Point normal;
+    Geom::Point normal_to_line;
+    Geom::Point point_on_line;
+    double angle;
 
     unsigned int sensitive : 1;
+
+    inline bool is_horizontal() const { return (normal_to_line[Geom::X] == 0.); };
+    inline bool is_vertical() const { return (normal_to_line[Geom::Y] == 0.); };
 };
 
 struct SPGuideLineClass {
@@ -38,11 +45,13 @@ struct SPGuideLineClass {
 
 GType sp_guideline_get_type();
 
-SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, double position, Geom::Point normal);
+SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, Geom::Point point_on_line, Geom::Point normal);
 
-void sp_guideline_set_position(SPGuideLine *gl, double position);
+void sp_guideline_set_position(SPGuideLine *gl, Geom::Point point_on_line);
+void sp_guideline_set_normal(SPGuideLine *gl, Geom::Point normal_to_line);
 void sp_guideline_set_color(SPGuideLine *gl, unsigned int rgba);
 void sp_guideline_set_sensitive(SPGuideLine *gl, int sensitive);
+void sp_guideline_delete(SPGuideLine *gl);
 
 #endif