[gimp] app: add a GimpColorConfig member to GimpViewRenderer



commit 9bbc52c1be6dad046ee77f0e01ca5cd4a76481f6
Author: Michael Natterer <mitch gimp org>
Date:   Sat May 14 00:28:15 2016 +0200

    app: add a GimpColorConfig member to GimpViewRenderer
    
    and use it if set to create the display transform, otherwise use the
    global config from prefs.

 app/widgets/gimpviewrenderer.c |   34 ++++++++++++++++++++++++++++++++--
 app/widgets/gimpviewrenderer.h |    2 ++
 2 files changed, 34 insertions(+), 2 deletions(-)
---
diff --git a/app/widgets/gimpviewrenderer.c b/app/widgets/gimpviewrenderer.c
index e6b793b..550060e 100644
--- a/app/widgets/gimpviewrenderer.c
+++ b/app/widgets/gimpviewrenderer.c
@@ -29,6 +29,7 @@
 #include <gtk/gtk.h>
 
 #include "libgimpcolor/gimpcolor.h"
+#include "libgimpconfig/gimpconfig.h"
 #include "libgimpmath/gimpmath.h"
 #include "libgimpbase/gimpbase.h"
 #include "libgimpwidgets/gimpwidgets.h"
@@ -67,6 +68,7 @@ struct _GimpViewRendererPrivate
   GdkPixbuf          *pixbuf;
   gchar              *bg_icon_name;
 
+  GimpColorConfig    *color_config;
   GimpColorTransform  profile_transform;
   const Babl         *profile_src_format;
   const Babl         *profile_dest_format;
@@ -198,6 +200,9 @@ gimp_view_renderer_dispose (GObject *object)
   if (renderer->context)
     gimp_view_renderer_set_context (renderer, NULL);
 
+  if (renderer->priv->color_config)
+    gimp_view_renderer_set_color_config (renderer, NULL);
+
   gimp_view_renderer_remove_idle (renderer);
 
   G_OBJECT_CLASS (parent_class)->dispose (object);
@@ -567,6 +572,28 @@ gimp_view_renderer_set_background (GimpViewRenderer *renderer,
 }
 
 void
+gimp_view_renderer_set_color_config (GimpViewRenderer *renderer,
+                                     GimpColorConfig  *color_config)
+{
+  g_return_if_fail (GIMP_IS_VIEW_RENDERER (renderer));
+  g_return_if_fail (color_config == NULL || GIMP_IS_COLOR_CONFIG (color_config));
+
+  if (color_config != renderer->priv->color_config)
+    {
+      if (renderer->priv->color_config)
+        g_object_unref (renderer->priv->color_config);
+
+      renderer->priv->color_config = color_config;
+
+      if (renderer->priv->color_config)
+        g_object_ref (renderer->priv->color_config);
+
+      if (renderer->viewable)
+        gimp_view_renderer_profile_changed (renderer, renderer->viewable);
+    }
+}
+
+void
 gimp_view_renderer_invalidate (GimpViewRenderer *renderer)
 {
   g_return_if_fail (GIMP_IS_VIEW_RENDERER (renderer));
@@ -1281,10 +1308,13 @@ gimp_view_renderer_transform_create (GimpViewRenderer *renderer,
 
       if (profile)
         {
-          GimpContext     *context = renderer->context;
-          GimpColorConfig *config  = context->gimp->config->color_management;
+          GimpColorConfig *config = renderer->priv->color_config;
+
+          if (! config)
+            config = renderer->context->gimp->config->color_management;
 
           renderer->priv->profile_src_format  = gegl_buffer_get_format (src_buffer);
+
           renderer->priv->profile_dest_format = gegl_buffer_get_format (dest_buffer);
 
           renderer->priv->profile_transform =
diff --git a/app/widgets/gimpviewrenderer.h b/app/widgets/gimpviewrenderer.h
index 830951a..90554df 100644
--- a/app/widgets/gimpviewrenderer.h
+++ b/app/widgets/gimpviewrenderer.h
@@ -123,6 +123,8 @@ void   gimp_view_renderer_set_border_color (GimpViewRenderer   *renderer,
                                             const GimpRGB      *border_color);
 void   gimp_view_renderer_set_background   (GimpViewRenderer   *renderer,
                                             const gchar        *icon_name);
+void   gimp_view_renderer_set_color_config (GimpViewRenderer   *renderer,
+                                            GimpColorConfig    *color_config);
 
 void   gimp_view_renderer_invalidate       (GimpViewRenderer   *renderer);
 void   gimp_view_renderer_update           (GimpViewRenderer   *renderer);


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