[gimp] libgimpconfig: add a preferred gray profile to GimpColorConfig
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] libgimpconfig: add a preferred gray profile to GimpColorConfig
- Date: Mon, 14 Dec 2015 00:54:26 +0000 (UTC)
commit 5cbe6f20036a94990567d537a014edd8e55b265c
Author: Michael Natterer <mitch gimp org>
Date: Mon Dec 14 01:54:00 2015 +0100
libgimpconfig: add a preferred gray profile to GimpColorConfig
libgimpconfig/gimpcolorconfig.c | 95 +++++++++++++++++++++++++++++++++++++++
libgimpconfig/gimpcolorconfig.h | 7 ++-
libgimpconfig/gimpconfig.def | 1 +
3 files changed, 101 insertions(+), 2 deletions(-)
---
diff --git a/libgimpconfig/gimpcolorconfig.c b/libgimpconfig/gimpcolorconfig.c
index f410b62..152ed2b 100644
--- a/libgimpconfig/gimpcolorconfig.c
+++ b/libgimpconfig/gimpcolorconfig.c
@@ -65,6 +65,10 @@
_("The preferred RGB working space color profile. It will be offered " \
"next to the built-in RGB profile when a color profile can be chosen.")
+#define GRAY_PROFILE_BLURB \
+ _("The preferred grayscale working space color profile. It will be offered " \
+ "next to the built-in grayscale profile when a color profile can be chosen.")
+
#define CMYK_PROFILE_BLURB \
_("The CMYK color profile used to convert between RGB and CMYK.")
@@ -106,6 +110,7 @@ enum
PROP_0,
PROP_MODE,
PROP_RGB_PROFILE,
+ PROP_GRAY_PROFILE,
PROP_CMYK_PROFILE,
PROP_DISPLAY_PROFILE,
PROP_DISPLAY_PROFILE_FROM_GDK,
@@ -133,6 +138,9 @@ static void gimp_color_config_get_property (GObject *object,
static void gimp_color_config_set_rgb_profile (GimpColorConfig *config,
const gchar *filename,
GError **error);
+static void gimp_color_config_set_gray_profile (GimpColorConfig *config,
+ const gchar *filename,
+ GError **error);
static void gimp_color_config_set_cmyk_profile (GimpColorConfig *config,
const gchar *filename,
GError **error);
@@ -173,6 +181,10 @@ gimp_color_config_class_init (GimpColorConfigClass *klass)
"rgb-profile", RGB_PROFILE_BLURB,
GIMP_CONFIG_PATH_FILE, NULL,
GIMP_PARAM_STATIC_STRINGS);
+ GIMP_CONFIG_INSTALL_PROP_PATH (object_class, PROP_GRAY_PROFILE,
+ "gray-profile", GRAY_PROFILE_BLURB,
+ GIMP_CONFIG_PATH_FILE, NULL,
+ GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_PATH (object_class, PROP_CMYK_PROFILE,
"cmyk-profile", CMYK_PROFILE_BLURB,
GIMP_CONFIG_PATH_FILE, NULL,
@@ -241,6 +253,9 @@ gimp_color_config_finalize (GObject *object)
if (color_config->rgb_profile)
g_free (color_config->rgb_profile);
+ if (color_config->gray_profile)
+ g_free (color_config->gray_profile);
+
if (color_config->cmyk_profile)
g_free (color_config->cmyk_profile);
@@ -275,6 +290,11 @@ gimp_color_config_set_property (GObject *object,
g_value_get_string (value),
&error);
break;
+ case PROP_GRAY_PROFILE:
+ gimp_color_config_set_gray_profile (color_config,
+ g_value_get_string (value),
+ &error);
+ break;
case PROP_CMYK_PROFILE:
gimp_color_config_set_cmyk_profile (color_config,
g_value_get_string (value),
@@ -344,6 +364,9 @@ gimp_color_config_get_property (GObject *object,
case PROP_RGB_PROFILE:
g_value_set_string (value, color_config->rgb_profile);
break;
+ case PROP_GRAY_PROFILE:
+ g_value_set_string (value, color_config->gray_profile);
+ break;
case PROP_CMYK_PROFILE:
g_value_set_string (value, color_config->cmyk_profile);
break;
@@ -416,6 +439,37 @@ gimp_color_config_get_rgb_color_profile (GimpColorConfig *config,
}
GimpColorProfile *
+gimp_color_config_get_gray_color_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->gray_profile)
+ {
+ GFile *file = g_file_new_for_path (config->gray_profile);
+
+ profile = gimp_color_profile_new_from_file (file, error);
+
+ if (profile && ! gimp_color_profile_is_gray (profile))
+ {
+ g_object_unref (profile);
+ profile = NULL;
+
+ g_set_error (error, GIMP_CONFIG_ERROR, 0,
+ _("Color profile '%s' is not for GRAY color space."),
+ gimp_file_get_utf8_name (file));
+ }
+
+ g_object_unref (file);
+ }
+
+ return profile;
+}
+
+GimpColorProfile *
gimp_color_config_get_cmyk_color_profile (GimpColorConfig *config,
GError **error)
{
@@ -531,6 +585,47 @@ gimp_color_config_set_rgb_profile (GimpColorConfig *config,
}
static void
+gimp_color_config_set_gray_profile (GimpColorConfig *config,
+ const gchar *filename,
+ GError **error)
+{
+ gboolean success = TRUE;
+
+ if (filename)
+ {
+ GimpColorProfile *profile;
+ GFile *file = g_file_new_for_path (filename);
+
+ profile = gimp_color_profile_new_from_file (file, error);
+
+ if (profile)
+ {
+ if (! gimp_color_profile_is_gray (profile))
+ {
+ g_set_error (error, GIMP_CONFIG_ERROR, 0,
+ _("Color profile '%s' is not for GRAY color space."),
+ gimp_file_get_utf8_name (file));
+ success = FALSE;
+ }
+
+ g_object_unref (profile);
+ }
+ else
+ {
+ success = FALSE;
+ }
+
+ g_object_unref (file);
+ }
+
+ if (success)
+ {
+ g_free (config->gray_profile);
+ config->gray_profile = g_strdup (filename);
+ }
+}
+
+static void
gimp_color_config_set_cmyk_profile (GimpColorConfig *config,
const gchar *filename,
GError **error)
diff --git a/libgimpconfig/gimpcolorconfig.h b/libgimpconfig/gimpcolorconfig.h
index ef0a3d8..9bfa328 100644
--- a/libgimpconfig/gimpcolorconfig.h
+++ b/libgimpconfig/gimpcolorconfig.h
@@ -58,12 +58,13 @@ struct _GimpColorConfig
gboolean display_use_black_point_compensation;
gboolean simulation_use_black_point_compensation;
+ gchar *gray_profile;
+
/*< private >*/
/* Padding for future expansion */
#if (GLIB_SIZEOF_VOID_P == 8)
- void (* _gimp_reserved2) (void);
-#endif
void (* _gimp_reserved3) (void);
+#endif
void (* _gimp_reserved4) (void);
void (* _gimp_reserved5) (void);
void (* _gimp_reserved6) (void);
@@ -81,6 +82,8 @@ GType gimp_color_config_get_type (void) G_GNUC_CON
GimpColorProfile * gimp_color_config_get_rgb_color_profile (GimpColorConfig *config,
GError **error);
+GimpColorProfile * gimp_color_config_get_gray_color_profile (GimpColorConfig *config,
+ GError **error);
GimpColorProfile * gimp_color_config_get_cmyk_color_profile (GimpColorConfig *config,
GError **error);
GimpColorProfile * gimp_color_config_get_display_color_profile (GimpColorConfig *config,
diff --git a/libgimpconfig/gimpconfig.def b/libgimpconfig/gimpconfig.def
index ec92574..aabaed9 100644
--- a/libgimpconfig/gimpconfig.def
+++ b/libgimpconfig/gimpconfig.def
@@ -1,6 +1,7 @@
EXPORTS
gimp_color_config_get_cmyk_color_profile
gimp_color_config_get_display_color_profile
+ gimp_color_config_get_gray_color_profile
gimp_color_config_get_printer_color_profile
gimp_color_config_get_rgb_color_profile
gimp_color_config_get_type
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]