Code

Check that objects are of the right type before casting them.
[inkscape.git] / src / dyna-draw-context.h
index e2f2c1e5902016b7ff3ebc0b3783443f2633eb04..9232dd04b7cbca10b459c517378266586b920e43 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef __SP_DYNA_DRAW_CONTEXT_H__
-#define __SP_DYNA_DRAW_CONTEXT_H__
+#ifndef SP_DYNA_DRAW_CONTEXT_H_SEEN
+#define SP_DYNA_DRAW_CONTEXT_H_SEEN
 
 /*
  * Handwriting-like drawing mode
  * Released under GNU GPL, read the file 'COPYING' for more information
  */
 
-#include "display/curve.h"
-#include "event-context.h"
-#include <display/display-forward.h>
-#include <libnr/nr-point.h>
+#include "common-context.h"
 
 #define SP_TYPE_DYNA_DRAW_CONTEXT (sp_dyna_draw_context_get_type())
 #define SP_DYNA_DRAW_CONTEXT(o) (GTK_CHECK_CAST((o), SP_TYPE_DYNA_DRAW_CONTEXT, SPDynaDrawContext))
@@ -32,8 +29,6 @@
 class SPDynaDrawContext;
 class SPDynaDrawContextClass;
 
-#define SAMPLING_SIZE 16        /* fixme: ?? */
-
 #define DDC_MIN_PRESSURE      0.0
 #define DDC_MAX_PRESSURE      1.0
 #define DDC_DEFAULT_PRESSURE  1.0
@@ -42,67 +37,29 @@ class SPDynaDrawContextClass;
 #define DDC_MAX_TILT          1.0
 #define DDC_DEFAULT_TILT      0.0
 
-struct SPDynaDrawContext
-{
-    SPEventContext event_context;
-
-    SPCurve *accumulated;
-    GSList *segments;
-    /* current shape and curves */
-    SPCanvasItem *currentshape;
-    SPCurve *currentcurve;
-    SPCurve *cal1;
-    SPCurve *cal2;
-    /* temporary work area */
-    NR::Point point1[SAMPLING_SIZE];
-    NR::Point point2[SAMPLING_SIZE];
-    gint npoints;
-
-    /* repr */
-    Inkscape::XML::Node *repr;
-
-    /* time_id if use timeout */
-    gint timer_id;
-
-    /* DynaDraw */
-    NR::Point cur;
-    NR::Point vel;
-    NR::Point acc;
-    NR::Point ang;
-    NR::Point last;
-    NR::Point del;
-    /* extended input data */
-    gdouble pressure;
-    gdouble xtilt;
-    gdouble ytilt;
-    /* attributes */
-    /* fixme: shuld be merge dragging and dynahand ?? */
-    guint dragging : 1;           /* mouse state: mouse is dragging */
-    guint dynahand : 1;           /* mouse state: mouse is in draw */
-    guint use_timeout : 1;
-    guint use_calligraphic : 1;
-    double mass, drag;
-    double angle;
-    double width;
-    guint usepressure : 1;
-    guint usetilt : 1;
-
-    double vel_thin;
-    double flatness;
-
-    Inkscape::MessageContext *_message_context;
-
-    bool is_drawing;
+struct SPDynaDrawContext : public SPCommonContext {
+    /** newly created object remain selected */
+    bool keep_selected;
+
+    double hatch_spacing;
+    double hatch_spacing_step;
+    SPItem *hatch_item;
+    Path *hatch_livarot_path;
+    std::list<double> hatch_nearest_past;
+    std::list<double> hatch_pointer_past;
+    NR::Point hatch_last_nearest, hatch_last_pointer;
+    NR::Point hatch_vector_accumulated;
+    bool hatch_escaped;
+    SPCanvasItem *hatch_area;
+
+    bool trace_bg;
 };
 
-struct SPDynaDrawContextClass
-{
-    SPEventContextClass parent_class;
-};
+struct SPDynaDrawContextClass : public SPEventContextClass{};
 
-GtkType sp_dyna_draw_context_get_type(void);
+GType sp_dyna_draw_context_get_type(void);
 
-#endif
+#endif // SP_DYNA_DRAW_CONTEXT_H_SEEN
 
 /*
   Local Variables: