X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fdyna-draw-context.h;h=5b81c521ebaafaf3fdec1bc96b27bc7d3ec7f67d;hb=1c2557cd7259a8166f07b7982a44e040a44d4db1;hp=e2f2c1e5902016b7ff3ebc0b3783443f2633eb04;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git diff --git a/src/dyna-draw-context.h b/src/dyna-draw-context.h index e2f2c1e59..5b81c521e 100644 --- a/src/dyna-draw-context.h +++ b/src/dyna-draw-context.h @@ -32,7 +32,7 @@ class SPDynaDrawContext; class SPDynaDrawContextClass; -#define SAMPLING_SIZE 16 /* fixme: ?? */ +#define SAMPLING_SIZE 8 /* fixme: ?? */ #define DDC_MIN_PRESSURE 0.0 #define DDC_MAX_PRESSURE 1.0 @@ -46,27 +46,36 @@ struct SPDynaDrawContext { SPEventContext event_context; + /** accumulated shape which ultimately goes in svg:path */ SPCurve *accumulated; + + /** canvas items for "comitted" segments */ GSList *segments; - /* current shape and curves */ + + /** canvas item for red "leading" segment */ SPCanvasItem *currentshape; + /** shape of red "leading" segment */ SPCurve *currentcurve; + + /** left edge of the stroke; combined to get accumulated */ SPCurve *cal1; + /** right edge of the stroke; combined to get accumulated */ SPCurve *cal2; - /* temporary work area */ + + /** left edge points for this segment */ NR::Point point1[SAMPLING_SIZE]; + /** right edge points for this segment */ NR::Point point2[SAMPLING_SIZE]; + /** number of edge points for this segment */ gint npoints; /* repr */ Inkscape::XML::Node *repr; - /* time_id if use timeout */ - gint timer_id; - /* DynaDraw */ NR::Point cur; NR::Point vel; + double vel_max; NR::Point acc; NR::Point ang; NR::Point last; @@ -76,23 +85,44 @@ struct SPDynaDrawContext 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; + guint usepressure : 1; + guint usetilt : 1; double mass, drag; double angle; double width; - guint usepressure : 1; - guint usetilt : 1; double vel_thin; double flatness; + double tremor; + double cap_rounding; Inkscape::MessageContext *_message_context; bool is_drawing; + + /** uses absolute width independent of zoom */ + bool abs_width; + + /** newly created object remain selected */ + bool keep_selected; + + double hatch_spacing; + double hatch_spacing_step; + SPItem *hatch_item; + Path *hatch_livarot_path; + std::list hatch_nearest_past; + std::list 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; + + bool is_dilating; + bool has_dilated; + SPCanvasItem *dilate_area; }; struct SPDynaDrawContextClass