colord Reference Manual: cd-icc

## cd-icc cd-icc — An object to read and write a binary ICC profile |

## Functions

void | (*_cd_icc_reserved1) ()
void | (*_cd_icc_reserved2) ()
void | (*_cd_icc_reserved3) ()
void | (*_cd_icc_reserved4) ()
void | (*_cd_icc_reserved5) ()
void | (*_cd_icc_reserved6) ()
void | (*_cd_icc_reserved7) ()
void | (*_cd_icc_reserved8) ()
GQuark | cd_icc_error_quark ()
CdIcc * | cd_icc_new ()
gboolean | cd_icc_load_data ()
gboolean | cd_icc_load_file ()
gboolean | cd_icc_load_fd ()
gboolean | cd_icc_load_handle ()
GBytes * | cd_icc_save_data ()
gboolean | cd_icc_save_file ()
gchar * | cd_icc_to_string ()
gpointer | cd_icc_get_handle ()
guint32 | cd_icc_get_size ()
const gchar * | cd_icc_get_filename ()
void | cd_icc_set_filename ()
gdouble | cd_icc_get_version ()
void | cd_icc_set_version ()
CdProfileKind | cd_icc_get_kind ()
void | cd_icc_set_kind ()
CdColorspace | cd_icc_get_colorspace ()
void | cd_icc_set_colorspace ()
GHashTable * | cd_icc_get_metadata ()
const gchar * | cd_icc_get_metadata_item ()
void | cd_icc_add_metadata ()
void | cd_icc_remove_metadata ()
GPtrArray * | cd_icc_get_named_colors ()
gboolean | cd_icc_get_can_delete ()
GDateTime * | cd_icc_get_created ()
const gchar * | cd_icc_get_checksum ()
const gchar * | cd_icc_get_description ()
const gchar * | cd_icc_get_copyright ()
const gchar * | cd_icc_get_manufacturer ()
const gchar * | cd_icc_get_model ()
void | cd_icc_set_description ()
void | cd_icc_set_description_items ()
void | cd_icc_set_copyright ()
void | cd_icc_set_copyright_items ()
void | cd_icc_set_manufacturer ()
void | cd_icc_set_manufacturer_items ()
void | cd_icc_set_model ()
void | cd_icc_set_model_items ()
const CdColorXYZ * | cd_icc_get_red ()
const CdColorXYZ * | cd_icc_get_green ()
const CdColorXYZ * | cd_icc_get_blue ()
const CdColorXYZ * | cd_icc_get_white ()
guint | cd_icc_get_temperature ()
GArray * | cd_icc_get_warnings ()
gboolean | cd_icc_create_from_edid ()
GPtrArray * | cd_icc_get_vcgt ()
gboolean | cd_icc_set_vcgt ()
GPtrArray * | cd_icc_get_response ()

## Types and Values

#define | CD_ICC_ERROR
#define | CD_ICC_TYPE_ERROR
enum | CdIccError
enum | CdIccLoadFlags
enum | CdIccSaveFlags

## Object Hierarchy

## Description

## Functions

### _cd_icc_reserved1 ()

    void
    (*_cd_icc_reserved1) (void);

### _cd_icc_reserved2 ()

    void
    (*_cd_icc_reserved2) (void);

### _cd_icc_reserved3 ()

    void
    (*_cd_icc_reserved3) (void);

### _cd_icc_reserved4 ()

    void
    (*_cd_icc_reserved4) (void);

### _cd_icc_reserved5 ()

    void
    (*_cd_icc_reserved5) (void);

### _cd_icc_reserved6 ()

    void
    (*_cd_icc_reserved6) (void);

### _cd_icc_reserved7 ()

    void
    (*_cd_icc_reserved7) (void);

### _cd_icc_reserved8 ()

    void
    (*_cd_icc_reserved8) (void);

### cd_icc_error_quark ()

    GQuark
    cd_icc_error_quark (void);

#### Returns

An error quark.

Since 0.1.32

### cd_icc_new ()

    CdIcc *
    cd_icc_new (void);

Creates a new CdIcc object.

#### Returns

a new CdIcc object.

Since 0.1.32

