[gimp] libgimpconfig: add functions to get GimpColorProfiles to GimpColorConfig



commit 54553487f2cd59dfc700bd3468492adf2151e9c4
Author: Michael Natterer <mitch gimp org>
Date:   Wed May 6 16:32:17 2015 +0200

    libgimpconfig: add functions to get GimpColorProfiles to GimpColorConfig
    
    gimp_color_config_get_rgb,cmyk,display,printer_profile()

 libgimpconfig/gimpcolorconfig.c |  102 +++++++++++++++++++++++++++++++++++++++
 libgimpconfig/gimpcolorconfig.h |   11 ++++-
 libgimpconfig/gimpconfig.def    |    4 ++
 3 files changed, 116 insertions(+), 1 deletions(-)
---
diff --git a/libgimpconfig/gimpcolorconfig.c b/libgimpconfig/gimpcolorconfig.c
index fc32f73..bf8d87a 100644
--- a/libgimpconfig/gimpcolorconfig.c
+++ b/libgimpconfig/gimpcolorconfig.c
@@ -342,3 +342,105 @@ gimp_color_config_get_property (GObject    *object,
       break;
     }
 }
+
+GimpColorProfile
+gimp_color_config_get_rgb_profile (GimpColorConfig  *config,
+                                   GError          **error)
+{
+  GimpColorProfile profile = NULL;
+
+  g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  if (config->rgb_profile)
+    {
+      GFile *file = g_file_new_for_path (config->rgb_profile);
+
+      profile = gimp_lcms_profile_open_from_file (file, error);
+
+      if (profile && ! gimp_lcms_profile_is_rgb (profile))
+        {
+          gimp_lcms_profile_close (profile);
+          profile = NULL;
+
+          g_set_error (error, 0, 0,
+                       _("Color profile '%s' is not for RGB color space"),
+                       gimp_file_get_utf8_name (file));
+        }
+
+      g_object_unref (file);
+    }
+
+  return profile;
+}
+
+GimpColorProfile
+gimp_color_config_get_cmyk_profile (GimpColorConfig  *config,
+                                    GError          **error)
+{
+  GimpColorProfile profile = NULL;
+
+  g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  if (config->cmyk_profile)
+    {
+      GFile *file = g_file_new_for_path (config->cmyk_profile);
+
+      profile = gimp_lcms_profile_open_from_file (file, error);
+
+      if (profile && ! gimp_lcms_profile_is_cmyk (profile))
+        {
+          gimp_lcms_profile_close (profile);
+          profile = NULL;
+
+          g_set_error (error, 0, 0,
+                       _("Color profile '%s' is not for RGB color space"),
+                       gimp_file_get_utf8_name (file));
+        }
+
+      g_object_unref (file);
+    }
+
+  return profile;
+}
+
+GimpColorProfile
+gimp_color_config_get_display_profile (GimpColorConfig  *config,
+                                       GError          **error)
+{
+  GimpColorProfile profile = NULL;
+
+  g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  if (config->display_profile)
+    {
+      GFile *file = g_file_new_for_path (config->display_profile);
+
+      profile = gimp_lcms_profile_open_from_file (file, error);
+      g_object_unref (file);
+    }
+
+  return profile;
+}
+
+GimpColorProfile
+gimp_color_config_get_printer_profile (GimpColorConfig  *config,
+                                       GError          **error)
+{
+  GimpColorProfile profile = NULL;
+
+  g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  if (config->printer_profile)
+    {
+      GFile *file = g_file_new_for_path (config->printer_profile);
+
+      profile = gimp_lcms_profile_open_from_file (file, error);
+      g_object_unref (file);
+    }
+
+  return profile;
+}
diff --git a/libgimpconfig/gimpcolorconfig.h b/libgimpconfig/gimpcolorconfig.h
index 9d99428..fbd6cce 100644
--- a/libgimpconfig/gimpcolorconfig.h
+++ b/libgimpconfig/gimpcolorconfig.h
@@ -77,7 +77,16 @@ struct _GimpColorConfigClass
 };
 
 
-GType  gimp_color_config_get_type (void) G_GNUC_CONST;
+GType            gimp_color_config_get_type            (void) G_GNUC_CONST;
+
+GimpColorProfile gimp_color_config_get_rgb_profile     (GimpColorConfig  *config,
+                                                        GError          **error);
+GimpColorProfile gimp_color_config_get_cmyk_profile    (GimpColorConfig  *config,
+                                                        GError          **error);
+GimpColorProfile gimp_color_config_get_display_profile (GimpColorConfig  *config,
+                                                        GError          **error);
+GimpColorProfile gimp_color_config_get_printer_profile (GimpColorConfig  *config,
+                                                        GError          **error);
 
 
 #endif /* GIMP_COLOR_CONFIG_H__ */
diff --git a/libgimpconfig/gimpconfig.def b/libgimpconfig/gimpconfig.def
index 30907b1..35b2d76 100644
--- a/libgimpconfig/gimpconfig.def
+++ b/libgimpconfig/gimpconfig.def
@@ -1,4 +1,8 @@
 EXPORTS
+       gimp_color_config_get_cmyk_profile
+       gimp_color_config_get_display_profile
+       gimp_color_config_get_printer_profile
+       gimp_color_config_get_rgb_profile
        gimp_color_config_get_type
        gimp_color_management_mode_get_type
        gimp_color_rendering_intent_get_type


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