gimp r25690 - in trunk: . app/gegl app/tools
- From: mitch svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r25690 - in trunk: . app/gegl app/tools
- Date: Sat, 17 May 2008 17:57:40 +0000 (UTC)
Author: mitch
Date: Sat May 17 17:57:39 2008
New Revision: 25690
URL: http://svn.gnome.org/viewvc/gimp?rev=25690&view=rev
Log:
2008-05-17 Michael Natterer <mitch gimp org>
* app/tools/gimpimagemaptool.[ch]: add gimp_image_map_tool_edit_as().
* app/tools/gimplevelstool.c (levels_to_curves_callback): use it.
* app/gegl/gimpbrightnesscontrastconfig.[ch]: add
gimp_brightness_contrast_config_to_levels_config().
* app/tools/gimpbrightnesscontrasttool.c: implement "Edit as Levels".
Modified:
trunk/ChangeLog
trunk/app/gegl/gimpbrightnesscontrastconfig.c
trunk/app/gegl/gimpbrightnesscontrastconfig.h
trunk/app/tools/gimpbrightnesscontrasttool.c
trunk/app/tools/gimpimagemaptool.c
trunk/app/tools/gimpimagemaptool.h
trunk/app/tools/gimplevelstool.c
Modified: trunk/app/gegl/gimpbrightnesscontrastconfig.c
==============================================================================
--- trunk/app/gegl/gimpbrightnesscontrastconfig.c (original)
+++ trunk/app/gegl/gimpbrightnesscontrastconfig.c Sat May 17 17:57:39 2008
@@ -23,11 +23,13 @@
#include <gegl.h>
+#include "libgimpmath/gimpmath.h"
#include "libgimpconfig/gimpconfig.h"
#include "gegl-types.h"
#include "gimpbrightnesscontrastconfig.h"
+#include "gimplevelsconfig.h"
enum
@@ -154,3 +156,47 @@
"contrast", contrast,
NULL);
}
+
+GimpLevelsConfig *
+gimp_brightness_contrast_config_to_levels_config (GimpBrightnessContrastConfig *config)
+{
+ GimpLevelsConfig *levels;
+ gdouble brightness;
+ gdouble contrast;
+ gdouble value;
+
+ g_return_val_if_fail (GIMP_IS_BRIGHTNESS_CONTRAST_CONFIG (config), NULL);
+
+ levels = g_object_new (GIMP_TYPE_LEVELS_CONFIG, NULL);
+
+ brightness = config->brightness / 2.0;
+ contrast = (config->contrast < 0 ?
+ (config->contrast + 1.0) :
+ config->contrast * 4.0 + 1.0);
+
+ value = -0.5 * contrast + brightness + 0.5;
+
+ if (value < 0.0)
+ {
+ value = 0.0;
+
+ levels->low_input[GIMP_HISTOGRAM_VALUE] =
+ (-0.5 - brightness) / contrast + 0.5;
+ }
+
+ levels->low_output[GIMP_HISTOGRAM_VALUE] = value;
+
+ value = 0.5 * contrast + brightness + 0.5;
+
+ if (value > 1.0)
+ {
+ value = 1.0;
+
+ levels->high_input[GIMP_HISTOGRAM_VALUE] =
+ (0.5 - brightness) / contrast + 0.5;
+ }
+
+ levels->high_output[GIMP_HISTOGRAM_VALUE] = value;
+
+ return levels;
+}
Modified: trunk/app/gegl/gimpbrightnesscontrastconfig.h
==============================================================================
--- trunk/app/gegl/gimpbrightnesscontrastconfig.h (original)
+++ trunk/app/gegl/gimpbrightnesscontrastconfig.h Sat May 17 17:57:39 2008
@@ -55,5 +55,8 @@
void gimp_brightness_contrast_config_set_node (GimpBrightnessContrastConfig *config,
GeglNode *node);
+GimpLevelsConfig *
+gimp_brightness_contrast_config_to_levels_config (GimpBrightnessContrastConfig *config);
+
#endif /* __GIMP_BRIGHTNESS_CONTRAST_CONFIG_H__ */
Modified: trunk/app/tools/gimpbrightnesscontrasttool.c
==============================================================================
--- trunk/app/tools/gimpbrightnesscontrasttool.c (original)
+++ trunk/app/tools/gimpbrightnesscontrasttool.c Sat May 17 17:57:39 2008
@@ -37,6 +37,7 @@
#include "core/gimpimage.h"
#include "widgets/gimphelp-ids.h"
+#include "widgets/gimpwidgets-constructors.h"
#include "display/gimpdisplay.h"
@@ -88,6 +89,9 @@
static void brightness_contrast_contrast_changed (GtkAdjustment *adj,
GimpBrightnessContrastTool *bc_tool);
+static void brightness_contrast_to_levels_callback (GtkWidget *widget,
+ GimpBrightnessContrastTool *bc_tool);
+
G_DEFINE_TYPE (GimpBrightnessContrastTool, gimp_brightness_contrast_tool,
GIMP_TYPE_IMAGE_MAP_TOOL)
@@ -292,6 +296,7 @@
GimpBrightnessContrastConfig *config = bc_tool->config;
GtkWidget *table;
GtkWidget *slider;
+ GtkWidget *button;
GtkObject *data;
/* The table containing sliders */
@@ -331,6 +336,16 @@
g_signal_connect (data, "value-changed",
G_CALLBACK (brightness_contrast_contrast_changed),
bc_tool);
+
+ button = gimp_stock_button_new (GIMP_STOCK_TOOL_LEVELS,
+ _("Edit this Settings as Levels"));
+ gtk_box_pack_start (GTK_BOX (im_tool->main_vbox), button,
+ FALSE, FALSE, 0);
+ gtk_widget_show (button);
+
+ g_signal_connect (button, "clicked",
+ G_CALLBACK (brightness_contrast_to_levels_callback),
+ bc_tool);
}
static void
@@ -386,3 +401,18 @@
NULL);
}
}
+
+static void
+brightness_contrast_to_levels_callback (GtkWidget *widget,
+ GimpBrightnessContrastTool *bc_tool)
+{
+ GimpLevelsConfig *levels;
+
+ levels = gimp_brightness_contrast_config_to_levels_config (bc_tool->config);
+
+ gimp_image_map_tool_edit_as (GIMP_IMAGE_MAP_TOOL (bc_tool),
+ "gimp-levels-tool",
+ GIMP_CONFIG (levels));
+
+ g_object_unref (levels);
+}
Modified: trunk/app/tools/gimpimagemaptool.c
==============================================================================
--- trunk/app/tools/gimpimagemaptool.c (original)
+++ trunk/app/tools/gimpimagemaptool.c Sat May 17 17:57:39 2008
@@ -54,6 +54,7 @@
#include "gimpcoloroptions.h"
#include "gimpimagemaptool.h"
#include "gimptoolcontrol.h"
+#include "tool_manager.h"
#include "gimp-intl.h"
@@ -1063,3 +1064,35 @@
gimp_image_map_tool_preview (im_tool);
}
}
+
+void
+gimp_image_map_tool_edit_as (GimpImageMapTool *im_tool,
+ const gchar *new_tool_id,
+ GimpConfig *config)
+{
+ GimpDisplay *display;
+ GimpContext *user_context;
+ GimpToolInfo *tool_info;
+ GimpTool *new_tool;
+
+ g_return_if_fail (GIMP_IS_IMAGE_MAP_TOOL (im_tool));
+ g_return_if_fail (new_tool_id);
+ g_return_if_fail (GIMP_IS_CONFIG (config));
+
+ display = GIMP_TOOL (im_tool)->display;
+
+ user_context = gimp_get_user_context (display->gimp);
+
+ tool_info = (GimpToolInfo *)
+ gimp_container_get_child_by_name (display->gimp->tool_info_list,
+ new_tool_id);
+
+ gimp_context_set_tool (user_context, tool_info);
+ tool_manager_initialize_active (display->gimp, display);
+
+ new_tool = tool_manager_get_active (display->gimp);
+
+ gimp_config_copy (config,
+ GIMP_CONFIG (GIMP_IMAGE_MAP_TOOL (new_tool)->config),
+ 0);
+}
Modified: trunk/app/tools/gimpimagemaptool.h
==============================================================================
--- trunk/app/tools/gimpimagemaptool.h (original)
+++ trunk/app/tools/gimpimagemaptool.h Sat May 17 17:57:39 2008
@@ -93,6 +93,9 @@
/* temp hack for the gegl tool */
void gimp_image_map_tool_create_map (GimpImageMapTool *image_map_tool);
+void gimp_image_map_tool_edit_as (GimpImageMapTool *image_map_tool,
+ const gchar *new_tool_id,
+ GimpConfig *config);
#endif /* __GIMP_IMAGE_MAP_TOOL_H__ */
Modified: trunk/app/tools/gimplevelstool.c
==============================================================================
--- trunk/app/tools/gimplevelstool.c (original)
+++ trunk/app/tools/gimplevelstool.c Sat May 17 17:57:39 2008
@@ -34,9 +34,6 @@
#include "gegl/gimplevelsconfig.h"
#include "gegl/gimpoperationlevels.h"
-#include "core/gimp.h"
-#include "core/gimpcontainer.h"
-#include "core/gimpcontext.h"
#include "core/gimpdrawable.h"
#include "core/gimpdrawable-histogram.h"
#include "core/gimpimage.h"
@@ -51,7 +48,6 @@
#include "gimphistogramoptions.h"
#include "gimplevelstool.h"
-#include "tool_manager.h"
#include "gimp-intl.h"
@@ -681,7 +677,7 @@
G_CALLBACK (gimp_levels_tool_dialog_unmap),
tool);
- button = gimp_stock_button_new (GIMP_STOCK_TOOL_LEVELS,
+ button = gimp_stock_button_new (GIMP_STOCK_TOOL_CURVES,
_("Edit this Settings as Curves"));
gtk_box_pack_start (GTK_BOX (image_map_tool->main_vbox), button,
FALSE, FALSE, 0);
@@ -1137,31 +1133,12 @@
GimpLevelsTool *tool)
{
GimpCurvesConfig *curves;
- GimpDisplay *display;
- GimpContext *user_context;
- GimpToolInfo *tool_info;
- GimpTool *new_tool;
curves = gimp_levels_config_to_curves_config (tool->config);
- display = GIMP_TOOL (tool)->display;
+ gimp_image_map_tool_edit_as (GIMP_IMAGE_MAP_TOOL (tool),
+ "gimp-curves-tool",
+ GIMP_CONFIG (curves));
- user_context = gimp_get_user_context (display->gimp);
-
- tool_info = gimp_container_get_child_by_name (display->gimp->tool_info_list,
- "gimp-curves-tool");
-
- g_object_ref (tool);
-
- gimp_context_set_tool (user_context, tool_info);
- tool_manager_initialize_active (display->gimp, display);
-
- new_tool = tool_manager_get_active (display->gimp);
-
- gimp_config_copy (GIMP_CONFIG (curves),
- GIMP_CONFIG (GIMP_IMAGE_MAP_TOOL (new_tool)->config),
- 0);
-
- g_object_unref (tool);
g_object_unref (curves);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]