[gimp/soc-2009-dynamics: 7/8] Start of dynamic jitter



commit 212ea4cc66a52c86d11a8e93c2d5f939e67386a9
Author: Alexia Death <alexiadeath gmail com>
Date:   Sun Oct 4 11:40:26 2009 +0300

    Start of dynamic jitter

 app/core/gimpdynamics.c      |   95 ++++++++++++++++++++++++++++++++++++++++-
 app/core/gimpdynamics.h      |    1 +
 app/paint/gimpbrushcore.c    |    8 +++-
 app/paint/gimppaintoptions.c |    5 ++-
 4 files changed, 103 insertions(+), 6 deletions(-)
---
diff --git a/app/core/gimpdynamics.c b/app/core/gimpdynamics.c
index 119aa42..aa7b9f0 100644
--- a/app/core/gimpdynamics.c
+++ b/app/core/gimpdynamics.c
@@ -43,6 +43,8 @@
 #define DEFAULT_PRESSURE_ASPECT_RATIO  FALSE
 #define DEFAULT_PRESSURE_COLOR         FALSE
 #define DEFAULT_PRESSURE_ANGLE         FALSE
+#define DEFAULT_PRESSURE_JITTER        FALSE
+
 
 #define DEFAULT_VELOCITY_OPACITY       FALSE
 #define DEFAULT_VELOCITY_HARDNESS      FALSE
@@ -51,6 +53,7 @@
 #define DEFAULT_VELOCITY_ASPECT_RATIO  FALSE
 #define DEFAULT_VELOCITY_COLOR         FALSE
 #define DEFAULT_VELOCITY_ANGLE         FALSE
+#define DEFAULT_VELOCITY_JITTER        TRUE
 
 #define DEFAULT_DIRECTION_OPACITY      FALSE
 #define DEFAULT_DIRECTION_HARDNESS     FALSE
@@ -59,6 +62,7 @@
 #define DEFAULT_DIRECTION_ASPECT_RATIO FALSE
 #define DEFAULT_DIRECTION_COLOR        FALSE
 #define DEFAULT_DIRECTION_ANGLE        FALSE
+#define DEFAULT_DIRECTION_JITTER       FALSE
 
 #define DEFAULT_TILT_OPACITY           FALSE
 #define DEFAULT_TILT_HARDNESS          FALSE
@@ -67,6 +71,7 @@
 #define DEFAULT_TILT_ASPECT_RATIO      FALSE
 #define DEFAULT_TILT_COLOR             FALSE
 #define DEFAULT_TILT_ANGLE             FALSE
+#define DEFAULT_TILT_JITTER            FALSE
 
 #define DEFAULT_RANDOM_OPACITY         FALSE
 #define DEFAULT_RANDOM_HARDNESS        FALSE
@@ -75,6 +80,7 @@
 #define DEFAULT_RANDOM_ASPECT_RATIO    FALSE
 #define DEFAULT_RANDOM_COLOR           FALSE
 #define DEFAULT_RANDOM_ANGLE           FALSE
+#define DEFAULT_RANDOM_JITTER          FALSE
 
 #define DEFAULT_FADING_OPACITY         FALSE
 #define DEFAULT_FADING_HARDNESS        FALSE
@@ -83,8 +89,7 @@
 #define DEFAULT_FADING_ASPECT_RATIO    FALSE
 #define DEFAULT_FADING_COLOR           FALSE
 #define DEFAULT_FADING_ANGLE           FALSE
-
-#define DEFAULT_FADE_LENGTH            100.0
+#define DEFAULT_FADING_JITTER          FALSE
 
 enum
 {
@@ -97,6 +102,7 @@ enum
   PROP_PRESSURE_ASPECT_RATIO,
   PROP_PRESSURE_COLOR,
   PROP_PRESSURE_ANGLE,
+  PROP_PRESSURE_JITTER,
 
   PROP_VELOCITY_OPACITY,
   PROP_VELOCITY_HARDNESS,
@@ -105,6 +111,7 @@ enum
   PROP_VELOCITY_ASPECT_RATIO,
   PROP_VELOCITY_COLOR,
   PROP_VELOCITY_ANGLE,
+  PROP_VELOCITY_JITTER,
 
   PROP_DIRECTION_OPACITY,
   PROP_DIRECTION_HARDNESS,
@@ -113,6 +120,7 @@ enum
   PROP_DIRECTION_ASPECT_RATIO,
   PROP_DIRECTION_COLOR,
   PROP_DIRECTION_ANGLE,
+  PROP_DIRECTION_JITTER,
 
   PROP_TILT_OPACITY,
   PROP_TILT_HARDNESS,
@@ -121,6 +129,7 @@ enum
   PROP_TILT_ASPECT_RATIO,
   PROP_TILT_COLOR,
   PROP_TILT_ANGLE,
+  PROP_TILT_JITTER,
 
   PROP_RANDOM_OPACITY,
   PROP_RANDOM_HARDNESS,
@@ -129,6 +138,7 @@ enum
   PROP_RANDOM_ASPECT_RATIO,
   PROP_RANDOM_COLOR,
   PROP_RANDOM_ANGLE,
+  PROP_RANDOM_JITTER,
 
   PROP_FADING_OPACITY,
   PROP_FADING_HARDNESS,
@@ -137,6 +147,7 @@ enum
   PROP_FADING_ASPECT_RATIO,
   PROP_FADING_COLOR,
   PROP_FADING_ANGLE,
+  PROP_FADING_JITTER,
 };
 
 static void    gimp_dynamics_class_init       (GimpDynamicsClass *klass);
