diff options
| author | MenTaLguY <mental@rydia.net> | 2006-01-16 02:36:01 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2006-01-16 02:36:01 +0000 |
| commit | 179fa413b047bede6e32109e2ce82437c5fb8d34 (patch) | |
| tree | a5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/dyna-draw-context.h | |
| download | inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip | |
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'src/dyna-draw-context.h')
| -rw-r--r-- | src/dyna-draw-context.h | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/src/dyna-draw-context.h b/src/dyna-draw-context.h new file mode 100644 index 000000000..e2f2c1e59 --- /dev/null +++ b/src/dyna-draw-context.h @@ -0,0 +1,116 @@ +#ifndef __SP_DYNA_DRAW_CONTEXT_H__ +#define __SP_DYNA_DRAW_CONTEXT_H__ + +/* + * Handwriting-like drawing mode + * + * Authors: + * Mitsuru Oka <oka326@parkcity.ne.jp> + * Lauris Kaplinski <lauris@kaplinski.com> + * + * The original dynadraw code: + * Paul Haeberli <paul@sgi.com> + * + * Copyright (C) 1998 The Free Software Foundation + * Copyright (C) 1999-2002 authors + * Copyright (C) 2001-2002 Ximian, Inc. + * + * 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> + +#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)) +#define SP_DYNA_DRAW_CONTEXT_CLASS(k) (GTK_CHECK_CLASS_CAST((k), SP_TYPE_DYNA_DRAW_CONTEXT, SPDynaDrawContextClass)) +#define SP_IS_DYNA_DRAW_CONTEXT(o) (GTK_CHECK_TYPE((o), SP_TYPE_DYNA_DRAW_CONTEXT)) +#define SP_IS_DYNA_DRAW_CONTEXT_CLASS(k) (GTK_CHECK_CLASS_TYPE((k), SP_TYPE_DYNA_DRAW_CONTEXT)) + +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 + +#define DDC_MIN_TILT -1.0 +#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 SPDynaDrawContextClass +{ + SPEventContextClass parent_class; +}; + +GtkType sp_dyna_draw_context_get_type(void); + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : |
