[gimp/soc-2009-dynamics] More GimpBrushCore dynamics cleanup/fixes
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp/soc-2009-dynamics] More GimpBrushCore dynamics cleanup/fixes
- Date: Tue, 13 Oct 2009 17:03:05 +0000 (UTC)
commit de1db5c0ed6b4bdf33196aa1e43588ef7c5fded0
Author: Michael Natterer <mitch gimp org>
Date: Tue Oct 13 19:01:14 2009 +0200
More GimpBrushCore dynamics cleanup/fixes
- unref the dynamics in finalize()
- actually use the core's set_dynamics() API
- bail out with an error message in gimp_paint_core_start() if
there are no dynamics available (just like when there is no brush)
- remove checks for dynamics != NULL all over the place
(just as we can rely on a brush to exist)
app/paint/gimpbrushcore.c | 53 +++++++++++++++++++++++++++-----------------
1 files changed, 32 insertions(+), 21 deletions(-)
---
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index a4453b1..9fc0510 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -162,7 +162,7 @@ gimp_brush_core_class_init (GimpBrushCoreClass *klass)
G_TYPE_NONE, 1,
GIMP_TYPE_DYNAMICS);
- object_class->finalize = gimp_brush_core_finalize;
+ object_class->finalize = gimp_brush_core_finalize;
paint_core_class->start = gimp_brush_core_start;
paint_core_class->pre_paint = gimp_brush_core_pre_paint;
@@ -297,6 +297,12 @@ gimp_brush_core_finalize (GObject *object)
core->main_brush = NULL;
}
+ if (core->dynamics)
+ {
+ g_object_unref (core->dynamics);
+ core->dynamics = NULL;
+ }
+
if (core->brush_bound_segs)
{
g_free (core->brush_bound_segs);
@@ -375,14 +381,18 @@ gimp_brush_core_start (GimpPaintCore *paint_core,
{
GimpBrushCore *core = GIMP_BRUSH_CORE (paint_core);
GimpBrush *brush;
-
- core->dynamics = gimp_context_get_dynamics (GIMP_CONTEXT (paint_options));
+ GimpDynamics *dynamics;
brush = gimp_context_get_brush (GIMP_CONTEXT (paint_options));
if (core->main_brush != brush)
gimp_brush_core_set_brush (core, brush);
+ dynamics = gimp_context_get_dynamics (GIMP_CONTEXT (paint_options));
+
+ if (core->dynamics != dynamics)
+ gimp_brush_core_set_dynamics (core, dynamics);
+
if (! core->main_brush)
{
g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
@@ -390,6 +400,13 @@ gimp_brush_core_start (GimpPaintCore *paint_core,
return FALSE;
}
+ if (! core->dynamics)
+ {
+ g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
+ _("No paint dynamics available for use with this tool."));
+ return FALSE;
+ }
+
if (GIMP_BRUSH_CORE_GET_CLASS (core)->handles_transforming_brush)
{
gdouble fade_point;
@@ -402,14 +419,11 @@ gimp_brush_core_start (GimpPaintCore *paint_core,
gimp_item_get_image (GIMP_ITEM (drawable)),
paint_core->pixel_dist);
- if (core->dynamics)
- {
- core->scale *= gimp_dynamics_output_get_linear_value (core->dynamics->size_output, *coords, fade_point);
+ core->scale *= gimp_dynamics_output_get_linear_value (core->dynamics->size_output, *coords, fade_point);
- core->angle += gimp_dynamics_output_get_angular_value (core->dynamics->angle_output, *coords, fade_point);
+ core->angle += gimp_dynamics_output_get_angular_value (core->dynamics->angle_output, *coords, fade_point);
- core->aspect_ratio *= gimp_dynamics_output_get_aspect_value (core->dynamics->aspect_ratio_output, *coords, fade_point);
- }
+ core->aspect_ratio *= gimp_dynamics_output_get_aspect_value (core->dynamics->aspect_ratio_output, *coords, fade_point);
}
core->spacing = (gdouble) gimp_brush_get_spacing (core->main_brush) / 100.0;
@@ -755,21 +769,21 @@ gimp_brush_core_get_paint_area (GimpPaintCore *paint_core,
if (GIMP_BRUSH_CORE_GET_CLASS (core)->handles_transforming_brush)
{
+ gdouble fade_point;
+
core->scale = paint_options->brush_scale;
core->angle = paint_options->brush_angle;
core->aspect_ratio = paint_options->brush_aspect_ratio;
- if (core->dynamics)
- {
- gdouble fade_point = gimp_paint_options_get_fade (paint_options, gimp_item_get_image (GIMP_ITEM (drawable)),
- paint_core->pixel_dist);
+ fade_point = gimp_paint_options_get_fade (paint_options,
+ gimp_item_get_image (GIMP_ITEM (drawable)),
+ paint_core->pixel_dist);
- core->scale *= gimp_dynamics_output_get_linear_value (core->dynamics->size_output, *coords, fade_point);
+ core->scale *= gimp_dynamics_output_get_linear_value (core->dynamics->size_output, *coords, fade_point);
- core->angle += gimp_dynamics_output_get_angular_value (core->dynamics->angle_output, *coords, fade_point);
+ core->angle += gimp_dynamics_output_get_angular_value (core->dynamics->angle_output, *coords, fade_point);
- core->aspect_ratio *= gimp_dynamics_output_get_aspect_value (core->dynamics->aspect_ratio_output, *coords, fade_point);
- }
+ core->aspect_ratio *= gimp_dynamics_output_get_aspect_value (core->dynamics->aspect_ratio_output, *coords, fade_point);
}
core->scale = gimp_brush_core_clamp_brush_scale (core, core->scale);
@@ -845,10 +859,7 @@ gimp_brush_core_real_set_dynamics (GimpBrushCore *core,
GimpDynamics *dynamics)
{
if (core->dynamics)
- {
- g_object_unref (core->dynamics);
- core->dynamics = NULL;
- }
+ g_object_unref (core->dynamics);
core->dynamics = dynamics;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]