[gimp] Bug 776503 - brightness-contrast in split preview mode changes...



commit 9d4fad1f18968b67a0c78886aa4d4c2366a5ddbf
Author: Michael Natterer <mitch gimp org>
Date:   Mon Dec 26 17:50:11 2016 +0100

    Bug 776503 - brightness-contrast in split preview mode changes...
    
    ...parameters of the tool
    
    Take GimpFilterTool's split preview guide into account when starting a
    drag to change the tool's parameters.

 app/tools/gimpbrightnesscontrasttool.c |   76 ++++++++++++++++++++++----------
 app/tools/gimpbrightnesscontrasttool.h |    1 +
 2 files changed, 54 insertions(+), 23 deletions(-)
---
diff --git a/app/tools/gimpbrightnesscontrasttool.c b/app/tools/gimpbrightnesscontrasttool.c
index 8c50854..3b39a55 100644
--- a/app/tools/gimpbrightnesscontrasttool.c
+++ b/app/tools/gimpbrightnesscontrasttool.c
@@ -184,21 +184,33 @@ gimp_brightness_contrast_tool_button_press (GimpTool            *tool,
                                             GimpDisplay         *display)
 {
   GimpBrightnessContrastTool *bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (tool);
-  gdouble                     brightness;
-  gdouble                     contrast;
 
-  g_object_get (GIMP_FILTER_TOOL (tool)->config,
-                "brightness", &brightness,
-                "contrast",   &contrast,
-                NULL);
+  bc_tool->dragging = ! gimp_filter_tool_on_guide (GIMP_FILTER_TOOL (tool),
+                                                   coords, display);
 
-  bc_tool->x  = coords->x - contrast   * 127.0;
-  bc_tool->y  = coords->y + brightness * 127.0;
-  bc_tool->dx =   contrast   * 127.0;
-  bc_tool->dy = - brightness * 127.0;
+  if (! bc_tool->dragging)
+    {
+      GIMP_TOOL_CLASS (parent_class)->button_press (tool, coords, time, state,
+                                                    press_type, display);
+    }
+  else
+    {
+      gdouble brightness;
+      gdouble contrast;
+
+      g_object_get (GIMP_FILTER_TOOL (tool)->config,
+                    "brightness", &brightness,
+                    "contrast",   &contrast,
+                    NULL);
 
-  gimp_tool_control_activate (tool->control);
-  tool->display = display;
+      bc_tool->x  = coords->x - contrast   * 127.0;
+      bc_tool->y  = coords->y + brightness * 127.0;
+      bc_tool->dx =   contrast   * 127.0;
+      bc_tool->dy = - brightness * 127.0;
+
+      gimp_tool_control_activate (tool->control);
+      tool->display = display;
+    }
 }
 
 static void
@@ -211,13 +223,23 @@ gimp_brightness_contrast_tool_button_release (GimpTool              *tool,
 {
   GimpBrightnessContrastTool *bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (tool);
 
-  gimp_tool_control_halt (tool->control);
+  if (! bc_tool->dragging)
+    {
+      GIMP_TOOL_CLASS (parent_class)->button_release (tool, coords, time, state,
+                                                      release_type, display);
+    }
+  else
+    {
+      bc_tool->dragging = FALSE;
+
+      gimp_tool_control_halt (tool->control);
 
-  if (bc_tool->dx == 0 && bc_tool->dy == 0)
-    return;
+      if (bc_tool->dx == 0 && bc_tool->dy == 0)
+        return;
 
-  if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
-    gimp_config_reset (GIMP_CONFIG (GIMP_FILTER_TOOL (tool)->config));
+      if (release_type == GIMP_BUTTON_RELEASE_CANCEL)
+        gimp_config_reset (GIMP_CONFIG (GIMP_FILTER_TOOL (tool)->config));
+    }
 }
 
 static void
@@ -229,13 +251,21 @@ gimp_brightness_contrast_tool_motion (GimpTool         *tool,
 {
   GimpBrightnessContrastTool *bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (tool);
 
-  bc_tool->dx =   (coords->x - bc_tool->x);
-  bc_tool->dy = - (coords->y - bc_tool->y);
+  if (! bc_tool->dragging)
+    {
+      GIMP_TOOL_CLASS (parent_class)->motion (tool, coords, time, state,
+                                              display);
+    }
+  else
+    {
+      bc_tool->dx =   (coords->x - bc_tool->x);
+      bc_tool->dy = - (coords->y - bc_tool->y);
 
-  g_object_set (GIMP_FILTER_TOOL (tool)->config,
-                "brightness", CLAMP (bc_tool->dy, -127.0, 127.0) / 127.0,
-                "contrast",   CLAMP (bc_tool->dx, -127.0, 127.0) / 127.0,
-                NULL);
+      g_object_set (GIMP_FILTER_TOOL (tool)->config,
+                    "brightness", CLAMP (bc_tool->dy, -127.0, 127.0) / 127.0,
+                    "contrast",   CLAMP (bc_tool->dx, -127.0, 127.0) / 127.0,
+                    NULL);
+    }
 }
 
 
diff --git a/app/tools/gimpbrightnesscontrasttool.h b/app/tools/gimpbrightnesscontrasttool.h
index acabd6b..b97bf3b 100644
--- a/app/tools/gimpbrightnesscontrasttool.h
+++ b/app/tools/gimpbrightnesscontrasttool.h
@@ -37,6 +37,7 @@ struct _GimpBrightnessContrastTool
 {
   GimpFilterTool  parent_instance;
 
+  gboolean        dragging;
   gdouble         x, y;
   gdouble         dx, dy;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]