[gimp] app: actually use the device's pressure curve to map the pressure axis



commit 2a92f5757774a270297ffcc341532296b89eb516
Author: Michael Natterer <mitch gimp org>
Date:   Tue Feb 16 13:27:46 2010 +0100

    app: actually use the device's pressure curve to map the pressure axis
    
    unfortunately i have no way of testing this, so please test...

 app/widgets/gimpdeviceinfo-coords.c |   15 +++++++++------
 app/widgets/gimpdeviceinfo.c        |   18 ++++++++++++++++++
 app/widgets/gimpdeviceinfo.h        |    3 +++
 3 files changed, 30 insertions(+), 6 deletions(-)
---
diff --git a/app/widgets/gimpdeviceinfo-coords.c b/app/widgets/gimpdeviceinfo-coords.c
index 44f9846..230117c 100644
--- a/app/widgets/gimpdeviceinfo-coords.c
+++ b/app/widgets/gimpdeviceinfo-coords.c
@@ -51,8 +51,9 @@ gimp_device_info_get_event_coords (GimpDeviceInfo *info,
 
       if (gdk_event_get_axis (event, GDK_AXIS_PRESSURE, &coords->pressure))
         {
-          coords->pressure = CLAMP (coords->pressure, GIMP_COORDS_MIN_PRESSURE,
-                                    GIMP_COORDS_MAX_PRESSURE);
+          coords->pressure = gimp_device_info_map_axis (info,
+                                                        GDK_AXIS_PRESSURE,
+                                                        coords->pressure);
         }
 
       if (gdk_event_get_axis (event, GDK_AXIS_XTILT, &coords->xtilt))
@@ -102,8 +103,9 @@ gimp_device_info_get_device_coords (GimpDeviceInfo *info,
   if (gdk_device_get_axis (info->device,
                            axes, GDK_AXIS_PRESSURE, &coords->pressure))
     {
-      coords->pressure = CLAMP (coords->pressure, GIMP_COORDS_MIN_PRESSURE,
-                                GIMP_COORDS_MAX_PRESSURE);
+      coords->pressure = gimp_device_info_map_axis (info,
+                                                    GDK_AXIS_PRESSURE,
+                                                    coords->pressure);
     }
 
   if (gdk_device_get_axis (info->device,
@@ -145,8 +147,9 @@ gimp_device_info_get_time_coords (GimpDeviceInfo *info,
   if (gdk_device_get_axis (info->device,
                            event->axes, GDK_AXIS_PRESSURE, &coords->pressure))
     {
-      coords->pressure = CLAMP (coords->pressure, GIMP_COORDS_MIN_PRESSURE,
-                                GIMP_COORDS_MAX_PRESSURE);
+      coords->pressure = gimp_device_info_map_axis (info,
+                                                    GDK_AXIS_PRESSURE,
+                                                    coords->pressure);
     }
 
   if (gdk_device_get_axis (info->device,
diff --git a/app/widgets/gimpdeviceinfo.c b/app/widgets/gimpdeviceinfo.c
index 10cde7d..a76b7b8 100644
--- a/app/widgets/gimpdeviceinfo.c
+++ b/app/widgets/gimpdeviceinfo.c
@@ -29,6 +29,7 @@
 #include "core/gimp.h"
 #include "core/gimpcontainer.h"
 #include "core/gimpcurve.h"
+#include "core/gimpcurve-map.h"
 #include "core/gimpdatafactory.h"
 #include "core/gimpmarshal.h"
 
@@ -773,6 +774,23 @@ gimp_device_info_get_curve (GimpDeviceInfo *info,
     }
 }
 
+gdouble
+gimp_device_info_map_axis (GimpDeviceInfo *info,
+                           GdkAxisUse      use,
+                           gboolean        value)
+{
+  GimpCurve *curve;
+
+  g_return_val_if_fail (GIMP_IS_DEVICE_INFO (info), value);
+
+  curve = gimp_device_info_get_curve (info, use);
+
+  if (curve)
+    return gimp_curve_map_value (curve, value);
+
+  return value;
+}
+
 void
 gimp_device_info_changed (GimpDeviceInfo *info)
 {
diff --git a/app/widgets/gimpdeviceinfo.h b/app/widgets/gimpdeviceinfo.h
index c235b36..91555d4 100644
--- a/app/widgets/gimpdeviceinfo.h
+++ b/app/widgets/gimpdeviceinfo.h
@@ -110,6 +110,9 @@ void             gimp_device_info_set_key           (GimpDeviceInfo  *info,
 
 GimpCurve      * gimp_device_info_get_curve         (GimpDeviceInfo  *info,
                                                      GdkAxisUse       use);
+gdouble          gimp_device_info_map_axis          (GimpDeviceInfo  *info,
+                                                     GdkAxisUse       use,
+                                                     gboolean         value);
 
 void             gimp_device_info_changed           (GimpDeviceInfo  *info);
 



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