@@ -208,6 +219,10 @@ gimp_dynamics_class_init (GimpDynamicsClass *klass)
                                     "pressure-aspect-ratio", NULL,
                                     DEFAULT_PRESSURE_ASPECT_RATIO,
                                     GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_PRESSURE_JITTER,
+                                    "pressure-jitter", NULL,
+                                    DEFAULT_PRESSURE_JITTER,
+                                    GIMP_PARAM_STATIC_STRINGS);
 
   GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_VELOCITY_OPACITY,
                                     "velocity-opacity", NULL,
@@ -237,6 +252,10 @@ gimp_dynamics_class_init (GimpDynamicsClass *klass)
                                     "velocity-aspect-ratio", NULL,
                                     DEFAULT_VELOCITY_ASPECT_RATIO,
                                     GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_VELOCITY_JITTER,
+                                    "velocity-jitter", NULL,
+                                    DEFAULT_VELOCITY_JITTER,
+                                    GIMP_PARAM_STATIC_STRINGS);
 
   GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_DIRECTION_OPACITY,
                                     "direction-opacity", NULL,
@@ -266,6 +285,10 @@ gimp_dynamics_class_init (GimpDynamicsClass *klass)
                                     "direction-aspect-ratio", NULL,
                                     DEFAULT_DIRECTION_ASPECT_RATIO,
                                     GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_DIRECTION_JITTER,
+                                    "direction-jitter", NULL,
+                                    DEFAULT_DIRECTION_JITTER,
+                                    GIMP_PARAM_STATIC_STRINGS);
 
   GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_TILT_OPACITY,
                                     "tilt-opacity", NULL,
@@ -295,6 +318,10 @@ gimp_dynamics_class_init (GimpDynamicsClass *klass)
                                     "tilt-aspect-ratio", NULL,
                                     DEFAULT_TILT_ASPECT_RATIO,
                                     GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_TILT_JITTER,
+                                    "tilt-jitter", NULL,
+                                    DEFAULT_TILT_JITTER,
+                                    GIMP_PARAM_STATIC_STRINGS);
 
   GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_RANDOM_OPACITY,
                                     "random-opacity", NULL,
@@ -324,6 +351,10 @@ gimp_dynamics_class_init (GimpDynamicsClass *klass)
                                     "random-aspect-ratio", NULL,
                                     DEFAULT_RANDOM_ASPECT_RATIO,
                                     GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_RANDOM_JITTER,
+                                    "random-jitter", NULL,
+                                    DEFAULT_RANDOM_JITTER,
+                                    GIMP_PARAM_STATIC_STRINGS);
 
   GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_FADING_OPACITY,
                                     "fading-opacity", NULL,
@@ -353,6 +384,10 @@ gimp_dynamics_class_init (GimpDynamicsClass *klass)
                                     "fading-aspect-ratio", NULL,
                                     DEFAULT_FADING_ASPECT_RATIO,
                                     GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_FADING_JITTER,
+                                    "fading-jitter", NULL,
+                                    DEFAULT_FADING_JITTER,
+                                    GIMP_PARAM_STATIC_STRINGS);
 
 }
 
@@ -373,6 +408,8 @@ gimp_dynamics_init (GimpDynamics *options)
 
   options->angle_dynamics        = gimp_dynamics_output_init();
 
+  options->jitter_dynamics        = gimp_dynamics_output_init();
+
 }
 
 
@@ -395,6 +432,8 @@ gimp_dynamics_finalize (GObject *object)
 
   gimp_dynamics_output_finalize   (options->angle_dynamics);
 