### cd_icc_load_data ()

    gboolean
    cd_icc_load_data (CdIcc *icc,
                      const guint8 *data,
                      gsize data_len,
                      CdIccLoadFlags flags,
                      GError **error);

Loads an ICC profile from raw byte data.

#### Parameters

icc | a CdIcc instance. |
data | binary data |
data_len | Length of `data` |
flags | a set of CdIccLoadFlags |
error | A GError or `NULL` |

#### Returns

Since 0.1.32

### cd_icc_load_file ()

    gboolean
    cd_icc_load_file (CdIcc *icc,
                      GFile *file,
                      CdIccLoadFlags flags,
                      GCancellable *cancellable,
                      GError **error);

Loads an ICC profile from a local or remote file.

#### Parameters

icc | a CdIcc instance. |
file | a GFile |
flags | a set of CdIccLoadFlags |
cancellable | A GCancellable or `NULL` |
error | A GError or `NULL` |

#### Returns

Since 0.1.32

### cd_icc_load_fd ()

    gboolean
    cd_icc_load_fd (CdIcc *icc,
                    gint fd,
                    CdIccLoadFlags flags,
                    GError **error);

Loads an ICC profile from an open file descriptor.

#### Parameters

icc | a CdIcc instance. |
fd | a file descriptor |
flags | a set of CdIccLoadFlags |
error | A GError or `NULL` |

#### Returns

Since 0.1.32

### cd_icc_load_handle ()

    gboolean
    cd_icc_load_handle (CdIcc *icc,
                        gpointer handle,
                        CdIccLoadFlags flags,
                        GError **error);

Set the internal cmsHPROFILE instance. This may be required if you create the profile using `cmsCreateRGBProfile()` and then want to use the functionality in CdIcc.

Do not call `cmsCloseProfile()` on `handle` in the caller, this will be done when the `icc` object is finalized. Treat the profile like it's been adopted by this module.

Additionally, this function cannot be called more than once, and also can't be called if `cd_icc_load_file()` has previously been used on the `icc` object.

#### Parameters

icc | a CdIcc instance. |
handle | a cmsHPROFILE instance |
flags | a set of CdIccLoadFlags |
error | A GError or `NULL` |

#### Returns

Since 0.1.33

### cd_icc_save_data ()

    GBytes *
    cd_icc_save_data (CdIcc *icc,
                      CdIccSaveFlags flags,
                      GError **error);

Saves an ICC profile to an allocated memory location.

Return vale: A GBytes structure, or `NULL` for error

#### Parameters

icc | a CdIcc instance. |
flags | a set of CdIccSaveFlags |
error | A GError or `NULL` |

#### Returns

Since 1.0.2

### cd_icc_save_file ()

    gboolean
    cd_icc_save_file (CdIcc *icc,
                      GFile *file,
                      CdIccSaveFlags flags,
                      GCancellable *cancellable,
                      GError **error);

Saves an ICC profile to a local or remote file.

Return vale: `TRUE` for success.

#### Parameters

icc | a CdIcc instance. |
file | a GFile |
flags | a set of CdIccSaveFlags |
cancellable | A GCancellable or `NULL` |
error | A GError or `NULL` |

#### Returns

Since 0.1.32

### cd_icc_to_string ()

    gchar *
    cd_icc_to_string (CdIcc *icc);

Returns a string representation of the ICC profile.

#### Parameters

icc | a CdIcc instance. |

#### Returns

an allocated string

Since 0.1.32

### cd_icc_get_handle ()

    gpointer
    cd_icc_get_handle (CdIcc *icc);

Return the cmsHPROFILE instance used locally. This may be required if you are using the profile in a transform.

#### Parameters

icc | a CdIcc instance. |

#### Returns

Do not call `cmsCloseProfile()` on this value!.

[transfer none]

### cd_icc_get_size ()

    guint32
    cd_icc_get_size (CdIcc *icc);

Gets the ICC profile file size

#### Returns

The size in bytes, or 0 for unknown.

Since 0.1.32

### cd_icc_get_filename ()

    const gchar *
    cd_icc_get_filename (CdIcc *icc);

