From 1d8f1753cd8cab38d19fcc26a4ad70ba2e794ac8 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 9 Apr 2013 22:12:07 +0200 Subject: Added constructors to EventContext tree / some missing virtual pads. (bzr r11608.1.90) --- src/dropper-context.cpp | 55 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 11 deletions(-) (limited to 'src/dropper-context.cpp') diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index 05d22017e..fefa1ccb6 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -88,15 +88,24 @@ sp_dropper_context_class_init(SPDropperContextClass *klass) parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass)); - ec_class->setup = sp_dropper_context_setup; - ec_class->finish = sp_dropper_context_finish; - ec_class->root_handler = sp_dropper_context_root_handler; +// ec_class->setup = sp_dropper_context_setup; +// ec_class->finish = sp_dropper_context_finish; +// ec_class->root_handler = sp_dropper_context_root_handler; g_type_class_add_private(object_class, sizeof(SPDropperContext)); } -static void sp_dropper_context_init(SPDropperContext *dc) -{ +CDropperContext::CDropperContext(SPDropperContext* droppercontext) : CEventContext(droppercontext) { + this->spdroppercontext = droppercontext; +} + +SPDropperContext::SPDropperContext() : SPEventContext() { + SPDropperContext* dc = this; + + dc->cdroppercontext = new CDropperContext(dc); + delete dc->ceventcontext; + dc->ceventcontext = dc->cdroppercontext; + SPEventContext *event_context = SP_EVENT_CONTEXT(dc); event_context->cursor_shape = cursor_dropper_f_xpm; event_context->hot_x = 7; @@ -104,18 +113,29 @@ static void sp_dropper_context_init(SPDropperContext *dc) cursor_dropper_fill = sp_cursor_new_from_xpm(cursor_dropper_f_xpm , 7, 7); cursor_dropper_stroke = sp_cursor_new_from_xpm(cursor_dropper_s_xpm , 7, 7); +} +static void sp_dropper_context_init(SPDropperContext *dc) +{ + new (dc) SPDropperContext(); } static void sp_dropper_context_setup(SPEventContext *ec) { + ec->ceventcontext->setup(); +} + +void CDropperContext::setup() { + SPEventContext* ec = this->speventcontext; + SPDropperContext *dc = SP_DROPPER_CONTEXT(ec); SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc); - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) { - (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); - } +// if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) { +// (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); +// } + CEventContext::setup(); /* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */ SPCurve *c = new SPCurve(); @@ -145,6 +165,12 @@ sp_dropper_context_setup(SPEventContext *ec) static void sp_dropper_context_finish(SPEventContext *ec) { + ec->ceventcontext->finish(); +} + +void CDropperContext::finish() { + SPEventContext* ec = this->speventcontext; + SPDropperContext *dc = SP_DROPPER_CONTEXT(ec); SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc); @@ -208,6 +234,12 @@ static gint sp_dropper_context_root_handler(SPEventContext *event_context, GdkEvent *event) { + return event_context->ceventcontext->root_handler(event); +} + +gint CDropperContext::root_handler(GdkEvent* event) { + SPEventContext* event_context = this->speventcontext; + SPDropperContext *dc = SP_DROPPER_CONTEXT(event_context); SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc); SPDesktop *desktop = event_context->desktop; @@ -427,9 +459,10 @@ sp_dropper_context_root_handler(SPEventContext *event_context, } if (!ret) { - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) { - ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event); - } +// if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) { +// ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event); +// } + ret = CEventContext::root_handler(event); } return ret; -- cgit v1.2.3 From fbb85064cfaaf03cc09bacedb16a8561f61f2b3d Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 13 Apr 2013 00:37:18 +0200 Subject: Added prefPaths to contexts; modified SPFactory (bzr r11608.1.94) --- src/dropper-context.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/dropper-context.cpp') diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index fefa1ccb6..c74950139 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -78,6 +78,8 @@ static SPEventContextClass *parent_class; static GdkCursor *cursor_dropper_fill = NULL; static GdkCursor *cursor_dropper_stroke = NULL; +const std::string SPDropperContext::prefsPath = "/tools/dropper"; + G_DEFINE_TYPE(SPDropperContext, sp_dropper_context, SP_TYPE_EVENT_CONTEXT); static void -- cgit v1.2.3 From fbdc8b84ff670c684dafc7d7d403ed01e7077e70 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 13 Apr 2013 18:13:17 +0200 Subject: Replaced casting macros for EventContext tree; added contructors. (bzr r11608.1.96) --- src/dropper-context.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/dropper-context.cpp') diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index c74950139..dbc10f6c7 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -78,6 +78,20 @@ static SPEventContextClass *parent_class; static GdkCursor *cursor_dropper_fill = NULL; static GdkCursor *cursor_dropper_stroke = NULL; +#include "sp-factory.h" + +namespace { + SPEventContext* createDropperContext() { + return new SPDropperContext(); + } + + bool dropperContextRegistered = ToolFactory::instance().registerObject("/tools/dropper", createDropperContext); +} + +const std::string& CDropperContext::getPrefsPath() { + return SPDropperContext::prefsPath; +} + const std::string SPDropperContext::prefsPath = "/tools/dropper"; G_DEFINE_TYPE(SPDropperContext, sp_dropper_context, SP_TYPE_EVENT_CONTEXT); @@ -107,6 +121,7 @@ SPDropperContext::SPDropperContext() : SPEventContext() { dc->cdroppercontext = new CDropperContext(dc); delete dc->ceventcontext; dc->ceventcontext = dc->cdroppercontext; + types.insert(typeid(SPDropperContext)); SPEventContext *event_context = SP_EVENT_CONTEXT(dc); event_context->cursor_shape = cursor_dropper_f_xpm; -- cgit v1.2.3 From 65ba6ad9a82f8f47974eb10665478fd783692bb5 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 20 Apr 2013 23:19:46 +0200 Subject: Merging of EventContext classes complete. (bzr r11608.1.98) --- src/dropper-context.cpp | 125 +++++++++++++++--------------------------------- 1 file changed, 39 insertions(+), 86 deletions(-) (limited to 'src/dropper-context.cpp') diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index dbc10f6c7..4c55400bb 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -48,32 +48,22 @@ using Inkscape::DocumentUndo; -typedef struct -{ - double R; - double G; - double B; - double alpha; - - unsigned int dragging : 1; - - SPCanvasItem *grabbed; - SPCanvasItem *area; - Geom::Point centre; -} SPDropperContextPrivate; - -#define SP_DROPPER_CONTEXT_GET_PRIVATE(dc) \ - G_TYPE_INSTANCE_GET_PRIVATE(dc, SP_TYPE_DROPPER_CONTEXT, SPDropperContextPrivate) - -static void sp_dropper_context_class_init(SPDropperContextClass *klass); -static void sp_dropper_context_init(SPDropperContext *dc); - -static void sp_dropper_context_setup(SPEventContext *ec); -static void sp_dropper_context_finish(SPEventContext *ec); - -static gint sp_dropper_context_root_handler(SPEventContext *ec, GdkEvent * event); - -static SPEventContextClass *parent_class; +//typedef struct +//{ +// double R; +// double G; +// double B; +// double alpha; +// +// unsigned int dragging : 1; +// +// SPCanvasItem *grabbed; +// SPCanvasItem *area; +// Geom::Point centre; +//} SPDropperContextPrivate; +// +//#define SP_DROPPER_CONTEXT_GET_PRIVATE(dc) \ +// G_TYPE_INSTANCE_GET_PRIVATE(dc, SP_TYPE_DROPPER_CONTEXT, SPDropperContextPrivate) static GdkCursor *cursor_dropper_fill = NULL; static GdkCursor *cursor_dropper_stroke = NULL; @@ -88,40 +78,24 @@ namespace { bool dropperContextRegistered = ToolFactory::instance().registerObject("/tools/dropper", createDropperContext); } -const std::string& CDropperContext::getPrefsPath() { +const std::string& SPDropperContext::getPrefsPath() { return SPDropperContext::prefsPath; } const std::string SPDropperContext::prefsPath = "/tools/dropper"; -G_DEFINE_TYPE(SPDropperContext, sp_dropper_context, SP_TYPE_EVENT_CONTEXT); - -static void -sp_dropper_context_class_init(SPDropperContextClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - SPEventContextClass *ec_class = SP_EVENT_CONTEXT_CLASS(klass); - - parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass)); - -// ec_class->setup = sp_dropper_context_setup; -// ec_class->finish = sp_dropper_context_finish; -// ec_class->root_handler = sp_dropper_context_root_handler; - - g_type_class_add_private(object_class, sizeof(SPDropperContext)); -} - -CDropperContext::CDropperContext(SPDropperContext* droppercontext) : CEventContext(droppercontext) { - this->spdroppercontext = droppercontext; -} - SPDropperContext::SPDropperContext() : SPEventContext() { SPDropperContext* dc = this; - dc->cdroppercontext = new CDropperContext(dc); - delete dc->ceventcontext; - dc->ceventcontext = dc->cdroppercontext; - types.insert(typeid(SPDropperContext)); + dc->R = 0; + dc->G = 0; + dc->B = 0; + dc->alpha = 0; + dc->dragging = 0; + + dc->grabbed = 0; + dc->area = 0; + dc->centre = Geom::Point(0, 0); SPEventContext *event_context = SP_EVENT_CONTEXT(dc); event_context->cursor_shape = cursor_dropper_f_xpm; @@ -132,27 +106,19 @@ SPDropperContext::SPDropperContext() : SPEventContext() { cursor_dropper_stroke = sp_cursor_new_from_xpm(cursor_dropper_s_xpm , 7, 7); } -static void sp_dropper_context_init(SPDropperContext *dc) -{ - new (dc) SPDropperContext(); -} - -static void -sp_dropper_context_setup(SPEventContext *ec) -{ - ec->ceventcontext->setup(); +SPDropperContext::~SPDropperContext() { } -void CDropperContext::setup() { - SPEventContext* ec = this->speventcontext; +void SPDropperContext::setup() { + SPEventContext* ec = this; SPDropperContext *dc = SP_DROPPER_CONTEXT(ec); - SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc); + SPDropperContext *priv = (dc); // if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) { // (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); // } - CEventContext::setup(); + SPEventContext::setup(); /* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */ SPCurve *c = new SPCurve(); @@ -179,17 +145,11 @@ void CDropperContext::setup() { } } -static void -sp_dropper_context_finish(SPEventContext *ec) -{ - ec->ceventcontext->finish(); -} - -void CDropperContext::finish() { - SPEventContext* ec = this->speventcontext; +void SPDropperContext::finish() { + SPEventContext* ec = this; SPDropperContext *dc = SP_DROPPER_CONTEXT(ec); - SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc); + SPDropperContext *priv = (dc); ec->enableGrDrag(false); @@ -232,7 +192,7 @@ guint32 sp_dropper_context_get_color(SPEventContext *ec) { SPDropperContext *dc = SP_DROPPER_CONTEXT(ec); - SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc); + SPDropperContext *priv = (dc); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); int pick = prefs->getInt("/tools/dropper/pick", @@ -247,18 +207,11 @@ sp_dropper_context_get_color(SPEventContext *ec) : 1.0); } -static gint -sp_dropper_context_root_handler(SPEventContext *event_context, - GdkEvent *event) -{ - return event_context->ceventcontext->root_handler(event); -} - -gint CDropperContext::root_handler(GdkEvent* event) { - SPEventContext* event_context = this->speventcontext; +gint SPDropperContext::root_handler(GdkEvent* event) { + SPEventContext* event_context = this; SPDropperContext *dc = SP_DROPPER_CONTEXT(event_context); - SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc); + SPDropperContext *priv = (dc); SPDesktop *desktop = event_context->desktop; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -479,7 +432,7 @@ gint CDropperContext::root_handler(GdkEvent* event) { // if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) { // ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event); // } - ret = CEventContext::root_handler(event); + ret = SPEventContext::root_handler(event); } return ret; -- cgit v1.2.3 From 5512f857e2f33f1aa40124dc82b353e5f2e5a0b0 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 20 Apr 2013 23:58:53 +0200 Subject: Moved factories to different files. (bzr r11608.1.100) --- src/dropper-context.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/dropper-context.cpp') diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index 4c55400bb..4af1bba2d 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -68,7 +68,7 @@ using Inkscape::DocumentUndo; static GdkCursor *cursor_dropper_fill = NULL; static GdkCursor *cursor_dropper_stroke = NULL; -#include "sp-factory.h" +#include "tool-factory.h" namespace { SPEventContext* createDropperContext() { -- cgit v1.2.3 From 389b871cdea29ace85567863c439eb0537a36f54 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sun, 21 Apr 2013 20:45:27 +0200 Subject: Cleaned up a bit. (bzr r11608.1.102) --- src/dropper-context.cpp | 184 ++++++++++++++++++------------------------------ 1 file changed, 70 insertions(+), 114 deletions(-) (limited to 'src/dropper-context.cpp') diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index 4af1bba2d..d88281982 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -48,23 +48,6 @@ using Inkscape::DocumentUndo; -//typedef struct -//{ -// double R; -// double G; -// double B; -// double alpha; -// -// unsigned int dragging : 1; -// -// SPCanvasItem *grabbed; -// SPCanvasItem *area; -// Geom::Point centre; -//} SPDropperContextPrivate; -// -//#define SP_DROPPER_CONTEXT_GET_PRIVATE(dc) \ -// G_TYPE_INSTANCE_GET_PRIVATE(dc, SP_TYPE_DROPPER_CONTEXT, SPDropperContextPrivate) - static GdkCursor *cursor_dropper_fill = NULL; static GdkCursor *cursor_dropper_stroke = NULL; @@ -85,22 +68,19 @@ const std::string& SPDropperContext::getPrefsPath() { const std::string SPDropperContext::prefsPath = "/tools/dropper"; SPDropperContext::SPDropperContext() : SPEventContext() { - SPDropperContext* dc = this; - - dc->R = 0; - dc->G = 0; - dc->B = 0; - dc->alpha = 0; - dc->dragging = 0; + this->R = 0; + this->G = 0; + this->B = 0; + this->alpha = 0; + this->dragging = false; - dc->grabbed = 0; - dc->area = 0; - dc->centre = Geom::Point(0, 0); + this->grabbed = 0; + this->area = 0; + this->centre = Geom::Point(0, 0); - SPEventContext *event_context = SP_EVENT_CONTEXT(dc); - event_context->cursor_shape = cursor_dropper_f_xpm; - event_context->hot_x = 7; - event_context->hot_y = 7; + this->cursor_shape = cursor_dropper_f_xpm; + this->hot_x = 7; + this->hot_y = 7; cursor_dropper_fill = sp_cursor_new_from_xpm(cursor_dropper_f_xpm , 7, 7); cursor_dropper_stroke = sp_cursor_new_from_xpm(cursor_dropper_s_xpm , 7, 7); @@ -110,14 +90,6 @@ SPDropperContext::~SPDropperContext() { } void SPDropperContext::setup() { - SPEventContext* ec = this; - - SPDropperContext *dc = SP_DROPPER_CONTEXT(ec); - SPDropperContext *priv = (dc); - -// if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) { -// (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); -// } SPEventContext::setup(); /* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */ @@ -129,38 +101,35 @@ void SPDropperContext::setup() { c->curveto(1, -C1, C1, -1, 0, -1 ); c->curveto(-C1, -1, -1, -C1, -1, 0 ); c->closepath(); - priv->area = sp_canvas_bpath_new(sp_desktop_controls(ec->desktop), c); + this->area = sp_canvas_bpath_new(sp_desktop_controls(this->desktop), c); c->unref(); - sp_canvas_bpath_set_fill(SP_CANVAS_BPATH(priv->area), 0x00000000,(SPWindRule)0); - sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(priv->area), 0x0000007f, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); - sp_canvas_item_hide(priv->area); + + sp_canvas_bpath_set_fill(SP_CANVAS_BPATH(this->area), 0x00000000,(SPWindRule)0); + sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(this->area), 0x0000007f, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); + sp_canvas_item_hide(this->area); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + if (prefs->getBool("/tools/dropper/selcue")) { - ec->enableSelectionCue(); + this->enableSelectionCue(); } if (prefs->getBool("/tools/dropper/gradientdrag")) { - ec->enableGrDrag(); + this->enableGrDrag(); } } void SPDropperContext::finish() { - SPEventContext* ec = this; - - SPDropperContext *dc = SP_DROPPER_CONTEXT(ec); - SPDropperContext *priv = (dc); - - ec->enableGrDrag(false); + this->enableGrDrag(false); - if (priv->grabbed) { - sp_canvas_item_ungrab(priv->grabbed, GDK_CURRENT_TIME); - priv->grabbed = NULL; + if (this->grabbed) { + sp_canvas_item_ungrab(this->grabbed, GDK_CURRENT_TIME); + this->grabbed = NULL; } - if (priv->area) { - sp_canvas_item_destroy(priv->area); - priv->area = NULL; + if (this->area) { + sp_canvas_item_destroy(this->area); + this->area = NULL; } if (cursor_dropper_fill) { @@ -171,6 +140,7 @@ void SPDropperContext::finish() { #endif cursor_dropper_fill = NULL; } + if (cursor_dropper_stroke) { #if GTK_CHECK_VERSION(3,0,0) g_object_unref(cursor_dropper_stroke); @@ -179,41 +149,25 @@ void SPDropperContext::finish() { #endif cursor_dropper_fill = NULL; } - - //Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - //prefs->setBool("/tools/dropper/onetimepick", false); - } /** * Returns the current dropper context color. */ -guint32 -sp_dropper_context_get_color(SPEventContext *ec) -{ - SPDropperContext *dc = SP_DROPPER_CONTEXT(ec); - SPDropperContext *priv = (dc); +guint32 SPDropperContext::get_color() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - int pick = prefs->getInt("/tools/dropper/pick", - SP_DROPPER_PICK_VISIBLE); - + int pick = prefs->getInt("/tools/dropper/pick", SP_DROPPER_PICK_VISIBLE); bool setalpha = prefs->getBool("/tools/dropper/setalpha", true); - return SP_RGBA32_F_COMPOSE(priv->R, - priv->G, - priv->B, - (pick == SP_DROPPER_PICK_ACTUAL && setalpha) ? priv->alpha - : 1.0); + return SP_RGBA32_F_COMPOSE(this->R, + this->G, + this->B, + (pick == SP_DROPPER_PICK_ACTUAL && setalpha) ? this->alpha : 1.0); } gint SPDropperContext::root_handler(GdkEvent* event) { - SPEventContext* event_context = this; - - SPDropperContext *dc = SP_DROPPER_CONTEXT(event_context); - SPDropperContext *priv = (dc); - SPDesktop *desktop = event_context->desktop; - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); int ret = FALSE; @@ -222,16 +176,16 @@ gint SPDropperContext::root_handler(GdkEvent* event) { switch (event->type) { case GDK_BUTTON_PRESS: - if (event->button.button == 1 && !event_context->space_panning) { - priv->centre = Geom::Point(event->button.x, event->button.y); - priv->dragging = TRUE; + if (event->button.button == 1 && !this->space_panning) { + this->centre = Geom::Point(event->button.x, event->button.y); + this->dragging = true; ret = TRUE; } sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK, NULL, event->button.time); - priv->grabbed = SP_CANVAS_ITEM(desktop->acetate); + this->grabbed = SP_CANVAS_ITEM(desktop->acetate); break; case GDK_MOTION_NOTIFY: @@ -239,7 +193,7 @@ gint SPDropperContext::root_handler(GdkEvent* event) { // pass on middle and right drag ret = FALSE; break; - } else if (!event_context->space_panning) { + } else if (!this->space_panning) { // otherwise, constantly calculate color no matter is any button pressed or not // If one time pick with stroke set the pixmap @@ -252,25 +206,25 @@ gint SPDropperContext::root_handler(GdkEvent* event) { double rw = 0.0; double R(0), G(0), B(0), A(0); - if (priv->dragging) { + if (this->dragging) { // calculate average // radius - rw = std::min(Geom::L2(Geom::Point(event->button.x, event->button.y) - priv->centre), 400.0); + rw = std::min(Geom::L2(Geom::Point(event->button.x, event->button.y) - this->centre), 400.0); if (rw == 0) { // happens sometimes, little idea why... break; } - Geom::Point const cd = desktop->w2d(priv->centre); + Geom::Point const cd = desktop->w2d(this->centre); Geom::Affine const w2dt = desktop->w2d(); const double scale = rw * w2dt.descrim(); Geom::Affine const sm( Geom::Scale(scale, scale) * Geom::Translate(cd) ); - sp_canvas_item_affine_absolute(priv->area, sm); - sp_canvas_item_show(priv->area); + sp_canvas_item_affine_absolute(this->area, sm); + sp_canvas_item_show(this->area); /* Get buffer */ - Geom::Rect r(priv->centre, priv->centre); + Geom::Rect r(this->centre, this->centre); r.expandBy(rw); if (!r.hasZeroArea()) { Geom::IntRect area = r.roundOutwards(); @@ -309,13 +263,13 @@ gint SPDropperContext::root_handler(GdkEvent* event) { } // remember color - priv->R = R; - priv->G = G; - priv->B = B; - priv->alpha = A; + this->R = R; + this->G = G; + this->B = B; + this->alpha = A; // status message - double alpha_to_set = setalpha? priv->alpha : 1.0; + double alpha_to_set = setalpha? this->alpha : 1.0; guint32 c32 = SP_RGBA32_F_COMPOSE(R, G, B, alpha_to_set); gchar c[64]; @@ -325,15 +279,14 @@ gint SPDropperContext::root_handler(GdkEvent* event) { // locale-sensitive printf is OK, since this goes to the UI, not into SVG gchar *alpha = g_strdup_printf(_(" alpha %.3g"), alpha_to_set); // where the color is picked, to show in the statusbar - gchar *where = priv->dragging ? g_strdup_printf(_(", averaged with radius %d"), (int) rw) : g_strdup_printf(_(" under cursor")); + gchar *where = this->dragging ? g_strdup_printf(_(", averaged with radius %d"), (int) rw) : g_strdup_printf(_(" under cursor")); // message, to show in the statusbar - const gchar *message = priv->dragging ? _("Release mouse to set color.") : _("Click to set fill, Shift+click to set stroke; drag to average color in area; with Alt to pick inverse color; Ctrl+C to copy the color under mouse to clipboard"); - event_context->defaultMessageContext()->setF( + const gchar *message = this->dragging ? _("Release mouse to set color.") : _("Click to set fill, Shift+click to set stroke; drag to average color in area; with Alt to pick inverse color; Ctrl+C to copy the color under mouse to clipboard"); + + this->defaultMessageContext()->setF( Inkscape::NORMAL_MESSAGE, "%s%s%s. %s", c, - (pick == SP_DROPPER_PICK_VISIBLE)? "" : alpha, - where, message - ); + (pick == SP_DROPPER_PICK_VISIBLE) ? "" : alpha, where, message); g_free(where); g_free(alpha); @@ -341,20 +294,21 @@ gint SPDropperContext::root_handler(GdkEvent* event) { ret = TRUE; } break; + case GDK_BUTTON_RELEASE: - if (event->button.button == 1 && !event_context->space_panning) - { - sp_canvas_item_hide(priv->area); - priv->dragging = FALSE; + if (event->button.button == 1 && !this->space_panning) { + sp_canvas_item_hide(this->area); + this->dragging = false; - if (priv->grabbed) { - sp_canvas_item_ungrab(priv->grabbed, event->button.time); - priv->grabbed = NULL; + if (this->grabbed) { + sp_canvas_item_ungrab(this->grabbed, event->button.time); + this->grabbed = NULL; } - double alpha_to_set = setalpha? priv->alpha : 1.0; + double alpha_to_set = setalpha? this->alpha : 1.0; bool fill = !(event->button.state & GDK_SHIFT_MASK); // Stroke if Shift key held + if (prefs->getBool("/tools/dropper/onetimepick", false)) { // "One time" pick from Fill/Stroke dialog stroke page, always apply fill or stroke (ignore key) fill = (prefs->getInt("/dialogs/fillstroke/page", 0) == 0) ? true : false; @@ -363,7 +317,7 @@ gint SPDropperContext::root_handler(GdkEvent* event) { // do the actual color setting sp_desktop_set_color(desktop, (event->button.state & GDK_MOD1_MASK)? - ColorRGBA(1 - priv->R, 1 - priv->G, 1 - priv->B, alpha_to_set) : ColorRGBA(priv->R, priv->G, priv->B, alpha_to_set), + ColorRGBA(1 - this->R, 1 - this->G, 1 - this->B, alpha_to_set) : ColorRGBA(this->R, this->G, this->B, alpha_to_set), false, fill); // REJON: set aux. toolbar input to hex color! @@ -386,6 +340,7 @@ gint SPDropperContext::root_handler(GdkEvent* event) { ret = TRUE; } break; + case GDK_KEY_PRESS: switch (get_group0_keyval(&event->key)) { case GDK_KEY_Up: @@ -397,6 +352,7 @@ gint SPDropperContext::root_handler(GdkEvent* event) { ret = TRUE; } break; + case GDK_KEY_Escape: sp_desktop_selection(desktop)->clear(); case GDK_KEY_Shift_L: @@ -411,6 +367,7 @@ gint SPDropperContext::root_handler(GdkEvent* event) { break; } break; + case GDK_KEY_RELEASE: switch (get_group0_keyval(&event->key)) { case GDK_KEY_Shift_L: @@ -420,18 +377,17 @@ gint SPDropperContext::root_handler(GdkEvent* event) { gdk_window_set_cursor(window, cursor_dropper_fill); } break; + default: break; } break; + default: break; } if (!ret) { -// if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) { -// ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event); -// } ret = SPEventContext::root_handler(event); } -- cgit v1.2.3 From b2dd3583e7372d23d18bbc6e861f4f645ec3dc37 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 30 Jul 2013 23:17:21 +0200 Subject: Further refactoring of EventContexts. (bzr r11608.1.109) --- src/dropper-context.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/dropper-context.cpp') diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index 1f10dffa7..7dfe203ba 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -166,7 +166,7 @@ guint32 SPDropperContext::get_color() { (pick == SP_DROPPER_PICK_ACTUAL && setalpha) ? this->alpha : 1.0); } -gint SPDropperContext::root_handler(GdkEvent* event) { +bool SPDropperContext::root_handler(GdkEvent* event) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); int ret = FALSE; -- cgit v1.2.3