[gimp/soc-2009-dynamics] Wiring the new dynamics object to brush core. Just a start for now.



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]