[gimp] Create custom UI for GEGL-based Shadows-Highlights filter...



commit 3364ee2af43ef189cc7d76bf4925d80bb8d32a8a
Author: Alexandre Prokoudine <alexandre prokoudine gmail com>
Date:   Fri Jan 5 05:56:08 2018 +0300

    Create custom UI for GEGL-based Shadows-Highlights filter...
    
    ... and place it in menu

 app/actions/filters-actions.c                |    5 +
 app/propgui/Makefile.am                      |    2 +
 app/propgui/gimppropgui-shadows-highlights.c |  123 ++++++++++++++++++++++++++
 app/propgui/gimppropgui-shadows-highlights.h |   35 +++++++
 app/propgui/gimppropgui.c                    |    3 +
 app/tools/gimpgegltool.c                     |    1 +
 menus/image-menu.xml.in                      |    1 +
 7 files changed, 170 insertions(+), 0 deletions(-)
---
diff --git a/app/actions/filters-actions.c b/app/actions/filters-actions.c
index 496d831..109f7e6 100644
--- a/app/actions/filters-actions.c
+++ b/app/actions/filters-actions.c
@@ -568,6 +568,11 @@ static const GimpStringActionEntry filters_interactive_actions[] =
     "gegl:sepia",
     GIMP_HELP_FILTER_SEPIA },
 
+  { "filters-shadows-highlights", GIMP_ICON_GEGL,
+    NC_("filters-action", "S_hadows-Highlights..."), NULL, NULL,
+    "gegl:shadows-highlights",
+    GIMP_HELP_FILTER_EXPOSURE },
+
   { "filters-shift", GIMP_ICON_GEGL,
     NC_("filters-action", "_Shift..."), NULL, NULL,
     "gegl:shift",
diff --git a/app/propgui/Makefile.am b/app/propgui/Makefile.am
index e94e9eb..6fca8bd 100644
--- a/app/propgui/Makefile.am
+++ b/app/propgui/Makefile.am
@@ -37,6 +37,8 @@ libapppropgui_a_SOURCES = \
        gimppropgui-generic.h                   \
        gimppropgui-hue-saturation.c            \
        gimppropgui-hue-saturation.h            \
+       gimppropgui-shadows-highlights.c        \
+       gimppropgui-shadows-highlights.h        \
        gimppropgui-spiral.c                    \
        gimppropgui-spiral.h                    \
        gimppropgui-supernova.c                 \
diff --git a/app/propgui/gimppropgui-shadows-highlights.c b/app/propgui/gimppropgui-shadows-highlights.c
new file mode 100644
index 0000000..48a13f7
--- /dev/null
+++ b/app/propgui/gimppropgui-shadows-highlights.c
@@ -0,0 +1,123 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis
+ *
+ * gimppropgui-shadows-highlights.c
+ * Copyright (C) 2002-2014  Michael Natterer <mitch gimp org>
+ *                          Sven Neumann <sven gimp org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+#include <gtk/gtk.h>
+
+#include "libgimpwidgets/gimpwidgets.h"
+
+#include "propgui-types.h"
+
+#include "core/gimpcontext.h"
+
+#include "gimppropgui.h"
+#include "gimppropgui-shadows-highlights.h"
+
+#include "gimp-intl.h"
+
+
+GtkWidget *
+_gimp_prop_gui_new_shadows_highlights (GObject                  *config,
+                                      GParamSpec              **param_specs,
+                                      guint                     n_param_specs,
+                                      GeglRectangle            *area,
+                                      GimpContext              *context,
+                                      GimpCreatePickerFunc      create_picker_func,
+                                      GimpCreateControllerFunc  create_controller_func,
+                                      gpointer                  creator)
+{
+  GtkWidget   *main_vbox;
+  GtkWidget   *frame;
+  GtkWidget   *vbox;
+  GtkWidget   *checkbox;
+  GtkWidget   *scale;
+  const gchar *label;
+
+  g_return_val_if_fail (G_IS_OBJECT (config), NULL);
+  g_return_val_if_fail (param_specs != NULL, NULL);
+  g_return_val_if_fail (n_param_specs > 0, NULL);
+  g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
+
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
+
+  frame = gimp_frame_new (_("Shadows"));
+  gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
+  gtk_widget_show (frame);
+
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
+  gtk_container_add (GTK_CONTAINER (frame), vbox);
+  gtk_widget_show (vbox);
+
+  scale = gimp_prop_widget_new (config, "shadows",
+                                area, context, NULL, NULL, NULL, &label);
+  gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
+  gtk_widget_show (scale);
+
+  scale = gimp_prop_widget_new (config, "shadows_ccorrect",
+                                area, context, NULL, NULL, NULL, &label);
+  gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
+  gtk_widget_show (scale);
+
+  frame = gimp_frame_new (_("Highlights"));
+  gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
+  gtk_widget_show (frame);
+
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
+  gtk_container_add (GTK_CONTAINER (frame), vbox);
+  gtk_widget_show (vbox);
+
+  scale = gimp_prop_widget_new (config, "highlights",
+                                area, context, NULL, NULL, NULL, &label);
+  gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
+  gtk_widget_show (scale);
+
+  scale = gimp_prop_widget_new (config, "highlights_ccorrect",
+                                area, context, NULL, NULL, NULL, &label);
+  gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
+  gtk_widget_show (scale);
+
+  frame = gimp_frame_new (_("Common"));
+  gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
+  gtk_widget_show (frame);
+
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
+  gtk_container_add (GTK_CONTAINER (frame), vbox);
+  gtk_widget_show (vbox);
+
+  scale = gimp_prop_widget_new (config, "whitepoint",
+                                area, context, NULL, NULL, NULL, &label);
+  gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
+  gtk_widget_show (scale);
+
+  scale = gimp_prop_widget_new (config, "radius",
+                                area, context, NULL, NULL, NULL, &label);
+  gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
+  gtk_widget_show (scale);
+
+  scale = gimp_prop_widget_new (config, "compress",
+                                area, context, NULL, NULL, NULL, &label);
+  gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
+  gtk_widget_show (scale);
+
+  return main_vbox;
+}
diff --git a/app/propgui/gimppropgui-shadows-highlights.h b/app/propgui/gimppropgui-shadows-highlights.h
new file mode 100644
index 0000000..e9da17c
--- /dev/null
+++ b/app/propgui/gimppropgui-shadows-highlights.h
@@ -0,0 +1,35 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis
+ *
+ * gimppropgui-shadows-highlights.h
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GIMP_PROP_GUI_SHADOWS_HIGHLIGHTS_H__
+#define __GIMP_PROP_GUI_SHADOWS_HIGHLIGHTS_H__
+
+
+GtkWidget *
+_gimp_prop_gui_new_shadows_highlights (GObject                  *config,
+                                      GParamSpec              **param_specs,
+                                      guint                     n_param_specs,
+                                      GeglRectangle            *area,
+                                      GimpContext              *context,
+                                      GimpCreatePickerFunc      create_picker_func,
+                                      GimpCreateControllerFunc  create_controller_func,
+                                      gpointer                  creator);
+
+
+#endif /* __GIMP_PROP_GUI_SHADOWS_HIGHLIGHTS_H__ */
diff --git a/app/propgui/gimppropgui.c b/app/propgui/gimppropgui.c
index 6ea9218..c274483 100644
--- a/app/propgui/gimppropgui.c
+++ b/app/propgui/gimppropgui.c
@@ -54,6 +54,7 @@
 #include "gimppropgui-eval.h"
 #include "gimppropgui-generic.h"
 #include "gimppropgui-hue-saturation.h"
+#include "gimppropgui-shadows-highlights.h"
 #include "gimppropgui-spiral.h"
 #include "gimppropgui-supernova.h"
 #include "gimppropgui-utils.h"
@@ -449,6 +450,8 @@ gui_new_funcs[] =
     _gimp_prop_gui_new_channel_mixer },
   { "GimpGegl-gegl-diffraction-patterns-config",
     _gimp_prop_gui_new_diffraction_patterns },