+  gimp_dynamics_output_finalize   (options->jitter_dynamics);
+
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
@@ -459,6 +498,7 @@ gimp_dynamics_set_property (GObject      *object,
   GimpDynamicsOutput *aspect_ratio_dynamics = options->aspect_ratio_dynamics;
   GimpDynamicsOutput *color_dynamics        = options->color_dynamics;
   GimpDynamicsOutput *angle_dynamics        = options->angle_dynamics;
+  GimpDynamicsOutput *jitter_dynamics       = options->jitter_dynamics;
 
   switch (property_id)
     {
@@ -491,6 +531,10 @@ gimp_dynamics_set_property (GObject      *object,
       angle_dynamics->pressure = g_value_get_boolean (value);
       break;
 
+    case PROP_PRESSURE_JITTER:
+      jitter_dynamics->pressure = g_value_get_boolean (value);
+      break;
+
     case PROP_VELOCITY_OPACITY:
       opacity_dynamics->velocity = g_value_get_boolean (value);
       break;
@@ -519,6 +563,10 @@ gimp_dynamics_set_property (GObject      *object,
       angle_dynamics->velocity = g_value_get_boolean (value);
       break;
 
+    case PROP_VELOCITY_JITTER:
+      jitter_dynamics->velocity = g_value_get_boolean (value);
+      break;
+
     case PROP_DIRECTION_OPACITY:
       opacity_dynamics->direction = g_value_get_boolean (value);
       break;
@@ -547,6 +595,10 @@ gimp_dynamics_set_property (GObject      *object,
       angle_dynamics->direction = g_value_get_boolean (value);
       break;
 
+    case PROP_DIRECTION_JITTER:
+      jitter_dynamics->direction = g_value_get_boolean (value);
+      break;
+
     case PROP_TILT_OPACITY:
       opacity_dynamics->tilt = g_value_get_boolean (value);
       break;
@@ -575,6 +627,10 @@ gimp_dynamics_set_property (GObject      *object,
       angle_dynamics->tilt = g_value_get_boolean (value);
       break;
 
+    case PROP_TILT_JITTER:
+      jitter_dynamics->tilt = g_value_get_boolean (value);
+      break;
+
     case PROP_RANDOM_OPACITY:
       opacity_dynamics->random = g_value_get_boolean (value);
       break;
@@ -603,8 +659,10 @@ gimp_dynamics_set_property (GObject      *object,
       angle_dynamics->random = g_value_get_boolean (value);
       break;
 
+    case PROP_RANDOM_JITTER:
+      jitter_dynamics->random = g_value_get_boolean (value);
+      break;
 
-/*Fading*/
     case PROP_FADING_OPACITY:
       opacity_dynamics->fade = g_value_get_boolean (value);
       break;
@@ -633,6 +691,11 @@ gimp_dynamics_set_property (GObject      *object,
       angle_dynamics->fade = g_value_get_boolean (value);
       break;
 
+    case PROP_FADING_JITTER:
+      jitter_dynamics->fade = g_value_get_boolean (value);
+      break;
+
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -655,6 +718,7 @@ gimp_dynamics_get_property (GObject    *object,
   GimpDynamicsOutput *aspect_ratio_dynamics = options->aspect_ratio_dynamics;
   GimpDynamicsOutput *color_dynamics        = options->color_dynamics;
   GimpDynamicsOutput *angle_dynamics        = options->angle_dynamics;
+  GimpDynamicsOutput *jitter_dynamics       = options->jitter_dynamics;
 
   switch (property_id)
     {
@@ -687,6 +751,10 @@ gimp_dynamics_get_property (GObject    *object,
       g_value_set_boolean (value, angle_dynamics->pressure);
       break;
 
+    case PROP_PRESSURE_JITTER:
+      g_value_set_boolean (value, jitter_dynamics->pressure);
+      break;
+
     case PROP_VELOCITY_OPACITY:
       g_value_set_boolean (value, opacity_dynamics->velocity);
       break;
@@ -715,6 +783,10 @@ gimp_dynamics_get_property (GObject    *object,
       g_value_set_boolean (value, angle_dynamics->velocity);
       break;
 
+    case PROP_VELOCITY_JITTER:
+      g_value_set_boolean (value, jitter_dynamics->velocity);
+      break;
+
     case PROP_DIRECTION_OPACITY:
       g_value_set_boolean (value, opacity_dynamics->direction);
       break;
@@ -743,6 +815,9 @@ gimp_dynamics_get_property (GObject    *object,
       g_value_set_boolean (value, angle_dynamics->direction);
       break;
 
+    case PROP_DIRECTION_JITTER:
+      g_value_set_boolean (value, jitter_dynamics->direction);
+      break;
 
     case PROP_TILT_OPACITY:
       g_value_set_boolean (value, opacity_dynamics->tilt);
@@ -772,6 +847,10 @@ gimp_dynamics_get_property (GObject    *object,
       g_value_set_boolean (value, angle_dynamics->tilt);
       break;
 
+    case PROP_TILT_JITTER:
+      g_value_set_boolean (value, jitter_dynamics->tilt);
+      break;
+
     case PROP_RANDOM_OPACITY:
       g_value_set_boolean (value, opacity_dynamics->random);
       break;
@@ -800,6 +879,11 @@ gimp_dynamics_get_property (GObject    *object,
       g_value_set_boolean (value, angle_dynamics->random);
       break;
 
+    case PROP_RANDOM_JITTER:
+      g_value_set_boolean (value, jitter_dynamics->random);
+      break;
+
+
 /*fading*/
 
     case PROP_FADING_OPACITY:
@@ -830,6 +914,10 @@ gimp_dynamics_get_property (GObject    *object,
       g_value_set_boolean (value, angle_dynamics->fade);
       break;
 
+    case PROP_FADING_JITTER:
+      g_value_set_boolean (value, jitter_dynamics->fade);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -1148,6 +1236,7 @@ gimp_dynamics_input_fade_enabled(GimpDynamics *dynamics)
           dynamics->size_dynamics->fade ||
           dynamics->aspect_ratio_dynamics->fade ||
           dynamics->color_dynamics->fade ||
+          dynamics->jitter_dynamics->fade ||
           dynamics->angle_dynamics->fade);
 
 }
\ No newline at end of file
diff --git a/app/core/gimpdynamics.h b/app/core/gimpdynamics.h
index 5d47a6e..259aa12 100644
--- a/app/core/gimpdynamics.h
+++ b/app/core/gimpdynamics.h
@@ -73,6 +73,7 @@ struct _GimpDynamics
   GimpDynamicsOutput*  aspect_ratio_dynamics;
   GimpDynamicsOutput*  color_dynamics;
   GimpDynamicsOutput*  angle_dynamics;
+  GimpDynamicsOutput*  jitter_dynamics;
 
 };
 
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index fe1d24c..656b939 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -376,9 +376,13 @@ gimp_brush_core_start (GimpPaintCore     *paint_core,
 {
   GimpBrushCore *core = GIMP_BRUSH_CORE (paint_core);
   GimpBrush     *brush;
+  gdouble        fade_point;
 
   core->dynamics = gimp_context_get_dynamics (GIMP_CONTEXT (paint_options));
 
+  fade_point = gimp_paint_options_get_fade (paint_options, gimp_item_get_image (GIMP_ITEM (drawable)),
+                                                    paint_core->pixel_dist);
+
   brush    = gimp_context_get_brush (GIMP_CONTEXT (paint_options));
 
   if (core->main_brush != brush)
@@ -393,6 +397,7 @@ gimp_brush_core_start (GimpPaintCore     *paint_core,
 
   if (GIMP_BRUSH_CORE_GET_CLASS (core)->handles_transforming_brush)
     {
+
       core->scale = paint_options->brush_scale;
 
       core->angle = paint_options->brush_angle;
@@ -401,8 +406,6 @@ gimp_brush_core_start (GimpPaintCore     *paint_core,
 
       if (core->dynamics)
         {
-          gdouble fade_point = gimp_paint_options_get_fade (paint_options, gimp_item_get_image (GIMP_ITEM (drawable)),
-                                                            paint_core->pixel_dist);
 
           core->scale *= gimp_dynamics_get_scale_output_val(core->dynamics->size_dynamics, *coords, fade_point);
 
@@ -419,6 +422,7 @@ gimp_brush_core_start (GimpPaintCore     *paint_core,
   core->jitter =
     gimp_paint_options_get_jitter (paint_options,
                                    gimp_item_get_image (GIMP_ITEM (drawable)));
+  core->jitter *= gimp_dynamics_get_linear_output_val(core->dynamics->jitter_dynamics, *coords, fade_point);
 
   return TRUE;
 }
diff --git a/app/paint/gimppaintoptions.c b/app/paint/gimppaintoptions.c
index 8422e3d..d47949b 100644
--- a/app/paint/gimppaintoptions.c
+++ b/app/paint/gimppaintoptions.c
@@ -570,7 +570,10 @@ gimp_paint_options_get_jitter (GimpPaintOptions *paint_options,
   jitter_options = paint_options->jitter_options;
 
   if (jitter_options->use_jitter)
-    return jitter_options->jitter_amount;
+    {
+      return jitter_options->jitter_amount;
+    }
+
 
   return 0.0;
 }



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