[gimp] app: add a pressure curve



commit 2da0529ef4727fd7bf9dfa0683fc28f649a27505
Author: Michael Natterer <mitch gimp org>
Date:   Mon Feb 15 23:06:19 2010 +0100

    app: add a pressure curve
    
    but keep the API general so all axes can have curves.

 app/widgets/gimpdeviceinfo.c |   36 ++++++++++++++++++++++++++++++++++--
 app/widgets/gimpdeviceinfo.h |   17 ++++++++++++-----
 2 files changed, 46 insertions(+), 7 deletions(-)
---
diff --git a/app/widgets/gimpdeviceinfo.c b/app/widgets/gimpdeviceinfo.c
index 531dba5..64b0cc3 100644
--- a/app/widgets/gimpdeviceinfo.c
+++ b/app/widgets/gimpdeviceinfo.c
@@ -28,6 +28,7 @@
 
 #include "core/gimp.h"
 #include "core/gimpcontainer.h"
+#include "core/gimpcurve.h"
 #include "core/gimpdatafactory.h"
 #include "core/gimpmarshal.h"
 
@@ -158,6 +159,8 @@ gimp_device_info_init (GimpDeviceInfo *info)
   info->n_keys   = 0;
   info->keys     = NULL;
 
+  info->pressure_curve = GIMP_CURVE (gimp_curve_new ("pressure curve"));
+
   g_signal_connect (info, "notify::name",
                     G_CALLBACK (gimp_device_info_guess_icon),
                     NULL);
@@ -236,10 +239,22 @@ gimp_device_info_finalize (GObject *object)
   GimpDeviceInfo *info = GIMP_DEVICE_INFO (object);
 
   if (info->axes)
-    g_free (info->axes);
+    {
+      g_free (info->axes);
+      info->axes = NULL;
+    }
 
   if (info->keys)
-    g_free (info->keys);
+    {
+      g_free (info->keys);
+      info->keys = NULL;
+    }
+
+  if (info->pressure_curve)
+    {
+      g_object_unref (info->pressure_curve);
+      info->pressure_curve = NULL;
+    }
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -730,6 +745,23 @@ gimp_device_info_set_key (GimpDeviceInfo *info,
     }
 }
 
+GimpCurve *
+gimp_device_info_get_curve (GimpDeviceInfo *info,
+                            GdkAxisUse      use)
+{
+  g_return_val_if_fail (GIMP_IS_DEVICE_INFO (info), NULL);
+
+  switch (use)
+    {
+    case GDK_AXIS_PRESSURE:
+      return info->pressure_curve;
+      break;
+
+    default:
+      return NULL;
+    }
+}
+
 void
 gimp_device_info_changed (GimpDeviceInfo *info)
 {
diff --git a/app/widgets/gimpdeviceinfo.h b/app/widgets/gimpdeviceinfo.h
index b0a41a4..e745105 100644
--- a/app/widgets/gimpdeviceinfo.h
+++ b/app/widgets/gimpdeviceinfo.h
@@ -59,6 +59,10 @@ struct _GimpDeviceInfo
   GdkAxisUse    *axes;
   gint           n_keys;
   GdkDeviceKey  *keys;
+
+  /*  curves  */
+
+  GimpCurve     *pressure_curve;
 };
 
 struct _GimpDeviceInfoClass
@@ -97,17 +101,20 @@ void             gimp_device_info_get_key           (GimpDeviceInfo  *info,
                                                      gint             key,
                                                      guint           *keyval,
                                                      GdkModifierType *modifiers);
-void             gimp_device_info_set_key           (GimpDeviceInfo *info,
+void             gimp_device_info_set_key           (GimpDeviceInfo  *info,
                                                      gint             key,
                                                      guint            keyval,
                                                      GdkModifierType  modifiers);
 
-void             gimp_device_info_changed           (GimpDeviceInfo *info);
+GimpCurve      * gimp_device_info_get_curve         (GimpDeviceInfo  *info,
+                                                     GdkAxisUse       use);
+
+void             gimp_device_info_changed           (GimpDeviceInfo  *info);
 
-GimpDeviceInfo * gimp_device_info_get_by_device     (GdkDevice      *device);
+GimpDeviceInfo * gimp_device_info_get_by_device     (GdkDevice       *device);
 
-gint             gimp_device_info_compare           (GimpDeviceInfo *a,
-                                                     GimpDeviceInfo *b);
+gint             gimp_device_info_compare           (GimpDeviceInfo  *a,
+                                                     GimpDeviceInfo  *b);
 
 
 G_END_DECLS



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