[gimp] app: add a pressure curve
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add a pressure curve
- Date: Mon, 15 Feb 2010 22:08:55 +0000 (UTC)
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]