[gimp] Stop smudge from crashing by disabling dynamic transfrorming in the brush core.
- From: Alexia Death <alexiade src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] Stop smudge from crashing by disabling dynamic transfrorming in the brush core.
- Date: Tue, 27 Oct 2009 21:34:43 +0000 (UTC)
commit 05f6d89ab06f552822a593dcdabe0a702a2b08d2
Author: Alexia Death <alexiadeath gmail com>
Date: Tue Oct 27 23:14:44 2009 +0200
Stop smudge from crashing by disabling dynamic transfrorming in the brush core.
app/paint/gimpbrushcore.c | 76 +++++++++++++++++++++++++--------------------
app/paint/gimpbrushcore.h | 2 +
app/paint/gimpsmudge.c | 1 +
3 files changed, 45 insertions(+), 34 deletions(-)
---
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index 871bf15..d415c2d 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -162,18 +162,20 @@ gimp_brush_core_class_init (GimpBrushCoreClass *klass)
G_TYPE_NONE, 1,
GIMP_TYPE_DYNAMICS);
- 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;
- paint_core_class->post_paint = gimp_brush_core_post_paint;
- paint_core_class->interpolate = gimp_brush_core_interpolate;
- paint_core_class->get_paint_area = gimp_brush_core_get_paint_area;
-
- klass->handles_changing_brush = FALSE;
- klass->handles_transforming_brush = TRUE;
- klass->set_brush = gimp_brush_core_real_set_brush;
- klass->set_dynamics = gimp_brush_core_real_set_dynamics;
+ 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;
+ paint_core_class->post_paint = gimp_brush_core_post_paint;
+ paint_core_class->interpolate = gimp_brush_core_interpolate;
+ paint_core_class->get_paint_area = gimp_brush_core_get_paint_area;
+
+ klass->handles_changing_brush = FALSE;
+ klass->handles_transforming_brush = TRUE;
+ klass->handles_dynamic_transforming_brush = TRUE;
+
+ klass->set_brush = gimp_brush_core_real_set_brush;
+ klass->set_dynamics = gimp_brush_core_real_set_dynamics;
}
static void
@@ -416,20 +418,23 @@ gimp_brush_core_start (GimpPaintCore *paint_core,
core->angle = paint_options->brush_angle;
core->aspect_ratio = paint_options->brush_aspect_ratio;
- fade_point = gimp_paint_options_get_fade (paint_options, image,
- paint_core->pixel_dist);
+ if (GIMP_BRUSH_CORE_GET_CLASS (core)->handles_dynamic_transforming_brush)
+ {
+ fade_point = gimp_paint_options_get_fade (paint_options, image,
+ 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->spacing = (gdouble) gimp_brush_get_spacing (core->main_brush) / 100.0;
@@ -788,20 +793,23 @@ gimp_brush_core_get_paint_area (GimpPaintCore *paint_core,
core->angle = paint_options->brush_angle;
core->aspect_ratio = paint_options->brush_aspect_ratio;
- fade_point = gimp_paint_options_get_fade (paint_options, image,
- paint_core->pixel_dist);
+ if (GIMP_BRUSH_CORE_GET_CLASS (core)->handles_dynamic_transforming_brush)
+ {
+ fade_point = gimp_paint_options_get_fade (paint_options, image,
+ 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);
diff --git a/app/paint/gimpbrushcore.h b/app/paint/gimpbrushcore.h
index 23f09f9..03806c0 100644
--- a/app/paint/gimpbrushcore.h
+++ b/app/paint/gimpbrushcore.h
@@ -96,6 +96,8 @@ struct _GimpBrushCoreClass
/* Set for tools that don't mind if the brush scales while painting */
gboolean handles_transforming_brush;
+ /* Set for tools that don't mind if the brush scales mid stroke */
+ gboolean handles_dynamic_transforming_brush;
void (* set_brush) (GimpBrushCore *core,
GimpBrush *brush);
diff --git a/app/paint/gimpsmudge.c b/app/paint/gimpsmudge.c
index 122ce3a..3102eb3 100644
--- a/app/paint/gimpsmudge.c
+++ b/app/paint/gimpsmudge.c
@@ -96,6 +96,7 @@ gimp_smudge_class_init (GimpSmudgeClass *klass)
paint_core_class->paint = gimp_smudge_paint;
brush_core_class->handles_transforming_brush = TRUE;
+ brush_core_class->handles_dynamic_transforming_brush = FALSE;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]