[gegl] focus-blur, variable-blur: add gamma property
- From: Øyvind "pippin" Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] focus-blur, variable-blur: add gamma property
- Date: Fri, 15 May 2020 16:38:43 +0000 (UTC)
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]