[gimp] app: add a per-image "is color managed" switch
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add a per-image "is color managed" switch
- Date: Sun, 8 May 2016 16:38:03 +0000 (UTC)
commit 81845552ef858211e56f933c10e63c845927d38e
Author: Michael Natterer <mitch gimp org>
Date: Sun May 8 18:02:57 2016 +0200
app: add a per-image "is color managed" switch
in order to enable/disable color management for this image. Completely
unused at the moment.
app/core/core-enums.c | 2 ++
app/core/core-enums.h | 1 +
app/core/gimpimage-color-profile.c | 33 +++++++++++++++++++++++++++++++++
app/core/gimpimage-color-profile.h | 5 +++++
app/core/gimpimage-private.h | 1 +
app/core/gimpimage-undo-push.c | 12 ++++++++++++
app/core/gimpimage-undo-push.h | 2 ++
app/core/gimpimage.c | 2 ++
app/core/gimpimageundo.c | 15 +++++++++++++++
app/core/gimpimageundo.h | 1 +
10 files changed, 74 insertions(+), 0 deletions(-)
---
diff --git a/app/core/core-enums.c b/app/core/core-enums.c
index 6d94570..7436fb0 100644
--- a/app/core/core-enums.c
+++ b/app/core/core-enums.c
@@ -824,6 +824,7 @@ gimp_undo_type_get_type (void)
{ GIMP_UNDO_IMAGE_GRID, "GIMP_UNDO_IMAGE_GRID", "image-grid" },
{ GIMP_UNDO_IMAGE_METADATA, "GIMP_UNDO_IMAGE_METADATA", "image-metadata" },
{ GIMP_UNDO_IMAGE_COLORMAP, "GIMP_UNDO_IMAGE_COLORMAP", "image-colormap" },
+ { GIMP_UNDO_IMAGE_COLOR_MANAGED, "GIMP_UNDO_IMAGE_COLOR_MANAGED", "image-color-managed" },
{ GIMP_UNDO_GUIDE, "GIMP_UNDO_GUIDE", "guide" },
{ GIMP_UNDO_SAMPLE_POINT, "GIMP_UNDO_SAMPLE_POINT", "sample-point" },
{ GIMP_UNDO_DRAWABLE, "GIMP_UNDO_DRAWABLE", "drawable" },
@@ -915,6 +916,7 @@ gimp_undo_type_get_type (void)
{ GIMP_UNDO_IMAGE_GRID, NC_("undo-type", "Grid"), NULL },
{ GIMP_UNDO_IMAGE_METADATA, NC_("undo-type", "Change metadata"), NULL },
{ GIMP_UNDO_IMAGE_COLORMAP, NC_("undo-type", "Change indexed palette"), NULL },
+ { GIMP_UNDO_IMAGE_COLOR_MANAGED, NC_("undo-type", "Change color managed state"), NULL },
{ GIMP_UNDO_GUIDE, NC_("undo-type", "Guide"), NULL },
{ GIMP_UNDO_SAMPLE_POINT, NC_("undo-type", "Sample Point"), NULL },
{ GIMP_UNDO_DRAWABLE, NC_("undo-type", "Layer/Channel"), NULL },
diff --git a/app/core/core-enums.h b/app/core/core-enums.h
index a139eb1..2fbc822 100644
--- a/app/core/core-enums.h
+++ b/app/core/core-enums.h
@@ -415,6 +415,7 @@ typedef enum /*< pdb-skip >*/
GIMP_UNDO_IMAGE_GRID, /*< desc="Grid" >*/
GIMP_UNDO_IMAGE_METADATA, /*< desc="Change metadata" >*/
GIMP_UNDO_IMAGE_COLORMAP, /*< desc="Change indexed palette" >*/
+ GIMP_UNDO_IMAGE_COLOR_MANAGED, /*< desc="Change color managed state" >*/
GIMP_UNDO_GUIDE, /*< desc="Guide" >*/
GIMP_UNDO_SAMPLE_POINT, /*< desc="Sample Point" >*/
GIMP_UNDO_DRAWABLE, /*< desc="Layer/Channel" >*/
diff --git a/app/core/gimpimage-color-profile.c b/app/core/gimpimage-color-profile.c
index bb505e5..71a8d00 100644
--- a/app/core/gimpimage-color-profile.c
+++ b/app/core/gimpimage-color-profile.c
@@ -47,6 +47,7 @@
#include "gimpimage-colormap.h"
#include "gimpimage-private.h"
#include "gimpimage-undo.h"
+#include "gimpimage-undo-push.h"
#include "gimpprogress.h"
#include "gimpsubprogress.h"
@@ -72,6 +73,38 @@ static void gimp_image_convert_profile_colormap (GimpImage *ima
/* public functions */
gboolean
+gimp_image_get_is_color_managed (GimpImage *image)
+{
+ g_return_val_if_fail (GIMP_IS_IMAGE (image), FALSE);
+
+ return GIMP_IMAGE_GET_PRIVATE (image)->is_color_managed;
+}
+
+void
+gimp_image_set_is_color_managed (GimpImage *image,
+ gboolean is_color_managed,
+ gboolean push_undo)
+{
+ GimpImagePrivate *private;
+
+ g_return_if_fail (GIMP_IS_IMAGE (image));
+
+ private = GIMP_IMAGE_GET_PRIVATE (image);
+
+ is_color_managed = is_color_managed ? TRUE : FALSE;
+
+ if (is_color_managed != private->is_color_managed)
+ {
+ if (push_undo)
+ gimp_image_undo_push_image_color_managed (image, NULL);
+
+ private->is_color_managed = is_color_managed;
+
+ gimp_color_managed_profile_changed (GIMP_COLOR_MANAGED (image));
+ }
+}
+
+gboolean
gimp_image_validate_icc_parasite (GimpImage *image,
const GimpParasite *icc_parasite,
gboolean *is_builtin,
diff --git a/app/core/gimpimage-color-profile.h b/app/core/gimpimage-color-profile.h
index d6de955..0e12363 100644
--- a/app/core/gimpimage-color-profile.h
+++ b/app/core/gimpimage-color-profile.h
@@ -25,6 +25,11 @@
#define GIMP_ICC_PROFILE_PARASITE_NAME "icc-profile"
+gboolean gimp_image_get_is_color_managed (GimpImage *image);
+void gimp_image_set_is_color_managed (GimpImage *image,
+ gboolean is_color_managed,
+ gboolean push_undo);
+
gboolean gimp_image_validate_icc_parasite (GimpImage *image,
const GimpParasite *icc_parasite,
gboolean *is_builtin,
diff --git a/app/core/gimpimage-private.h b/app/core/gimpimage-private.h
index 474f4b1..0a5d468 100644
--- a/app/core/gimpimage-private.h
+++ b/app/core/gimpimage-private.h
@@ -56,6 +56,7 @@ struct _GimpImagePrivate
const Babl *babl_palette_rgb; /* palette's RGB Babl format */
const Babl *babl_palette_rgba; /* palette's RGBA Babl format */
+ gboolean is_color_managed; /* is this image color managed */
GimpColorProfile *color_profile; /* image's color profile */
/* Cached color transforms: from layer to sRGB u8 and double, and back */
diff --git a/app/core/gimpimage-undo-push.c b/app/core/gimpimage-undo-push.c
index 066f35a..f57d941 100644
--- a/app/core/gimpimage-undo-push.c
+++ b/app/core/gimpimage-undo-push.c
@@ -149,6 +149,18 @@ gimp_image_undo_push_image_colormap (GimpImage *image,
}
GimpUndo *
+gimp_image_undo_push_image_color_managed (GimpImage *image,
+ const gchar *undo_desc)
+{
+ g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
+
+ return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO,
+ GIMP_UNDO_IMAGE_COLOR_MANAGED, undo_desc,
+ GIMP_DIRTY_IMAGE,
+ NULL);
+}
+
+GimpUndo *
gimp_image_undo_push_image_metadata (GimpImage *image,
const gchar *undo_desc)
{
diff --git a/app/core/gimpimage-undo-push.h b/app/core/gimpimage-undo-push.h
index 28d463d..df531ec 100644
--- a/app/core/gimpimage-undo-push.h
+++ b/app/core/gimpimage-undo-push.h
@@ -38,6 +38,8 @@ GimpUndo * gimp_image_undo_push_image_grid (GimpImage *image,
GimpGrid *grid);
GimpUndo * gimp_image_undo_push_image_colormap (GimpImage *image,
const gchar *undo_desc);
+GimpUndo * gimp_image_undo_push_image_color_managed (GimpImage *image,
+ const gchar *undo_desc);
GimpUndo * gimp_image_undo_push_image_metadata (GimpImage *image,
const gchar *undo_desc);
GimpUndo * gimp_image_undo_push_image_parasite (GimpImage *image,
diff --git a/app/core/gimpimage.c b/app/core/gimpimage.c
index 72a6270..899dbcd 100644
--- a/app/core/gimpimage.c
+++ b/app/core/gimpimage.c
@@ -692,6 +692,8 @@ gimp_image_init (GimpImage *image)
private->n_colors = 0;
private->palette = NULL;
+ private->is_color_managed = TRUE;
+
private->metadata = NULL;
private->dirty = 1;
diff --git a/app/core/gimpimageundo.c b/app/core/gimpimageundo.c
index 0462a25..b433e3d 100644
--- a/app/core/gimpimageundo.c
+++ b/app/core/gimpimageundo.c
@@ -188,6 +188,10 @@ gimp_image_undo_constructed (GObject *object)
GIMP_IMAGE_COLORMAP_SIZE);
break;
+ case GIMP_UNDO_IMAGE_COLOR_MANAGED:
+ image_undo->is_color_managed = gimp_image_get_is_color_managed (image);
+ break;
+
case GIMP_UNDO_IMAGE_METADATA:
image_undo->metadata =
gimp_metadata_duplicate (gimp_image_get_metadata (image));
@@ -468,6 +472,17 @@ gimp_image_undo_pop (GimpUndo *undo,
}
break;
+ case GIMP_UNDO_IMAGE_COLOR_MANAGED:
+ {
+ gboolean is_color_managed;
+
+ is_color_managed = gimp_image_get_is_color_managed (image);
+ gimp_image_set_is_color_managed (image, image_undo->is_color_managed,
+ FALSE);
+ image_undo->is_color_managed = is_color_managed;
+ }
+ break;
+
case GIMP_UNDO_IMAGE_METADATA:
{
GimpMetadata *metadata;
diff --git a/app/core/gimpimageundo.h b/app/core/gimpimageundo.h
index b6a9b01..6b84894 100644
--- a/app/core/gimpimageundo.h
+++ b/app/core/gimpimageundo.h
@@ -50,6 +50,7 @@ struct _GimpImageUndo
GimpGrid *grid;
gint num_colors;
guchar *colormap;
+ gboolean is_color_managed;
GimpMetadata *metadata;
gchar *parasite_name;
GimpParasite *parasite;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]