Gets the filename of the ICC data, if one exists.

#### Parameters

icc | A valid CdIcc |

#### Returns

A filename, or `NULL`

Since 0.1.32

### cd_icc_set_filename ()

    void
    cd_icc_set_filename (CdIcc *icc,
                         const gchar *filename);

Sets the filename, which may be required if the ICC profile has been loaded using `cd_icc_load_fd()` from a disk cache.

#### Parameters

icc | a CdIcc instance. |
filename | a filename, or `NULL` |

Since 1.1.1

### cd_icc_get_version ()

    gdouble
    cd_icc_get_version (CdIcc *icc);

Gets the ICC profile version, typically 2.1 or 4.2

#### Parameters

icc | a CdIcc instance. |

#### Returns

A floating point version number, or 0.0 for unknown

Since 0.1.32

### cd_icc_set_version ()

    void
    cd_icc_set_version (CdIcc *icc,
                        gdouble version);

Sets the profile version.

#### Parameters

icc | a CdIcc instance. |
version | the profile version, e.g. 2.1 or 4.0 |

Since 0.1.32

### cd_icc_get_kind ()

    CdProfileKind
    cd_icc_get_kind (CdIcc *icc);

Gets the profile kind.

#### Parameters

icc | a CdIcc instance. |

#### Returns

The kind, e.g. `CD_PROFILE_KIND_INPUT`

Since 0.1.32

### cd_icc_set_kind ()

    void
    cd_icc_set_kind (CdIcc *icc,
                     CdProfileKind kind);

Sets the profile kind.

#### Parameters

icc | a CdIcc instance. |
kind | the profile kind, e.g. `CD_PROFILE_KIND_DISPLAY_DEVICE` |

Since 0.1.32

### cd_icc_get_colorspace ()

    CdColorspace
    cd_icc_get_colorspace (CdIcc *icc);

Gets the profile colorspace

#### Parameters

icc | a CdIcc instance. |

#### Returns

The profile colorspace, e.g. `CD_COLORSPACE_RGB`

Since 0.1.32

### cd_icc_set_colorspace ()

    void
    cd_icc_set_colorspace (CdIcc *icc,
                           CdColorspace colorspace);

Sets the colorspace kind.

#### Parameters

icc | a CdIcc instance. |
colorspace | the profile colorspace, e.g. `CD_COLORSPACE_RGB` |

Since 0.1.32

### cd_icc_get_metadata ()

    GHashTable *
    cd_icc_get_metadata (CdIcc *icc);

Gets all the metadata from the ICC profile.

#### Parameters

icc | A valid CdIcc |

#### Returns

The profile metadata.

[transfer container]

Since 0.1.32

### cd_icc_get_metadata_item ()

    const gchar *
    cd_icc_get_metadata_item (CdIcc *icc,
                              const gchar *key);

Gets an item of data from the ICC metadata store.

#### Parameters

icc | A valid CdIcc |
key | the dictionary key |

#### Returns

The dictionary data, or `NULL` if the key does not exist.

Since 0.1.32

### cd_icc_add_metadata ()

    void
    cd_icc_add_metadata (CdIcc *icc,
                         const gchar *key,
                         const gchar *value);

Sets an item of data to the profile metadata, overwriting it if it already exists.

#### Parameters

icc | A valid CdIcc |
key | the metadata key |
value | the metadata value |

Since 0.1.32

### cd_icc_remove_metadata ()

    void
    cd_icc_remove_metadata (CdIcc *icc,
                            const gchar *key);

Removes an item of metadata.

#### Parameters

icc | A valid CdIcc |
key | the metadata key |

Since 0.1.32

### cd_icc_get_named_colors ()

    GPtrArray *
    cd_icc_get_named_colors (CdIcc *icc);

Gets any named colors in the profile. This function will only return results if the profile was loaded with the `CD_ICC_LOAD_FLAGS_NAMED_COLORS` flag.

#### Parameters

icc | a CdIcc instance. |

#### Returns

An array of color swatches.

[transfer container][element-type CdColorSwatch]

Since 0.1.32

### cd_icc_get_can_delete ()

    gboolean
    cd_icc_get_can_delete (CdIcc *icc);

