[gimp/soc-2009-dynamics] Wiring the new dynamics object to brush core. Just a start for now.
- From: Alexia Death <alexiade src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp/soc-2009-dynamics] Wiring the new dynamics object to brush core. Just a start for now.
- Date: Wed, 19 Aug 2009 22:40:46 +0000 (UTC)
commit 56f59eab978e336b5c7d2792f03079cfe90df74a
Author: Alexia Death <alexiadeath gmail com>
Date: Thu Aug 20 01:40:33 2009 +0300
Wiring the new dynamics object to brush core. Just a start for now.
app/paint/gimpbrushcore.c | 41 ++++++++++++++++++++
app/paint/gimpbrushcore.h | 12 +++++-
app/paint/gimpdynamicsoptions.c | 79 +++++++++++++++++++++++++++++++++++++-
app/paint/gimpdynamicsoptions.h | 4 +-
4 files changed, 130 insertions(+), 6 deletions(-)
---
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index 8381c8d..61f3a1a 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -40,6 +40,7 @@
#include "gimpbrushcore.h"
#include "gimpbrushcore-kernels.h"
#include "gimppaintoptions.h"
+#include "gimpdynamicsoptions.h"
#include "gimp-intl.h"
@@ -49,6 +50,7 @@
enum
{
SET_BRUSH,
+ SET_DYNAMICS,
LAST_SIGNAL
};
@@ -85,6 +87,9 @@ static TempBuf *gimp_brush_core_get_paint_area (GimpPaintCore *paint_core
static void gimp_brush_core_real_set_brush (GimpBrushCore *core,
GimpBrush *brush);
+static void gimp_brush_core_real_set_dynamics (GimpBrushCore *core,
+ GimpDynamicsOptions *dynamics);
+
static inline void rotate_pointers (gulong **p,
guint32 n);
static TempBuf * gimp_brush_core_subsample_mask (GimpBrushCore *core,
@@ -147,6 +152,16 @@ gimp_brush_core_class_init (GimpBrushCoreClass *klass)
G_TYPE_NONE, 1,
GIMP_TYPE_BRUSH);
+ core_signals[SET_DYNAMICS] =
+ g_signal_new ("set-brush",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GimpBrushCoreClass, set_dynamics),
+ NULL, NULL,
+ gimp_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ GIMP_TYPE_DYNAMICS_OPTIONS);
+
object_class->finalize = gimp_brush_core_finalize;
paint_core_class->start = gimp_brush_core_start;
@@ -167,6 +182,7 @@ gimp_brush_core_init (GimpBrushCore *core)
core->main_brush = NULL;
core->brush = NULL;
+ core->dynamics = NULL;
core->spacing = 1.0;
core->scale = 1.0;
core->angle = 1.0;
@@ -804,6 +820,21 @@ gimp_brush_core_real_set_brush (GimpBrushCore *core,
}
}
+static void
+gimp_brush_core_real_set_dynamics (GimpBrushCore *core,
+ GimpDynamicsOptions *dynamics)
+{
+ if (core->dynamics)
+ {
+ g_object_unref (core->dynamics);
+ core->dynamics = NULL;
+ }
+
+ core->dynamics = dynamics;
+
+
+}
+
void
gimp_brush_core_set_brush (GimpBrushCore *core,
GimpBrush *brush)
@@ -815,6 +846,16 @@ gimp_brush_core_set_brush (GimpBrushCore *core,
}
void
+gimp_brush_core_set_dynamics (GimpBrushCore *core,
+ GimpDynamicsOptions *dynamics)
+{
+ g_return_if_fail (GIMP_IS_BRUSH_CORE (core));
+ g_return_if_fail (dynamics == NULL || GIMP_IS_DYNAMICS_OPTIONS (dynamics));
+
+ g_signal_emit (core, core_signals[SET_DYNAMICS], 0, dynamics);
+}
+
+void
gimp_brush_core_create_bound_segs (GimpBrushCore *core,
GimpPaintOptions *paint_options)
{
diff --git a/app/paint/gimpbrushcore.h b/app/paint/gimpbrushcore.h
index d9431af..2498a70 100644
--- a/app/paint/gimpbrushcore.h
+++ b/app/paint/gimpbrushcore.h
@@ -43,6 +43,7 @@ struct _GimpBrushCore
GimpBrush *main_brush;
GimpBrush *brush;
+ GimpDynamicsOptions *dynamics;
gdouble spacing;
gdouble scale;
gdouble angle;
@@ -97,8 +98,11 @@ struct _GimpBrushCoreClass
gboolean handles_transforming_brush;
- void (* set_brush) (GimpBrushCore *core,
- GimpBrush *brush);
+ void (* set_brush) (GimpBrushCore *core,
+ GimpBrush *brush);
+ void (* set_dynamics) (GimpBrushCore *core,
+ GimpDynamicsOptions *brush);
+
};
@@ -106,6 +110,10 @@ GType gimp_brush_core_get_type (void) G_GNUC_CONST;
void gimp_brush_core_set_brush (GimpBrushCore *core,
GimpBrush *brush);
+
+void gimp_brush_core_set_dynamics (GimpBrushCore *core,
+ GimpDynamicsOptions *dynamics);
+
void gimp_brush_core_create_bound_segs (GimpBrushCore *core,
GimpPaintOptions *options);
diff --git a/app/paint/gimpdynamicsoptions.c b/app/paint/gimpdynamicsoptions.c
index e63b5c7..ff7f741 100644
--- a/app/paint/gimpdynamicsoptions.c
+++ b/app/paint/gimpdynamicsoptions.c
@@ -25,10 +25,11 @@
#include "paint-types.h"
+
+
#include "core/gimp.h"
#include "core/gimpimage.h"
-#include "core/gimpgradient.h"
-#include "core/gimppaintinfo.h"
+#include "core/gimpcurve.h"
#include "gimpdynamicsoptions.h"
@@ -157,6 +158,11 @@ static void gimp_dynamics_options_get_property (GObject *object,
GValue *value,
GParamSpec *pspec);
+static void gimp_dynamics_options_curves_init (GimpDynamicOutputOptions *dynamics);
+
+static void gimp_dynamics_options_curves_finalize (GimpDynamicOutputOptions *dynamics);
+
+
/*
G_DEFINE_TYPE_WITH_CODE (GimpDynamicsOptions, gimp_dynamics_options, GIMP_TYPE_DATA,
G_IMPLEMENT_INTERFACE (GIMP_TYPE_DOCKED,
@@ -361,12 +367,25 @@ gimp_dynamics_options_init (GimpDynamicsOptions *options)
{
options->opacity_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
+ gimp_dynamics_options_curves_init(options->opacity_dynamics);
+
options->hardness_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
+ gimp_dynamics_options_curves_init(options->hardness_dynamics);
+
options->rate_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
+ gimp_dynamics_options_curves_init(options->rate_dynamics);
+
options->size_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
+ gimp_dynamics_options_curves_init(options->size_dynamics);
+
options->aspect_ratio_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
+ gimp_dynamics_options_curves_init(options->aspect_ratio_dynamics);
+
options->color_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
+ gimp_dynamics_options_curves_init(options->color_dynamics);
+
options->angle_dynamics = g_slice_new0 (GimpDynamicOutputOptions);
+ gimp_dynamics_options_curves_init(options->angle_dynamics);
}
@@ -376,12 +395,25 @@ gimp_dynamics_options_finalize (GObject *object)
{
GimpDynamicsOptions *options = GIMP_DYNAMICS_OPTIONS (object);
+ gimp_dynamics_options_curves_finalize (options->opacity_dynamics);
g_slice_free (GimpDynamicOutputOptions, options->opacity_dynamics);
+
+ gimp_dynamics_options_curves_finalize (options->hardness_dynamics);
g_slice_free (GimpDynamicOutputOptions, options->hardness_dynamics);
+
+ gimp_dynamics_options_curves_finalize (options->rate_dynamics);
g_slice_free (GimpDynamicOutputOptions, options->rate_dynamics);
+
+ gimp_dynamics_options_curves_finalize (options->size_dynamics);
g_slice_free (GimpDynamicOutputOptions, options->size_dynamics);
+
+ gimp_dynamics_options_curves_finalize (options->aspect_ratio_dynamics);
g_slice_free (GimpDynamicOutputOptions, options->aspect_ratio_dynamics);
+
+ gimp_dynamics_options_curves_finalize (options->color_dynamics);
g_slice_free (GimpDynamicOutputOptions, options->color_dynamics);
+
+ gimp_dynamics_options_curves_finalize (options->angle_dynamics);
g_slice_free (GimpDynamicOutputOptions, options->angle_dynamics);
@@ -389,6 +421,47 @@ gimp_dynamics_options_finalize (GObject *object)
}
static void
+gimp_dynamics_options_curves_init (GimpDynamicOutputOptions *dynamics)
+{
+ dynamics->pressure_curve = g_object_new (GIMP_TYPE_CURVE,
+ "name", "Pressure curve",
+ NULL);
+ dynamics->velocity_curve = g_object_new (GIMP_TYPE_CURVE,
+ "name", "Velocity curve",
+ NULL);
+ dynamics->direction_curve = g_object_new (GIMP_TYPE_CURVE,
+ "name", "Direction curve",
+ NULL);
+ dynamics->tilt_curve = g_object_new (GIMP_TYPE_CURVE,
+ "name", "Tilt curve",
+ NULL);
+ dynamics->random_curve = g_object_new (GIMP_TYPE_CURVE,
+ "name", "Random curve",
+ NULL);
+ dynamics->fade_curve = g_object_new (GIMP_TYPE_CURVE,
+ "name", "Fade curve",
+ NULL);
+}
+
+static void
+gimp_dynamics_options_curves_finalize (GimpDynamicOutputOptions *dynamics)
+{
+ g_object_unref(dynamics->pressure_curve);
+
+ g_object_unref(dynamics->velocity_curve);
+
+ g_object_unref(dynamics->direction_curve);
+
+ g_object_unref(dynamics->tilt_curve);
+
+ g_object_unref(dynamics->random_curve);
+
+ g_object_unref(dynamics->fade_curve);
+
+}
+
+
+static void
gimp_dynamics_options_set_property (GObject *object,
guint property_id,
const GValue *value,
@@ -811,7 +884,7 @@ gimp_dynamics_options_notify (GObject *object,
}
GimpData *
-gimp_dynamics_options_new (GString *name)
+gimp_dynamics_options_new (const gchar *name)
{
GimpDynamicsOptions *options;
diff --git a/app/paint/gimpdynamicsoptions.h b/app/paint/gimpdynamicsoptions.h
index 3c3e02e..3b60a0b 100644
--- a/app/paint/gimpdynamicsoptions.h
+++ b/app/paint/gimpdynamicsoptions.h
@@ -35,6 +35,8 @@ struct _GimpDynamicOutputOptions
gboolean random;
gboolean fade;
+ gdouble fade_length;
+
GimpCurve* pressure_curve;
GimpCurve* velocity_curve;
GimpCurve* direction_curve;
@@ -81,7 +83,7 @@ struct _GimpDynamicsOptionsClass
GType gimp_dynamics_options_get_type (void) G_GNUC_CONST;
-GimpData * gimp_dynamics_options_new (GString *name);
+GimpData * gimp_dynamics_options_new (const gchar *name);
GimpData * gimp_dynamics_get_standard (void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]