[gimp] app: Fix dynamics mixing for inputs&outputs that have paint options toggles



commit b95dda6eeac7fc31f4dc70d7c4c27572d4df229f
Author: Alexia Death <alexiadeath gmail com>
Date:   Fri Dec 18 20:20:45 2009 +0200

    app: Fix dynamics mixing for inputs&outputs that have paint options toggles

 app/core/gimpdynamicsoutput.c |   39 ++++++++++++++++++++++++++++++---------
 app/core/gimpdynamicsoutput.h |    3 +++
 app/paint/gimpairbrush.c      |    2 ++
 app/paint/gimpbrushcore.c     |    8 ++++++++
 app/paint/gimpclone.c         |    1 +
 app/paint/gimpconvolve.c      |    2 ++
 app/paint/gimpdodgeburn.c     |    2 ++
 app/paint/gimperaser.c        |    2 ++
 app/paint/gimpheal.c          |    1 +
 app/paint/gimppaintbrush.c    |    3 +++
 app/paint/gimpsmudge.c        |    3 +++
 app/paint/gimpsourcecore.c    |    1 +
 12 files changed, 58 insertions(+), 9 deletions(-)
---
diff --git a/app/core/gimpdynamicsoutput.c b/app/core/gimpdynamicsoutput.c
index 7e5ad8e..4c179d3 100644
--- a/app/core/gimpdynamicsoutput.c
+++ b/app/core/gimpdynamicsoutput.c
@@ -24,6 +24,9 @@
 
 #include "core-types.h"
 
+#include "paint/gimppaintoptions.h"
+
+
 #include "gimpcurve.h"
 #include "gimpdynamicsoutput.h"
 