Finds out if the profile could be deleted. This is only applicable for profiles loaded with `cd_icc_load_file()` as obviously data and fd's cannot be sanely unlinked.

#### Parameters

icc | a CdIcc instance. |

#### Returns

`TRUE` if `g_file_delete()` would likely work

Since 0.1.32

### cd_icc_get_created ()

    GDateTime *
    cd_icc_get_created (CdIcc *icc);

Gets the ICC creation date and time.

#### Parameters

icc | A valid CdIcc |

#### Returns

A GDateTime object, or `NULL` for not set

Since 0.1.32

### cd_icc_get_checksum ()

    const gchar *
    cd_icc_get_checksum (CdIcc *icc);

Gets the profile checksum if one exists. This will either be the embedded profile ID, or the file checksum if the CdIcc object was loaded using `cd_icc_load_data()` or `cd_icc_load_file()` and the `CD_ICC_LOAD_FLAGS_FALLBACK_MD5` flag is used.

#### Parameters

icc | A valid CdIcc |

#### Returns

An embedded MD5 checksum, or `NULL` for not set

Since 0.1.32

### cd_icc_get_description ()

    const gchar *
    cd_icc_get_description (CdIcc *icc,
                            const gchar *locale,
                            GError **error);

Gets the profile description. If the translated text is not available in the selected locale then the default untranslated (en_US) text is returned.

#### Parameters

icc | A valid CdIcc |
locale | A locale, e.g. "en_GB.UTF-8" or `NULL` for the profile default |
error | A GError or `NULL` |

#### Returns

The text as a UTF-8 string, or `NULL` of the locale is invalid or the tag does not exist.

Since 0.1.32

### cd_icc_get_copyright ()

    const gchar *
    cd_icc_get_copyright (CdIcc *icc,
                          const gchar *locale,
                          GError **error);

Gets the profile copyright. If the translated text is not available in the selected locale then the default untranslated (en_US) text is returned.

#### Parameters

icc | A valid CdIcc |
locale | A locale, e.g. "en_GB.UTF-8" or `NULL` for the profile default |
error | A GError or `NULL` |

#### Returns

The text as a UTF-8 string, or `NULL` of the locale is invalid or the tag does not exist.

Since 0.1.32

### cd_icc_get_manufacturer ()

    const gchar *
    cd_icc_get_manufacturer (CdIcc *icc,
                             const gchar *locale,
                             GError **error);

Gets the profile manufacturer. If the translated text is not available in the selected locale then the default untranslated (en_US) text is returned.

#### Parameters

icc | A valid CdIcc |
locale | A locale, e.g. "en_GB.UTF-8" or `NULL` for the profile default |
error | A GError or `NULL` |

#### Returns

The text as a UTF-8 string, or `NULL` of the locale is invalid or the tag does not exist.

Since 0.1.32

### cd_icc_get_model ()

    const gchar *
    cd_icc_get_model (CdIcc *icc,
                      const gchar *locale,
                      GError **error);

Gets the profile model. If the translated text is not available in the selected locale then the default untranslated (en_US) text is returned.

#### Parameters

icc | A valid CdIcc |
locale | A locale, e.g. "en_GB.UTF-8" or `NULL` for the profile default |
error | A GError or `NULL` |

#### Returns

The text as a UTF-8 string, or `NULL` of the locale is invalid or the tag does not exist.

Since 0.1.32

### cd_icc_set_description ()

    void
    cd_icc_set_description (CdIcc *icc,
                            const gchar *locale,
                            const gchar *value);

Sets the profile description for a specific locale.

#### Parameters

icc | A valid CdIcc |
locale | A locale, e.g. "en_GB.UTF-8" or `NULL` for the profile default |
value | New string value |

Since 0.1.32

### cd_icc_set_description_items ()

    void
    cd_icc_set_description_items (CdIcc *icc,
                                  GHashTable *values);

Sets the profile descriptions for specific locales.

#### Parameters

icc | A valid CdIcc |
values | New translated values, with the key being the locale. |

Since 0.1.32