+  { "GimpGegl-gegl-shadows-highlights-config",
+    _gimp_prop_gui_new_shadows_highlights },
   { "GimpGegl-gegl-spiral-config",
     _gimp_prop_gui_new_spiral },
   { "GimpGegl-gegl-supernova-config",
diff --git a/app/tools/gimpgegltool.c b/app/tools/gimpgegltool.c
index 55a8464..f553ca9 100644
--- a/app/tools/gimpgegltool.c
+++ b/app/tools/gimpgegltool.c
@@ -222,6 +222,7 @@ gimp_gegl_tool_operation_blacklisted (const gchar *name,
     "gegl:ripple",
     "gegl:saturation",
     "gegl:sepia",
+    "gegl:shadows-highlights",
     "gegl:shift",
     "gegl:simplex-noise",
     "gegl:sinus",
diff --git a/menus/image-menu.xml.in b/menus/image-menu.xml.in
index 9aed88b..dd99954 100644
--- a/menus/image-menu.xml.in
+++ b/menus/image-menu.xml.in
@@ -568,6 +568,7 @@
       <menuitem action="filters-hue-saturation" />
       <menuitem action="filters-saturation" />
       <menuitem action="filters-exposure" />
+      <menuitem action="filters-shadows-highlights" />
       <menuitem action="tools-brightness-contrast" />
       <menuitem action="tools-levels" />
       <menuitem action="tools-curves" />


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