[gimp] Create custom UI for GEGL-based Shadows-Highlights filter...
- From: Alexandre Prokoudine <aprokoudine src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Create custom UI for GEGL-based Shadows-Highlights filter...
- Date: Fri, 5 Jan 2018 02:57:03 +0000 (UTC)
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]