### cd_icc_set_copyright ()

    void
    cd_icc_set_copyright (CdIcc *icc,
                          const gchar *locale,
                          const gchar *value);

Sets the profile _copyright for a specific locale.

#### Parameters

icc | A valid CdIcc |
locale | A locale, e.g. "en_GB.UTF-8" or `NULL` for the profile default |
value | New string value |

Since 0.1.32

### cd_icc_set_copyright_items ()

    void
    cd_icc_set_copyright_items (CdIcc *icc,
                                GHashTable *values);

Sets the profile copyrights for specific locales.

#### Parameters

icc | A valid CdIcc |
values | New translated values, with the key being the locale. |

Since 0.1.32

### cd_icc_set_manufacturer ()

    void
    cd_icc_set_manufacturer (CdIcc *icc,
                             const gchar *locale,
                             const gchar *value);

Sets the profile manufacturer for a specific locale.

#### Parameters

icc | A valid CdIcc |
locale | A locale, e.g. "en_GB.UTF-8" or `NULL` for the profile default |
value | New string value |

Since 0.1.32

### cd_icc_set_manufacturer_items ()

    void
    cd_icc_set_manufacturer_items (CdIcc *icc,
                                   GHashTable *values);

Sets the profile manufacturers for specific locales.

#### Parameters

icc | A valid CdIcc |
values | New translated values, with the key being the locale. |

Since 0.1.32

### cd_icc_set_model ()

    void
    cd_icc_set_model (CdIcc *icc,
                      const gchar *locale,
                      const gchar *value);

Sets the profile model for a specific locale.

#### Parameters

icc | A valid CdIcc |
locale | A locale, e.g. "en_GB.UTF-8" or `NULL` for the profile default |
value | New string value |

Since 0.1.32

### cd_icc_set_model_items ()

    void
    cd_icc_set_model_items (CdIcc *icc,
                            GHashTable *values);

Sets the profile models for specific locales.

#### Parameters

icc | A valid CdIcc |
values | New translated values, with the key being the locale. |

Since 0.1.32

### cd_icc_get_red ()

    const CdColorXYZ *
    cd_icc_get_red (CdIcc *icc);

Gets the profile red chromaticity value. This function will only return results if the profile was loaded with the `CD_ICC_LOAD_FLAGS_PRIMARIES` flag.

#### Parameters

icc | a valid CdIcc instance |

#### Returns

the CdColorXYZ value

Since 0.1.32

### cd_icc_get_green ()

    const CdColorXYZ *
    cd_icc_get_green (CdIcc *icc);

Gets the profile green chromaticity value. This function will only return results if the profile was loaded with the `CD_ICC_LOAD_FLAGS_PRIMARIES` flag.

#### Parameters

icc | a valid CdIcc instance |

#### Returns

the CdColorXYZ value

Since 0.1.32

### cd_icc_get_blue ()

    const CdColorXYZ *
    cd_icc_get_blue (CdIcc *icc);

Gets the profile red chromaticity value. This function will only return results if the profile was loaded with the `CD_ICC_LOAD_FLAGS_PRIMARIES` flag.

#### Parameters

icc | a valid CdIcc instance |

#### Returns

the CdColorXYZ value

Since 0.1.32

### cd_icc_get_white ()

    const CdColorXYZ *
    cd_icc_get_white (CdIcc *icc);

Gets the profile white point. This function will only return results if the profile was loaded with the `CD_ICC_LOAD_FLAGS_PRIMARIES` flag.

#### Parameters

icc | a valid CdIcc instance |

#### Returns

the CdColorXYZ value

Since 0.1.32

### cd_icc_get_temperature ()

    guint
    cd_icc_get_temperature (CdIcc *icc);

Gets the ICC color temperature, rounded to the nearest 100K. This function will only return results if the profile was loaded with the `CD_ICC_LOAD_FLAGS_PRIMARIES` flag.

#### Parameters

icc | A valid CdIcc |

#### Returns

The color temperature in Kelvin, or 0 for error.

Since 0.1.32

### cd_icc_get_warnings ()

    GArray *
    cd_icc_get_warnings (CdIcc *icc);

Returns any warnings with profiles

#### Parameters

