diff --git a/app/core/gimpdynamics.c b/app/core/gimpdynamics.c index ba61614773..2475e4eae9 100644 --- a/app/core/gimpdynamics.c +++ b/app/core/gimpdynamics.c @@ -549,11 +549,24 @@ gimp_dynamics_get_output (GimpDynamics *dynamics, break; default: - return NULL; + g_return_val_if_reached (NULL); break; } } +gboolean +gimp_dynamics_is_output_enabled (GimpDynamics *dynamics, + GimpDynamicsOutputType type) +{ + GimpDynamicsOutput *output; + + g_return_val_if_fail (GIMP_IS_DYNAMICS (dynamics), FALSE); + + output = gimp_dynamics_get_output (dynamics, type); + + return gimp_dynamics_output_is_enabled (output); +} + gdouble gimp_dynamics_get_linear_value (GimpDynamics *dynamics, GimpDynamicsOutputType type, diff --git a/app/core/gimpdynamics.h b/app/core/gimpdynamics.h index 9daaddbdf9..811dce3dce 100644 --- a/app/core/gimpdynamics.h +++ b/app/core/gimpdynamics.h @@ -52,6 +52,9 @@ GimpData * gimp_dynamics_get_standard (GimpContext *context GimpDynamicsOutput * gimp_dynamics_get_output (GimpDynamics *dynamics, GimpDynamicsOutputType type); +gboolean gimp_dynamics_is_output_enabled (GimpDynamics *dynamics, + GimpDynamicsOutputType type); + gdouble gimp_dynamics_get_linear_value (GimpDynamics *dynamics, GimpDynamicsOutputType type, const GimpCoords *coords, diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c index 40fb32b5c8..9201643361 100644 --- a/app/paint/gimpbrushcore.c +++ b/app/paint/gimpbrushcore.c @@ -1530,9 +1530,7 @@ gimp_brush_core_eval_transform_dynamics (GimpBrushCore *core, if (GIMP_BRUSH_CORE_GET_CLASS (core)->handles_dynamic_transforming_brush) { - GimpDynamicsOutput *output; - gdouble dyn_aspect_ratio = 0.0; - gdouble fade_point = 1.0; + gdouble fade_point = 1.0; if (drawable) { @@ -1561,23 +1559,25 @@ gimp_brush_core_eval_transform_dynamics (GimpBrushCore *core, paint_options, fade_point); - output = gimp_dynamics_get_output (core->dynamics, - GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO); - dyn_aspect_ratio = gimp_dynamics_output_get_aspect_value (output, - coords, - paint_options, - fade_point); - - /* Zero aspect ratio is special cased to half of all ar range, - * to force dynamics to have any effect. Forcing to full results - * in disapearing stamp if applied to maximum. - */ - if (gimp_dynamics_output_is_enabled (output)) + if (gimp_dynamics_is_output_enabled (core->dynamics, + GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO)) { + gdouble dyn_aspect; + + dyn_aspect = gimp_dynamics_get_aspect_value (core->dynamics, + GIMP_DYNAMICS_OUTPUT_ASPECT_RATIO, + coords, + paint_options, + fade_point); + + /* Zero aspect ratio is special cased to half of all ar range, + * to force dynamics to have any effect. Forcing to full results + * in disapearing stamp if applied to maximum. + */ if (core->aspect_ratio == 0.0) - core->aspect_ratio = 10.0 * dyn_aspect_ratio; + core->aspect_ratio = 10.0 * dyn_aspect; else - core->aspect_ratio *= dyn_aspect_ratio; + core->aspect_ratio *= dyn_aspect; } } } diff --git a/app/paint/gimpclone.c b/app/paint/gimpclone.c index be9c317122..d342de02a4 100644 --- a/app/paint/gimpclone.c +++ b/app/paint/gimpclone.c @@ -30,7 +30,6 @@ #include "core/gimp.h" #include "core/gimpdrawable.h" #include "core/gimpdynamics.h" -#include "core/gimpdynamicsoutput.h" #include "core/gimperror.h" #include "core/gimpimage.h" #include "core/gimppattern.h" @@ -152,16 +151,15 @@ gimp_clone_motion (GimpSourceCore *source_core, gint paint_area_width, gint paint_area_height) { - GimpPaintCore *paint_core = GIMP_PAINT_CORE (source_core); - GimpBrushCore *brush_core = GIMP_BRUSH_CORE (source_core); - GimpCloneOptions *options = GIMP_CLONE_OPTIONS (paint_options); - GimpSourceOptions *source_options = GIMP_SOURCE_OPTIONS (paint_options); - GimpContext *context = GIMP_CONTEXT (paint_options); - GimpDynamics *dynamics = brush_core->dynamics; - GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); - gdouble fade_point; - GimpDynamicsOutput *force_output; - gdouble force; + GimpPaintCore *paint_core = GIMP_PAINT_CORE (source_core); + GimpBrushCore *brush_core = GIMP_BRUSH_CORE (source_core); + GimpCloneOptions *options = GIMP_CLONE_OPTIONS (paint_options); + GimpSourceOptions *source_options = GIMP_SOURCE_OPTIONS (paint_options); + GimpContext *context = GIMP_CONTEXT (paint_options); + GimpDynamics *dynamics = brush_core->dynamics; + GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); + gdouble fade_point; + gdouble force; if (gimp_source_core_use_source (source_core, source_options)) { @@ -199,10 +197,7 @@ gimp_clone_motion (GimpSourceCore *source_core, fade_point = gimp_paint_options_get_fade (paint_options, image, paint_core->pixel_dist); - force_output = gimp_dynamics_get_output (dynamics, - GIMP_DYNAMICS_OUTPUT_FORCE); - - if (gimp_dynamics_output_is_enabled (force_output)) + if (gimp_dynamics_is_output_enabled (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE)) force = gimp_dynamics_get_linear_value (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE, coords, diff --git a/app/paint/gimpdodgeburn.c b/app/paint/gimpdodgeburn.c index 25e43be664..e87e79a797 100644 --- a/app/paint/gimpdodgeburn.c +++ b/app/paint/gimpdodgeburn.c @@ -30,7 +30,6 @@ #include "core/gimp.h" #include "core/gimpdrawable.h" #include "core/gimpdynamics.h" -#include "core/gimpdynamicsoutput.h" #include "core/gimpimage.h" #include "gimpdodgeburn.h" @@ -121,7 +120,6 @@ gimp_dodge_burn_motion (GimpPaintCore *paint_core, gint paint_buffer_y; gdouble fade_point; gdouble opacity; - GimpDynamicsOutput *force_output; gdouble force; fade_point = gimp_paint_options_get_fade (paint_options, image, @@ -154,10 +152,7 @@ gimp_dodge_burn_motion (GimpPaintCore *paint_core, options->type, options->mode); - force_output = gimp_dynamics_get_output (dynamics, - GIMP_DYNAMICS_OUTPUT_FORCE); - - if (gimp_dynamics_output_is_enabled (force_output)) + if (gimp_dynamics_is_output_enabled (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE)) force = gimp_dynamics_get_linear_value (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE, coords, diff --git a/app/paint/gimperaser.c b/app/paint/gimperaser.c index 746647dbb1..00ff7e9e93 100644 --- a/app/paint/gimperaser.c +++ b/app/paint/gimperaser.c @@ -27,7 +27,6 @@ #include "core/gimp.h" #include "core/gimpdrawable.h" #include "core/gimpdynamics.h" -#include "core/gimpdynamicsoutput.h" #include "core/gimpimage.h" #include "gimperaser.h" @@ -116,7 +115,6 @@ gimp_eraser_motion (GimpPaintCore *paint_core, gint paint_buffer_y; GimpRGB background; GeglColor *color; - GimpDynamicsOutput *force_output; gdouble force; fade_point = gimp_paint_options_get_fade (paint_options, image, @@ -150,10 +148,7 @@ gimp_eraser_motion (GimpPaintCore *paint_core, else paint_mode = GIMP_NORMAL_MODE; - force_output = gimp_dynamics_get_output (dynamics, - GIMP_DYNAMICS_OUTPUT_FORCE); - - if (gimp_dynamics_output_is_enabled (force_output)) + if (gimp_dynamics_is_output_enabled (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE)) force = gimp_dynamics_get_linear_value (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE, coords, diff --git a/app/paint/gimpheal.c b/app/paint/gimpheal.c index 92dd5f7715..6aea8c0529 100644 --- a/app/paint/gimpheal.c +++ b/app/paint/gimpheal.c @@ -35,7 +35,6 @@ #include "core/gimpbrush.h" #include "core/gimpdrawable.h" #include "core/gimpdynamics.h" -#include "core/gimpdynamicsoutput.h" #include "core/gimperror.h" #include "core/gimpimage.h" #include "core/gimppickable.h" @@ -476,26 +475,22 @@ gimp_heal_motion (GimpSourceCore *source_core, gint paint_area_width, gint paint_area_height) { - GimpPaintCore *paint_core = GIMP_PAINT_CORE (source_core); - GimpContext *context = GIMP_CONTEXT (paint_options); - GimpDynamics *dynamics = GIMP_BRUSH_CORE (paint_core)->dynamics; - GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); - GeglBuffer *src_copy; - GeglBuffer *mask_buffer; - const GimpTempBuf *mask_buf; - gdouble fade_point; - GimpDynamicsOutput *force_output; - gdouble force; - gint mask_off_x; - gint mask_off_y; + GimpPaintCore *paint_core = GIMP_PAINT_CORE (source_core); + GimpContext *context = GIMP_CONTEXT (paint_options); + GimpDynamics *dynamics = GIMP_BRUSH_CORE (paint_core)->dynamics; + GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); + GeglBuffer *src_copy; + GeglBuffer *mask_buffer; + const GimpTempBuf *mask_buf; + gdouble fade_point; + gdouble force; + gint mask_off_x; + gint mask_off_y; fade_point = gimp_paint_options_get_fade (paint_options, image, paint_core->pixel_dist); - force_output = gimp_dynamics_get_output (dynamics, - GIMP_DYNAMICS_OUTPUT_FORCE); - - if (gimp_dynamics_output_is_enabled (force_output)) + if (gimp_dynamics_is_output_enabled (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE)) force = gimp_dynamics_get_linear_value (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE, coords, diff --git a/app/paint/gimppaintbrush.c b/app/paint/gimppaintbrush.c index ce82224eda..c86995ffb4 100644 --- a/app/paint/gimppaintbrush.c +++ b/app/paint/gimppaintbrush.c @@ -33,7 +33,6 @@ #include "core/gimpbrush.h" #include "core/gimpdrawable.h" #include "core/gimpdynamics.h" -#include "core/gimpdynamicsoutput.h" #include "core/gimpgradient.h" #include "core/gimpimage.h" #include "core/gimptempbuf.h" @@ -121,7 +120,6 @@ _gimp_paintbrush_motion (GimpPaintCore *paint_core, GimpPaintApplicationMode paint_appl_mode; gdouble fade_point; gdouble grad_point; - GimpDynamicsOutput *force_output; gdouble force; image = gimp_item_get_image (GIMP_ITEM (drawable)); @@ -199,10 +197,7 @@ _gimp_paintbrush_motion (GimpPaintCore *paint_core, g_object_unref (color); } - force_output = gimp_dynamics_get_output (dynamics, - GIMP_DYNAMICS_OUTPUT_FORCE); - - if (gimp_dynamics_output_is_enabled (force_output)) + if (gimp_dynamics_is_output_enabled (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE)) force = gimp_dynamics_get_linear_value (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE, coords, diff --git a/app/paint/gimppaintoptions.c b/app/paint/gimppaintoptions.c index 86a5364034..49a249ecec 100644 --- a/app/paint/gimppaintoptions.c +++ b/app/paint/gimppaintoptions.c @@ -854,26 +854,21 @@ gimp_paint_options_get_gradient_color (GimpPaintOptions *paint_options, gdouble pixel_dist, GimpRGB *color) { - GimpGradientOptions *gradient_options; - GimpGradient *gradient; - GimpDynamics *dynamics; - GimpDynamicsOutput *color_output; + GimpDynamics *dynamics; g_return_val_if_fail (GIMP_IS_PAINT_OPTIONS (paint_options), FALSE); g_return_val_if_fail (GIMP_IS_IMAGE (image), FALSE); g_return_val_if_fail (color != NULL, FALSE); - gradient_options = paint_options->gradient_options; - - gradient = gimp_context_get_gradient (GIMP_CONTEXT (paint_options)); - dynamics = gimp_context_get_dynamics (GIMP_CONTEXT (paint_options)); - color_output = gimp_dynamics_get_output (dynamics, - GIMP_DYNAMICS_OUTPUT_COLOR); - - if (gimp_dynamics_output_is_enabled (color_output)) + if (gimp_dynamics_is_output_enabled (dynamics, GIMP_DYNAMICS_OUTPUT_COLOR)) { + GimpGradientOptions *gradient_options = paint_options->gradient_options; + GimpGradient *gradient; + + gradient = gimp_context_get_gradient (GIMP_CONTEXT (paint_options)); + gimp_gradient_get_color_at (gradient, GIMP_CONTEXT (paint_options), NULL, grad_point, gradient_options->gradient_reverse, @@ -888,9 +883,8 @@ gimp_paint_options_get_gradient_color (GimpPaintOptions *paint_options, GimpBrushApplicationMode gimp_paint_options_get_brush_mode (GimpPaintOptions *paint_options) { - GimpDynamics *dynamics; - GimpDynamicsOutput *force_output; - gboolean dynamic_force = FALSE; + GimpDynamics *dynamics; + gboolean dynamic_force = FALSE; g_return_val_if_fail (GIMP_IS_PAINT_OPTIONS (paint_options), GIMP_BRUSH_SOFT); @@ -899,11 +893,8 @@ gimp_paint_options_get_brush_mode (GimpPaintOptions *paint_options) dynamics = gimp_context_get_dynamics (GIMP_CONTEXT (paint_options)); - force_output = gimp_dynamics_get_output (dynamics, - GIMP_DYNAMICS_OUTPUT_FORCE); - - if (force_output) - dynamic_force = gimp_dynamics_output_is_enabled (force_output); + dynamic_force = gimp_dynamics_is_output_enabled (dynamics, + GIMP_DYNAMICS_OUTPUT_FORCE); if (dynamic_force || (paint_options->brush_force > 0.0)) return GIMP_BRUSH_PRESSURE; diff --git a/app/paint/gimpsmudge.c b/app/paint/gimpsmudge.c index be54afc7ad..8c84a4d2ca 100644 --- a/app/paint/gimpsmudge.c +++ b/app/paint/gimpsmudge.c @@ -30,7 +30,6 @@ #include "core/gimpbrush.h" #include "core/gimpdrawable.h" #include "core/gimpdynamics.h" -#include "core/gimpdynamicsoutput.h" #include "core/gimpimage.h" #include "core/gimppickable.h" #include "core/gimptempbuf.h" @@ -234,23 +233,22 @@ gimp_smudge_motion (GimpPaintCore *paint_core, GimpPaintOptions *paint_options, const GimpCoords *coords) { - GimpSmudge *smudge = GIMP_SMUDGE (paint_core); - GimpSmudgeOptions *options = GIMP_SMUDGE_OPTIONS (paint_options); - GimpContext *context = GIMP_CONTEXT (paint_options); - GimpDynamics *dynamics = GIMP_BRUSH_CORE (paint_core)->dynamics; - GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); - GeglBuffer *paint_buffer; - gint paint_buffer_x; - gint paint_buffer_y; - gint paint_buffer_width; - gint paint_buffer_height; - gdouble fade_point; - gdouble opacity; - gdouble rate; - gdouble dynamic_rate; - gint x, y; - GimpDynamicsOutput *force_output; - gdouble force; + GimpSmudge *smudge = GIMP_SMUDGE (paint_core); + GimpSmudgeOptions *options = GIMP_SMUDGE_OPTIONS (paint_options); + GimpContext *context = GIMP_CONTEXT (paint_options); + GimpDynamics *dynamics = GIMP_BRUSH_CORE (paint_core)->dynamics; + GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); + GeglBuffer *paint_buffer; + gint paint_buffer_x; + gint paint_buffer_y; + gint paint_buffer_width; + gint paint_buffer_height; + gdouble fade_point; + gdouble opacity; + gdouble rate; + gdouble dynamic_rate; + gint x, y; + gdouble force; fade_point = gimp_paint_options_get_fade (paint_options, image, paint_core->pixel_dist); @@ -318,10 +316,7 @@ gimp_smudge_motion (GimpPaintCore *paint_core, paint_buffer, GEGL_RECTANGLE (0, 0, 0, 0)); - force_output = gimp_dynamics_get_output (dynamics, - GIMP_DYNAMICS_OUTPUT_FORCE); - - if (gimp_dynamics_output_is_enabled (force_output)) + if (gimp_dynamics_is_output_enabled (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE)) force = gimp_dynamics_get_linear_value (dynamics, GIMP_DYNAMICS_OUTPUT_FORCE, coords,