[gimp] app: add gimp_color_profile_store_add_defaults()



commit 57d497b48611c097d80615a2d311614525fab708
Author: Michael Natterer <mitch gimp org>
Date:   Sun May 22 01:19:18 2016 +0200

    app: add gimp_color_profile_store_add_defaults()
    
    which adds default profiles for an image type/precision.

 app/widgets/gimpwidgets-utils.c |   70 +++++++++++++++++++++++++++++++++++++++
 app/widgets/gimpwidgets-utils.h |    7 ++++
 2 files changed, 77 insertions(+), 0 deletions(-)
---
diff --git a/app/widgets/gimpwidgets-utils.c b/app/widgets/gimpwidgets-utils.c
index 0822799..a38c26e 100644
--- a/app/widgets/gimpwidgets-utils.c
+++ b/app/widgets/gimpwidgets-utils.c
@@ -41,6 +41,8 @@
 
 #include "widgets-types.h"
 
+#include "gegl/gimp-babl.h"
+
 #include "gimpdialogfactory.h"
 #include "gimpdock.h"
 #include "gimpdockcontainer.h"
@@ -1375,3 +1377,71 @@ gimp_print_event (const GdkEvent *event)
 
   return str;
 }
+
+gboolean
+gimp_color_profile_store_add_defaults (GimpColorProfileStore  *store,
+                                       GimpColorConfig        *config,
+                                       GimpImageBaseType       base_type,
+                                       GimpPrecision           precision,
+                                       GError                **error)
+{
+  GimpColorProfile *profile;
+  const Babl       *format;
+  gchar            *label;
+
+  g_return_val_if_fail (GIMP_IS_COLOR_PROFILE_STORE (store), FALSE);
+  g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), FALSE);
+  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+  format  = gimp_babl_format (base_type, precision, TRUE);
+  profile = gimp_babl_format_get_color_profile (format);
+
+  if (base_type == GIMP_GRAY)
+    {
+      label = g_strdup_printf (_("Built-in grayscale (%s)"),
+                               gimp_color_profile_get_label (profile));
+
+      profile = gimp_color_config_get_gray_color_profile (config, error);
+    }
+  else
+    {
+      label = g_strdup_printf (_("Built-in RGB (%s)"),
+                               gimp_color_profile_get_label (profile));
+
+      profile = gimp_color_config_get_rgb_color_profile (config, error);
+    }
+
+  gimp_color_profile_store_add_file (store, NULL, label);
+  g_free (label);
+
+  if (profile)
+    {
+      GFile *file;
+
+      if (base_type == GIMP_GRAY)
+        {
+          file = g_file_new_for_path (config->gray_profile);
+
+          label = g_strdup_printf (_("Preferred grayscale (%s)"),
+                                   gimp_color_profile_get_label (profile));
+        }
+      else
+        {
+          file = g_file_new_for_path (config->rgb_profile);
+
+          label = g_strdup_printf (_("Preferred RGB (%s)"),
+                                   gimp_color_profile_get_label (profile));
+        }
+
+      g_object_unref (profile);
+
+      gimp_color_profile_store_add_file (store, file, label);
+
+      g_object_unref (file);
+      g_free (label);
+
+      return TRUE;
+    }
+
+  return FALSE;
+}
diff --git a/app/widgets/gimpwidgets-utils.h b/app/widgets/gimpwidgets-utils.h
index da30e02..b41de73 100644
--- a/app/widgets/gimpwidgets-utils.h
+++ b/app/widgets/gimpwidgets-utils.h
@@ -107,5 +107,12 @@ void              gimp_widget_set_fully_opaque     (GtkWidget            *widget
 
 const gchar     * gimp_print_event                 (const GdkEvent       *event);
 
+gboolean          gimp_color_profile_store_add_defaults
+                                                   (GimpColorProfileStore *store,
+                                                    GimpColorConfig       *config,
+                                                    GimpImageBaseType      base_type,
+                                                    GimpPrecision          precision,
+                                                    GError               **error);
+
 
 #endif /* __APP_GIMP_WIDGETS_UTILS_H__ */


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