icc | a CdIcc instance. |

#### Returns

An array of warning values.

[transfer container][element-type CdProfileWarning]

Since 0.1.34

### cd_icc_create_from_edid ()

    gboolean
    cd_icc_create_from_edid (CdIcc *icc,
                             gdouble gamma_value,
                             const CdColorYxy *red,
                             const CdColorYxy *green,
                             const CdColorYxy *blue,
                             const CdColorYxy *white,
                             GError **error);

Creates an ICC profile from EDID data.

#### Parameters

icc | A valid CdIcc |
gamma_value | approximate device gamma |
red | primary color value |
green | primary color value |
blue | primary color value |
white | whitepoint value |
error | A GError, or `NULL` |

#### Returns

`TRUE` for success

Since 0.1.32

### cd_icc_get_vcgt ()

    GPtrArray *
    cd_icc_get_vcgt (CdIcc *icc,
                     guint size,
                     GError **error);

Gets the video card calibration data from the profile.

#### Parameters

icc | A valid CdIcc |
size | the desired size of the table data |
error | A GError or `NULL` |

#### Returns

VCGT data, or `NULL` for error.

[transfer container][element-type CdColorRGB]

Since 0.1.34

### cd_icc_set_vcgt ()

    gboolean
    cd_icc_set_vcgt (CdIcc *icc,
                     GPtrArray *vcgt,
                     GError **error);

Sets the Video Card Gamma Table from the profile.

Return vale: `TRUE` for success.

#### Parameters

icc | A valid CdIcc |
vcgt | video card calibration data. | [element-type CdColorRGB]
error | A GError or `NULL` |

#### Returns

Since 0.1.34

### cd_icc_get_response ()

    GPtrArray *
    cd_icc_get_response (CdIcc *icc,
                         guint size,
                         GError **error);

Generates a response curve of a specified size.

#### Parameters

icc | A valid CdIcc |
size | the size of the curve to generate |
error | a valid GError, or `NULL` |

#### Returns

response data, or `NULL` for error.

[transfer container][element-type CdColorRGB]

Since 0.1.34

## Types and Values

### CD_ICC_ERROR

    #define CD_ICC_ERROR		(cd_icc_error_quark ())

### CD_ICC_TYPE_ERROR

    #define CD_ICC_TYPE_ERROR (cd_icc_error_get_type ())

### enum CdIccError

The ICC error code.

#### Members

CD_ICC_ERROR_FAILED_TO_OPEN | Failed to open file |
CD_ICC_ERROR_FAILED_TO_PARSE | Failed to parse data |
CD_ICC_ERROR_INVALID_LOCALE | Locale was invalid |
CD_ICC_ERROR_NO_DATA | No data to read |
CD_ICC_ERROR_FAILED_TO_SAVE | Failed to save file |
CD_ICC_ERROR_FAILED_TO_CREATE | Failed to create file |
CD_ICC_ERROR_INVALID_COLORSPACE | Invalid colorspace |
CD_ICC_ERROR_LAST |  |

Since 0.1.32

### enum CdIccLoadFlags

Flags used when loading an ICC profile.

#### Members

CD_ICC_LOAD_FLAGS_NONE | No flags set. |
CD_ICC_LOAD_FLAGS_NAMED_COLORS | Parse any named colors in the profile. |
CD_ICC_LOAD_FLAGS_TRANSLATIONS | Parse all translations in the profile. |
CD_ICC_LOAD_FLAGS_METADATA | Parse the metadata in the profile. |
CD_ICC_LOAD_FLAGS_FALLBACK_MD5 | Calculate the profile MD5 if a profile ID was not supplied in the profile. |
CD_ICC_LOAD_FLAGS_PRIMARIES | Parse the primaries in the profile. |
CD_ICC_LOAD_FLAGS_ALL |  |
CD_ICC_LOAD_FLAGS_LAST |  |

Since 0.1.32

### enum CdIccSaveFlags

Flags used when saving an ICC profile.

#### Members

CD_ICC_SAVE_FLAGS_NONE | No flags set. |
CD_ICC_SAVE_FLAGS_LAST |  |

Since 0.1.32