[gegl] focus-blur, variable-blur: add gamma property



commit 88c161b03443c3ad0d9cf3679d456fa6c7b51c53
Author: Øyvind Kolås <pippin gimp org>
Date:   Fri May 15 18:34:46 2020 +0200

    focus-blur, variable-blur: add gamma property
    
    Add a gamma property for adjusting the distribution of radiuses to
    levels in variable blur. Set to 1.5 for now which gives us more low
    radius levels.

 operations/common-cxx/focus-blur.c    | 5 +++++
 operations/common-cxx/variable-blur.c | 9 +++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/operations/common-cxx/focus-blur.c b/operations/common-cxx/focus-blur.c
index 51dc87ca1..2b3c1c2e8 100644
--- a/operations/common-cxx/focus-blur.c
+++ b/operations/common-cxx/focus-blur.c
@@ -43,6 +43,9 @@ property_int (blur_levels, _("Blur levels"), 8)
     description (_("Number of blur levels"))
     value_range (2, 16)
 
+property_double (gamma, _("Gamma"), 1.5)
+    value_range (0.0, 10.0)
+
 property_enum (shape, _("Shape"),
                GeglFocusBlurShape,
                gegl_focus_blur_shape,
@@ -207,6 +210,8 @@ attach (GeglOperation *operation)
                                 nodes->variable_blur, "radius");
   gegl_operation_meta_redirect (operation,            "blur-levels",
                                 nodes->variable_blur, "levels");
+  gegl_operation_meta_redirect (operation,            "gamma",
+                                nodes->variable_blur, "gamma");
 
   gegl_operation_meta_watch_nodes (operation,
                                    nodes->color,
diff --git a/operations/common-cxx/variable-blur.c b/operations/common-cxx/variable-blur.c
index 42f8ce23e..132523785 100644
--- a/operations/common-cxx/variable-blur.c
+++ b/operations/common-cxx/variable-blur.c
@@ -36,6 +36,9 @@ property_int (levels, _("Levels"), 8)
     description (_("Number of blur levels"))
     value_range (2, MAX_LEVELS)
 
+property_double (gamma, _("Gamma"), 1.0)
+    value_range (0.0, 10.0)
+
 property_boolean (linear_mask, _("Linear mask"), FALSE)
     description (_("Use linear mask values"))
 
@@ -73,8 +76,8 @@ update (GeglOperation *operation)
           gegl_node_link (nodes->input, nodes->gaussian_blur[i]);
 
           gegl_node_set (nodes->gaussian_blur[i],
-                         "std-dev-x", i * o->radius / (o->levels - 1),
-                         "std-dev-y", i * o->radius / (o->levels - 1),
+                         "std-dev-x", o->radius * powf(1.0 * i / (o->levels - 1),o->gamma),
+                         "std-dev-y", o->radius * powf(1.0 * i / (o->levels - 1),o->gamma),
                          NULL);
         }
 
@@ -104,6 +107,8 @@ attach (GeglOperation *operation)
     "operation", "gegl:piecewise-blend",
     NULL);
 
+  gegl_operation_meta_redirect (operation,              "gamma",
+                                nodes->piecewise_blend, "gamma");
   gegl_operation_meta_redirect (operation,              "levels",
                                 nodes->piecewise_blend, "levels");
   gegl_operation_meta_redirect (operation,              "linear-mask",


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