[gimp] libgimpwidgets: return the formats from gimp_widget_get_color_transform()



commit 394bc25be106d2f1f1c9ef67b903517d4bed6183
Author: Michael Natterer <mitch gimp org>
Date:   Mon May 11 00:42:23 2015 +0200

    libgimpwidgets: return the formats from gimp_widget_get_color_transform()
    
    Turn the src_format and dest_formats into "const Babl **" and make
    them return the actually used formats. Change the lcms display module
    accordingly.

 libgimpwidgets/gimpwidgetsutils.c |   14 ++++++------
 libgimpwidgets/gimpwidgetsutils.h |   38 ++++++++++++++++++------------------
 modules/display-filter-lcms.c     |   15 +++++++++----
 3 files changed, 36 insertions(+), 31 deletions(-)
---
diff --git a/libgimpwidgets/gimpwidgetsutils.c b/libgimpwidgets/gimpwidgetsutils.c
index 9228b74..a346653 100644
--- a/libgimpwidgets/gimpwidgetsutils.c
+++ b/libgimpwidgets/gimpwidgetsutils.c
@@ -499,11 +499,11 @@ get_display_profile (GtkWidget       *widget,
 }
 
 GimpColorTransform
-gimp_widget_get_color_transform (GtkWidget        *widget,
-                                 GimpColorManaged *managed,
-                                 GimpColorConfig  *config,
-                                 const Babl       *src_format,
-                                 const Babl       *dest_format)
+gimp_widget_get_color_transform (GtkWidget         *widget,
+                                 GimpColorManaged  *managed,
+                                 GimpColorConfig   *config,
+                                 const Babl       **src_format,
+                                 const Babl       **dest_format)
 {
   GimpColorTransform transform     = NULL;
   GimpColorProfile   src_profile   = NULL;
@@ -534,8 +534,8 @@ gimp_widget_get_color_transform (GtkWidget        *widget,
       break;
     }
 
-  src_format  = gimp_lcms_get_format (src_format,  &lcms_src_format);
-  dest_format = gimp_lcms_get_format (dest_format, &lcms_dest_format);
+  *src_format  = gimp_lcms_get_format (*src_format,  &lcms_src_format);
+  *dest_format = gimp_lcms_get_format (*dest_format, &lcms_dest_format);
 
   if (proof_profile)
     {
diff --git a/libgimpwidgets/gimpwidgetsutils.h b/libgimpwidgets/gimpwidgetsutils.h
index db97121..80da51d 100644
--- a/libgimpwidgets/gimpwidgetsutils.h
+++ b/libgimpwidgets/gimpwidgetsutils.h
@@ -30,29 +30,29 @@ G_BEGIN_DECLS
 /* For information look into the C source or the html documentation */
 
 
-GtkWidget        * gimp_table_attach_aligned       (GtkTable        *table,
-                                                    gint             column,
-                                                    gint             row,
-                                                    const gchar     *label_text,
-                                                    gfloat           xalign,
-                                                    gfloat           yalign,
-                                                    GtkWidget       *widget,
-                                                    gint             colspan,
-                                                    gboolean         left_align);
-
-void               gimp_label_set_attributes       (GtkLabel        *label,
+GtkWidget        * gimp_table_attach_aligned       (GtkTable          *table,
+                                                    gint               column,
+                                                    gint               row,
+                                                    const gchar       *label_text,
+                                                    gfloat             xalign,
+                                                    gfloat             yalign,
+                                                    GtkWidget         *widget,
+                                                    gint               colspan,
+                                                    gboolean           left_align);
+
+void               gimp_label_set_attributes       (GtkLabel          *label,
                                                     ...);
 
-gint               gimp_widget_get_monitor         (GtkWidget       *widget);
-gint               gimp_get_monitor_at_pointer     (GdkScreen      **screen);
+gint               gimp_widget_get_monitor         (GtkWidget         *widget);
+gint               gimp_get_monitor_at_pointer     (GdkScreen        **screen);
 
-GimpColorProfile   gimp_widget_get_color_profile   (GtkWidget       *widget);
+GimpColorProfile   gimp_widget_get_color_profile   (GtkWidget         *widget);
 
-GimpColorTransform gimp_widget_get_color_transform (GtkWidget        *widget,
-                                                    GimpColorManaged *managed,
-                                                    GimpColorConfig  *config,
-                                                    const Babl       *src_format,
-                                                    const Babl       *dest_format);
+GimpColorTransform gimp_widget_get_color_transform (GtkWidget         *widget,
+                                                    GimpColorManaged  *managed,
+                                                    GimpColorConfig   *config,
+                                                    const Babl       **src_format,
+                                                    const Babl       **dest_format);
 
 
 G_END_DECLS
diff --git a/modules/display-filter-lcms.c b/modules/display-filter-lcms.c
index e14cd89..b75ab80 100644
--- a/modules/display-filter-lcms.c
+++ b/modules/display-filter-lcms.c
@@ -60,9 +60,11 @@ typedef struct _CdisplayLcmsClass CdisplayLcmsClass;
 
 struct _CdisplayLcms
 {
-  GimpColorDisplay   parent_instance;
+  GimpColorDisplay    parent_instance;
 
-  GimpColorTransform transform;
+  GimpColorTransform  transform;
+  const Babl         *src_format;
+  const Babl         *dest_format;
 };
 
 struct _CdisplayLcmsClass
@@ -240,7 +242,7 @@ cdisplay_lcms_convert_buffer (GimpColorDisplay *display,
     return;
 
   iter = gegl_buffer_iterator_new (buffer, area, 0,
-                                   babl_format ("R'G'B'A float"),
+                                   lcms->src_format,
                                    GEGL_ACCESS_READWRITE, GEGL_ABYSS_NONE);
 
   while (gegl_buffer_iterator_next (iter))
@@ -274,11 +276,14 @@ cdisplay_lcms_changed (GimpColorDisplay *display)
   if (GTK_IS_WIDGET (managed))
     widget = gtk_widget_get_toplevel (GTK_WIDGET (managed));
 
+  lcms->src_format  = babl_format ("R'G'B'A float");
+  lcms->dest_format = babl_format ("R'G'B'A float");
+
   lcms->transform =
     gimp_widget_get_color_transform (widget,
                                      managed, config,
-                                     babl_format ("R'G'B'A float"),
-                                     babl_format ("R'G'B'A float"));
+                                     &lcms->src_format,
+                                     &lcms->dest_format);
 }
 
 static GimpColorProfile


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