[gimp] app: make GimpDrawableFilter's color management more correct
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: make GimpDrawableFilter's color management more correct
- Date: Wed, 22 Feb 2017 21:31:31 +0000 (UTC)
commit 8e2ad168af6fe8b9b834d24b6b1a7b0e5f10eb05
Author: Michael Natterer <mitch gimp org>
Date: Wed Feb 22 22:29:24 2017 +0100
app: make GimpDrawableFilter's color management more correct
Need to convert both from the drawable's profile to the filter's input
format and from the filter's output format back to the drawable's
profile. This change fixes things for the case where the filter's
input and output formats are different.
app/core/gimpdrawablefilter.c | 29 +++++++++++++++++++++--------
1 files changed, 21 insertions(+), 8 deletions(-)
---
diff --git a/app/core/gimpdrawablefilter.c b/app/core/gimpdrawablefilter.c
index dc96f3e..87db8f2 100644
--- a/app/core/gimpdrawablefilter.c
+++ b/app/core/gimpdrawablefilter.c
@@ -659,18 +659,31 @@ gimp_drawable_filter_sync_transform (GimpDrawableFilter *filter)
if (filter->color_managed)
{
- const Babl *filter_format;
- GimpColorProfile *filter_profile;
+ const Babl *input_format;
+ const Babl *output_format;
+ GimpColorProfile *input_profile;
+ GimpColorProfile *output_profile;
GimpColorProfile *drawable_profile;
- filter_format = gimp_gegl_node_get_format (filter->operation, "output");
+ input_format = gimp_gegl_node_get_format (filter->operation, "input");
+ output_format = gimp_gegl_node_get_format (filter->operation, "output");
- g_printerr ("filter format: %s\n", babl_get_name (filter_format));
+ g_printerr ("format before filter: %s\n",
+ babl_get_name (gimp_gegl_node_get_format (filter->cast_before,
+ "output")));
+ g_printerr ("filter input format: %s\n", babl_get_name (input_format));
+ g_printerr ("filter output format: %s\n", babl_get_name (output_format));
+ g_printerr ("format after filter: %s\n",
+ babl_get_name (gimp_gegl_node_get_format (filter->cast_after,
+ "input")));
- filter_profile = gimp_babl_format_get_color_profile (filter_format);
+ input_profile = gimp_babl_format_get_color_profile (input_format);
+ output_profile = gimp_babl_format_get_color_profile (output_format);
drawable_profile = gimp_color_managed_get_color_profile (managed);
- if (! gimp_color_transform_can_gegl_copy (filter_profile,
+ if (! gimp_color_transform_can_gegl_copy (drawable_profile,
+ input_profile) ||
+ ! gimp_color_transform_can_gegl_copy (output_profile,
drawable_profile))
{
g_printerr ("using gimp:profile-transform\n");
@@ -678,12 +691,12 @@ gimp_drawable_filter_sync_transform (GimpDrawableFilter *filter)
gegl_node_set (filter->transform_before,
"operation", "gimp:profile-transform",
"src-profile", drawable_profile,
- "dest-profile", filter_profile,
+ "dest-profile", input_profile,
NULL);
gegl_node_set (filter->transform_after,
"operation", "gimp:profile-transform",
- "src-profile", filter_profile,
+ "src-profile", output_profile,
"dest-profile", drawable_profile,
NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]