[gimp/soc-2009-dynamics: 7/8] Start of dynamic jitter
- From: Alexia Death <alexiade src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp/soc-2009-dynamics: 7/8] Start of dynamic jitter
- Date: Sun, 4 Oct 2009 09:04:37 +0000 (UTC)
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]