@@ -243,6 +246,7 @@ gimp_dynamics_output_is_enabled (GimpDynamicsOutput *output)
 gdouble
 gimp_dynamics_output_get_linear_value (GimpDynamicsOutput *output,
                                        const GimpCoords   *coords,
+									   GimpPaintOptions   *options,
                                        gdouble             fade_point)
 {
   gdouble total   = 0.0;
@@ -279,10 +283,15 @@ gimp_dynamics_output_get_linear_value (GimpDynamicsOutput *output,
       factors++;
     }
 
-  if (output->use_fade)
+  if ((output->use_fade) && (options))
     {
-      total += fade_point;
-      factors++;
+	  GimpFadeOptions *fade_options = options->fade_options;
+
+	  if (fade_options->use_fade)
+	    {
+          total += fade_point;
+          factors++;
+		}
     }
 
   if (factors > 0)
@@ -299,6 +308,7 @@ gimp_dynamics_output_get_linear_value (GimpDynamicsOutput *output,
 gdouble
 gimp_dynamics_output_get_angular_value (GimpDynamicsOutput *output,
                                         const GimpCoords   *coords,
+										GimpPaintOptions   *options,
                                         gdouble             fade_point)
 {
   gdouble total   = 0.0;
@@ -368,10 +378,15 @@ gimp_dynamics_output_get_angular_value (GimpDynamicsOutput *output,
       factors++;
     }
 
-  if (output->use_fade)
+  if ((output->use_fade) && (options))
     {
-      total += fade_point;
-      factors++;
+	  GimpFadeOptions *fade_options = options->fade_options;
+
+	  if (fade_options->use_fade)
+	    {
+          total += fade_point;
+          factors++;
+		}
     }
 
   if (factors > 0)
@@ -388,6 +403,7 @@ gimp_dynamics_output_get_angular_value (GimpDynamicsOutput *output,
 gdouble
 gimp_dynamics_output_get_aspect_value (GimpDynamicsOutput *output,
                                        const GimpCoords   *coords,
+									   GimpPaintOptions   *options,
                                        gdouble             fade_point)
 {
   gdouble total   = 0.0;
@@ -438,10 +454,15 @@ gimp_dynamics_output_get_aspect_value (GimpDynamicsOutput *output,
       factors++;
     }
 
-  if (output->use_fade)
+  if ((output->use_fade) && (options))
     {
-      total += fade_point;
-      factors++;
+	  GimpFadeOptions *fade_options = options->fade_options;
+
+	  if (fade_options->use_fade)
+	    {
+		  total += fade_point;
+          factors++;
+		}
     }
 
   if (factors > 0)
diff --git a/app/core/gimpdynamicsoutput.h b/app/core/gimpdynamicsoutput.h
index 6dac2fe..07df88e 100644
--- a/app/core/gimpdynamicsoutput.h
+++ b/app/core/gimpdynamicsoutput.h
@@ -65,12 +65,15 @@ gboolean   gimp_dynamics_output_is_enabled         (GimpDynamicsOutput *output);
 
 gdouble    gimp_dynamics_output_get_linear_value   (GimpDynamicsOutput *output,
                                                     const GimpCoords   *coords,
+													GimpPaintOptions   *options,
                                                     gdouble             fade_point);
 gdouble    gimp_dynamics_output_get_angular_value  (GimpDynamicsOutput *output,
                                                     const GimpCoords   *coords,
+													GimpPaintOptions   *options,
                                                     gdouble             fade_point);
 gdouble    gimp_dynamics_output_get_aspect_value   (GimpDynamicsOutput *output,
                                                     const GimpCoords   *coords,
+													GimpPaintOptions   *options,
                                                     gdouble             fade_point);
 
 
diff --git a/app/paint/gimpairbrush.c b/app/paint/gimpairbrush.c
index feca5b0..8cdbcf9 100644
--- a/app/paint/gimpairbrush.c
+++ b/app/paint/gimpairbrush.c
@@ -156,6 +156,7 @@ gimp_airbrush_paint (GimpPaintCore    *paint_core,
           dynamic_rate =
             gimp_dynamics_output_get_linear_value (dynamics->rate_output,
                                                    coords,
+												   paint_options,
                                                    fade_point);
 
           timeout = 10000 / (options->rate * dynamic_rate);
@@ -198,6 +199,7 @@ gimp_airbrush_motion (GimpPaintCore    *paint_core,
   opacity  = options->pressure / 100.0;
   opacity *= gimp_dynamics_output_get_linear_value(GIMP_BRUSH_CORE(paint_core)->dynamics->opacity_output,
                                                    coords,
+												   paint_options,
                                                    fade_point);
 
 
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index cecdc9d..82b2c73 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -425,14 +425,17 @@ gimp_brush_core_start (GimpPaintCore     *paint_core,
 
           core->scale *= gimp_dynamics_output_get_linear_value (core->dynamics->size_output,
                                                                 coords,
+																paint_options,
                                                                 fade_point);
 
           core->angle += gimp_dynamics_output_get_angular_value (core->dynamics->angle_output,
                                                                  coords,
+																 paint_options,
                                                                  fade_point);
 
           core->aspect_ratio *= gimp_dynamics_output_get_aspect_value (core->dynamics->aspect_ratio_output,
                                                                        coords,
+																	   paint_options,
                                                                        fade_point);
         }
     }
@@ -519,6 +522,7 @@ gimp_brush_core_interpolate (GimpPaintCore    *paint_core,
     {
       dyn_spacing = gimp_dynamics_output_get_linear_value (core->dynamics->spacing_output,
                                                            &current_coords,
+														   paint_options,
                                                            fade_point);
       /* Dynamic spacing assumes that the value set in core is the min value
        * and the max is full 200% spacing. This approach differs ofrom the usual
@@ -747,6 +751,7 @@ gimp_brush_core_interpolate (GimpPaintCore    *paint_core,
 
           dyn_jitter = core->jitter * gimp_dynamics_output_get_linear_value (core->dynamics->jitter_output,
                                                                              &current_coords,
+																			 paint_options,
                                                                              fade_point);
 
           jitter_dist  = g_rand_double_range (core->rand, 0, dyn_jitter);
@@ -814,14 +819,17 @@ gimp_brush_core_get_paint_area (GimpPaintCore    *paint_core,
 
           core->scale *= gimp_dynamics_output_get_linear_value (core->dynamics->size_output,
                                                                 coords,
+																paint_options,
                                                                 fade_point);
 
           core->angle += gimp_dynamics_output_get_angular_value (core->dynamics->angle_output,
                                                                  coords,
+																 paint_options,
                                                                  fade_point);
 
           core->aspect_ratio *= gimp_dynamics_output_get_aspect_value (core->dynamics->aspect_ratio_output,
                                                                        coords,
+																	   paint_options,
                                                                        fade_point);
         }
     }
diff --git a/app/paint/gimpclone.c b/app/paint/gimpclone.c
index d51c57e..8f1486c 100644
--- a/app/paint/gimpclone.c
+++ b/app/paint/gimpclone.c
@@ -245,6 +245,7 @@ gimp_clone_motion (GimpSourceCore   *source_core,
 
   hardness = gimp_dynamics_output_get_linear_value (dynamics->hardness_output,
                                                     coords,
+													paint_options,
                                                     fade_point);
 
   gimp_brush_core_paste_canvas (GIMP_BRUSH_CORE (paint_core), drawable,
diff --git a/app/paint/gimpconvolve.c b/app/paint/gimpconvolve.c
index e166406..d4934c7 100644
--- a/app/paint/gimpconvolve.c
+++ b/app/paint/gimpconvolve.c
@@ -151,6 +151,7 @@ gimp_convolve_motion (GimpPaintCore    *paint_core,
 
   opacity = gimp_dynamics_output_get_linear_value (dynamics->opacity_output,
                                                    coords,
+												   paint_options,
                                                    fade_point);
   if (opacity == 0.0)
     return;
@@ -164,6 +165,7 @@ gimp_convolve_motion (GimpPaintCore    *paint_core,
 
   rate *= gimp_dynamics_output_get_linear_value (dynamics->rate_output,
                                                  coords,
+												 paint_options,
                                                  fade_point);
 
   gimp_convolve_calculate_matrix (convolve, options->type,
diff --git a/app/paint/gimpdodgeburn.c b/app/paint/gimpdodgeburn.c
index 5e5bf39..1546fc2 100644
--- a/app/paint/gimpdodgeburn.c
+++ b/app/paint/gimpdodgeburn.c
@@ -190,6 +190,7 @@ gimp_dodge_burn_motion (GimpPaintCore    *paint_core,
 
   opacity = gimp_dynamics_output_get_linear_value (dynamics->opacity_output,
                                                    coords,
+												   paint_options,
                                                    fade_point);
   if (opacity == 0.0)
     return;
@@ -256,6 +257,7 @@ gimp_dodge_burn_motion (GimpPaintCore    *paint_core,
 
   hardness = gimp_dynamics_output_get_linear_value (dynamics->hardness_output,
                                                     coords,
+													paint_options,
                                                     fade_point);
 
   /* Replace the newly dodgedburned area (canvas_buf) to the image */
diff --git a/app/paint/gimperaser.c b/app/paint/gimperaser.c
index 4f90b1c..53d605a 100644
--- a/app/paint/gimperaser.c
+++ b/app/paint/gimperaser.c
@@ -125,6 +125,7 @@ gimp_eraser_motion (GimpPaintCore    *paint_core,
 
   opacity = gimp_dynamics_output_get_linear_value (dynamics->opacity_output,
                                                    coords,
+												   paint_options,
                                                    fade_point);
   if (opacity == 0.0)
     return;
@@ -146,6 +147,7 @@ gimp_eraser_motion (GimpPaintCore    *paint_core,
 
   hardness = gimp_dynamics_output_get_linear_value (dynamics->hardness_output,
                                                     coords,
+													paint_options,
                                                     fade_point);
 
   gimp_brush_core_paste_canvas (GIMP_BRUSH_CORE (paint_core), drawable,
diff --git a/app/paint/gimpheal.c b/app/paint/gimpheal.c
index d26cb63..a5a6bac 100644
--- a/app/paint/gimpheal.c
+++ b/app/paint/gimpheal.c
@@ -450,6 +450,7 @@ gimp_heal_motion (GimpSourceCore   *source_core,
 
   hardness = gimp_dynamics_output_get_linear_value (dynamics->hardness_output,
                                                     coords,
+													paint_options,
                                                     fade_point);
 
   mask_buf = gimp_brush_core_get_brush_mask (GIMP_BRUSH_CORE (source_core),
diff --git a/app/paint/gimppaintbrush.c b/app/paint/gimppaintbrush.c
index ab558b4..d2bc7b0 100644
--- a/app/paint/gimppaintbrush.c
+++ b/app/paint/gimppaintbrush.c
@@ -128,6 +128,7 @@ _gimp_paintbrush_motion (GimpPaintCore    *paint_core,
 
   opacity *= gimp_dynamics_output_get_linear_value (dynamics->opacity_output,
                                                     coords,
+													paint_options,
                                                     fade_point);
   if (opacity == 0.0)
     return;
@@ -141,6 +142,7 @@ _gimp_paintbrush_motion (GimpPaintCore    *paint_core,
 
   grad_point = gimp_dynamics_output_get_linear_value (dynamics->color_output,
                                                       coords,
+													  paint_options,
                                                       fade_point);
 
   /* optionally take the color from the current gradient */
@@ -188,6 +190,7 @@ _gimp_paintbrush_motion (GimpPaintCore    *paint_core,
 
   hardness = gimp_dynamics_output_get_linear_value (dynamics->hardness_output,
                                                     coords,
+													paint_options,
                                                     fade_point);
 
   /* finally, let the brush core paste the colored area on the canvas */
diff --git a/app/paint/gimpsmudge.c b/app/paint/gimpsmudge.c
index 3102eb3..6f77710 100644
--- a/app/paint/gimpsmudge.c
+++ b/app/paint/gimpsmudge.c
@@ -262,6 +262,7 @@ gimp_smudge_motion (GimpPaintCore    *paint_core,
 
   opacity = gimp_dynamics_output_get_linear_value (dynamics->opacity_output,
                                                    coords,
+												   paint_options,
                                                    fade_point);
   if (opacity == 0.0)
     return;
@@ -281,6 +282,7 @@ gimp_smudge_motion (GimpPaintCore    *paint_core,
   /* Enable dynamic rate */
   dynamic_rate = gimp_dynamics_output_get_linear_value (dynamics->rate_output,
                                                         coords,
+														paint_options,
                                                         fade_point);
 
   rate = (options->rate / 100.0) * dynamic_rate;
@@ -324,6 +326,7 @@ gimp_smudge_motion (GimpPaintCore    *paint_core,
 
   hardness = gimp_dynamics_output_get_linear_value (dynamics->hardness_output,
                                                     coords,
+													paint_options,
                                                     fade_point);
 
   gimp_brush_core_replace_canvas (GIMP_BRUSH_CORE (paint_core), drawable,
diff --git a/app/paint/gimpsourcecore.c b/app/paint/gimpsourcecore.c
index 3e644d3..9218d7e 100644
--- a/app/paint/gimpsourcecore.c
+++ b/app/paint/gimpsourcecore.c
@@ -366,6 +366,7 @@ gimp_source_core_motion (GimpSourceCore   *source_core,
 
   opacity = gimp_dynamics_output_get_linear_value (dynamics->opacity_output,
                                                    coords,
+												   paint_options,
                                                    fade_point);
   if (opacity == 0.0)
     return;



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