cd-color

cd-color — Color object data functionality

Synopsis

                    CdColorRGB8;
const gchar *       cd_color_swatch_get_name            (const CdColorSwatch *swatch);
const CdColorLab *  cd_color_swatch_get_value           (const CdColorSwatch *swatch);
CdColorXYZ *        cd_color_xyz_new                    (void);
CdColorLab *        cd_color_lab_new                    (void);
CdColorRGB *        cd_color_rgb_new                    (void);
CdColorYxy *        cd_color_yxy_new                    (void);
CdColorUVW *        cd_color_uvw_new                    (void);
CdColorSwatch *     cd_color_swatch_new                 (void);
void                cd_color_xyz_free                   (CdColorXYZ *src);
void                cd_color_rgb_free                   (CdColorRGB *src);
void                cd_color_lab_free                   (CdColorLab *src);
void                cd_color_yxy_free                   (CdColorYxy *src);
void                cd_color_uvw_free                   (CdColorUVW *src);
void                cd_color_swatch_free                (CdColorSwatch *src);
CdColorXYZ *        cd_color_xyz_dup                    (const CdColorXYZ *src);
CdColorLab *        cd_color_lab_dup                    (const CdColorLab *src);
CdColorRGB *        cd_color_rgb_dup                    (const CdColorRGB *src);
CdColorYxy *        cd_color_yxy_dup                    (const CdColorYxy *src);
CdColorUVW *        cd_color_uvw_dup                    (const CdColorUVW *src);
CdColorSwatch *     cd_color_swatch_dup                 (const CdColorSwatch *src);
void                cd_color_xyz_set                    (CdColorXYZ *dest,
                                                         gdouble X,
                                                         gdouble Y,
                                                         gdouble Z);
void                cd_color_rgb_set                    (CdColorRGB *dest,
                                                         gdouble R,
                                                         gdouble G,
                                                         gdouble B);
void                cd_color_lab_set                    (CdColorLab *dest,
                                                         gdouble L,
                                                         gdouble a,
                                                         gdouble b);
void                cd_color_yxy_set                    (CdColorYxy *dest,
                                                         gdouble Y,
                                                         gdouble x,
                                                         gdouble y);
void                cd_color_uvw_set                    (CdColorUVW *dest,
                                                         gdouble U,
                                                         gdouble V,
                                                         gdouble W);
void                cd_color_swatch_set_name            (CdColorSwatch *dest,
                                                         const gchar *name);
void                cd_color_swatch_set_value           (CdColorSwatch *dest,
                                                         const CdColorLab *value);
void                cd_color_xyz_copy                   (const CdColorXYZ *src,
                                                         CdColorXYZ *dest);
void                cd_color_yxy_copy                   (const CdColorYxy *src,
                                                         CdColorYxy *dest);
void                cd_color_uvw_copy                   (const CdColorUVW *src,
                                                         CdColorUVW *dest);
void                cd_color_lab_copy                   (const CdColorLab *src,
                                                         CdColorLab *dest);
gdouble             cd_color_lab_delta_e76              (const CdColorLab *p1,
                                                         const CdColorLab *p2);
void                cd_color_xyz_clear                  (CdColorXYZ *dest);
void                cd_color_rgb_copy                   (const CdColorRGB *src,
                                                         CdColorRGB *dest);
void                cd_color_rgb8_to_rgb                (const CdColorRGB8 *src,
                                                         CdColorRGB *dest);
void                cd_color_rgb_to_rgb8                (const CdColorRGB *src,
                                                         CdColorRGB8 *dest);
void                cd_color_yxy_to_xyz                 (const CdColorYxy *src,
                                                         CdColorXYZ *dest);
void                cd_color_xyz_to_yxy                 (const CdColorXYZ *src,
                                                         CdColorYxy *dest);
void                cd_color_xyz_to_uvw                 (const CdColorXYZ *src,
                                                         const CdColorXYZ *whitepoint,
                                                         CdColorUVW *dest);
void                cd_color_yxy_to_uvw                 (const CdColorYxy *src,
                                                         CdColorUVW *dest);
void                cd_color_uvw_set_planckian_locus    (CdColorUVW *dest,
                                                         gdouble temp);
gdouble             cd_color_uvw_get_chroma_difference  (const CdColorUVW *p1,
                                                         const CdColorUVW *p2);
gboolean            cd_color_get_blackbody_rgb          (guint temp,
                                                         CdColorRGB *result);
void                cd_color_rgb_interpolate            (const CdColorRGB *p1,
                                                         const CdColorRGB *p2,
                                                         gdouble index,
                                                         CdColorRGB *result);
gdouble             cd_color_xyz_to_cct                 (const CdColorXYZ *src);
void                cd_color_xyz_normalize              (const CdColorXYZ *src,
                                                         gdouble max,
                                                         CdColorXYZ *dest);
GPtrArray *         cd_color_rgb_array_new              (void);
gboolean            cd_color_rgb_array_is_monotonic     (const GPtrArray *array);
GPtrArray *         cd_color_rgb_array_interpolate      (const GPtrArray *array,
                                                         guint new_length);

Description

Functions to manipulate color values.

Details

CdColorRGB8

typedef struct {
	guint8	 R;
	guint8	 G;
	guint8	 B;
} CdColorRGB8;


cd_color_swatch_get_name ()

const gchar *       cd_color_swatch_get_name            (const CdColorSwatch *swatch);

Since 0.1.32


cd_color_swatch_get_value ()

const CdColorLab *  cd_color_swatch_get_value           (const CdColorSwatch *swatch);

Since 0.1.32


cd_color_xyz_new ()

CdColorXYZ *        cd_color_xyz_new                    (void);

Allocates a color value.

Returns :

A newly allocated CdColorXYZ object

Since 0.1.0


cd_color_lab_new ()

CdColorLab *        cd_color_lab_new                    (void);

Allocates a color value.

Returns :

A newly allocated CdColorLab object

Since 0.1.32


cd_color_rgb_new ()

CdColorRGB *        cd_color_rgb_new                    (void);

Allocates a color value.

Returns :

A newly allocated CdColorRGB object

Since 0.1.0


cd_color_yxy_new ()

CdColorYxy *        cd_color_yxy_new                    (void);

Allocates a color value.

Returns :

A newly allocated CdColorYxy object

Since 0.1.0


cd_color_uvw_new ()

CdColorUVW *        cd_color_uvw_new                    (void);

Allocates a color value.

Returns :

A newly allocated CdColorUVW object

Since 1.1.6


cd_color_swatch_new ()

CdColorSwatch *     cd_color_swatch_new                 (void);

Allocates a color value.

Returns :

A newly allocated CdColorSwatch object

Since 0.1.32


cd_color_xyz_free ()

void                cd_color_xyz_free                   (CdColorXYZ *src);

Deallocates a color value.

src :

the color object

Since 0.1.0


cd_color_rgb_free ()

void                cd_color_rgb_free                   (CdColorRGB *src);

Deallocates a color value.

src :

the color object

Since 0.1.0


cd_color_lab_free ()

void                cd_color_lab_free                   (CdColorLab *src);

Deallocates a color value.

src :

the color object

Since 0.1.32


cd_color_yxy_free ()

void                cd_color_yxy_free                   (CdColorYxy *src);

Deallocates a color value.

src :

the color object

Since 0.1.0


cd_color_uvw_free ()

void                cd_color_uvw_free                   (CdColorUVW *src);

Deallocates a color value.

src :

the color object

Since 1.1.6


cd_color_swatch_free ()

void                cd_color_swatch_free                (CdColorSwatch *src);

Deallocates a color swatch.

src :

the color object

Since 0.1.32


cd_color_xyz_dup ()

CdColorXYZ *        cd_color_xyz_dup                    (const CdColorXYZ *src);

Since 0.1.27


cd_color_lab_dup ()

CdColorLab *        cd_color_lab_dup                    (const CdColorLab *src);

Since 0.1.32


cd_color_rgb_dup ()

CdColorRGB *        cd_color_rgb_dup                    (const CdColorRGB *src);

Since 0.1.27


cd_color_yxy_dup ()

CdColorYxy *        cd_color_yxy_dup                    (const CdColorYxy *src);

Since 0.1.27


cd_color_uvw_dup ()

CdColorUVW *        cd_color_uvw_dup                    (const CdColorUVW *src);

Since 1.1.6


cd_color_swatch_dup ()

CdColorSwatch *     cd_color_swatch_dup                 (const CdColorSwatch *src);

Since 0.1.32


cd_color_xyz_set ()

void                cd_color_xyz_set                    (CdColorXYZ *dest,
                                                         gdouble X,
                                                         gdouble Y,
                                                         gdouble Z);

Initialises a color value.

dest :

the destination color

X :

component value

Y :

component value

Z :

component value

Since 0.1.27


cd_color_rgb_set ()

void                cd_color_rgb_set                    (CdColorRGB *dest,
                                                         gdouble R,
                                                         gdouble G,
                                                         gdouble B);

Initialises a color value.

dest :

the destination color

R :

component value

G :

component value

B :

component value

Since 0.1.27


cd_color_lab_set ()

void                cd_color_lab_set                    (CdColorLab *dest,
                                                         gdouble L,
                                                         gdouble a,
                                                         gdouble b);

Initialises a color value.

dest :

the destination color

L :

component value

a :

component value

b :

component value

Since 0.1.32


cd_color_yxy_set ()

void                cd_color_yxy_set                    (CdColorYxy *dest,
                                                         gdouble Y,
                                                         gdouble x,
                                                         gdouble y);

Initialises a color value.

dest :

the destination color

Y :

component value

x :

component value

y :

component value

Since 0.1.27


cd_color_uvw_set ()

void                cd_color_uvw_set                    (CdColorUVW *dest,
                                                         gdouble U,
                                                         gdouble V,
                                                         gdouble W);

Initialises a color value.

dest :

the destination color

U :

component value

V :

component value

W :

component value

Since 1.1.6


cd_color_swatch_set_name ()

void                cd_color_swatch_set_name            (CdColorSwatch *dest,
                                                         const gchar *name);

Initialises a swatch name.

dest :

the destination swatch

name :

component name

Since 0.1.32


cd_color_swatch_set_value ()

void                cd_color_swatch_set_value           (CdColorSwatch *dest,
                                                         const CdColorLab *value);

Initialises a swatch value.

dest :

the destination swatch

value :

component value

Since 0.1.32


cd_color_xyz_copy ()

void                cd_color_xyz_copy                   (const CdColorXYZ *src,
                                                         CdColorXYZ *dest);

Deep copies a color value.

src :

the source color

dest :

the destination color

Since 0.1.27


cd_color_yxy_copy ()

void                cd_color_yxy_copy                   (const CdColorYxy *src,
                                                         CdColorYxy *dest);

Deep copies a color value.

src :

the source color

dest :

the destination color

Since 0.1.27


cd_color_uvw_copy ()

void                cd_color_uvw_copy                   (const CdColorUVW *src,
                                                         CdColorUVW *dest);

Deep copies a color value.

src :

the source color

dest :

the destination color

Since 1.1.6


cd_color_lab_copy ()

void                cd_color_lab_copy                   (const CdColorLab *src,
                                                         CdColorLab *dest);

Deep copies a color value.

src :

the source color

dest :

the destination color

Since 0.1.32


cd_color_lab_delta_e76 ()

gdouble             cd_color_lab_delta_e76              (const CdColorLab *p1,
                                                         const CdColorLab *p2);

Calculates the ΔE of two colors using the 1976 formula.

p1 :

Lab value 1

p2 :

Lab value 2

Returns :

distance metric, where JND ΔE ≈ 2.3

Since 0.1.32


cd_color_xyz_clear ()

void                cd_color_xyz_clear                  (CdColorXYZ *dest);

Initialises a color value.

dest :

the destination color

Since 0.1.27


cd_color_rgb_copy ()

void                cd_color_rgb_copy                   (const CdColorRGB *src,
                                                         CdColorRGB *dest);

Deep copies a color value.

src :

the source color

dest :

the destination color

Since 0.1.27


cd_color_rgb8_to_rgb ()

void                cd_color_rgb8_to_rgb                (const CdColorRGB8 *src,
                                                         CdColorRGB *dest);

Convert from one color format to another.

src :

the source color

dest :

the destination color

Since 0.1.27


cd_color_rgb_to_rgb8 ()

void                cd_color_rgb_to_rgb8                (const CdColorRGB *src,
                                                         CdColorRGB8 *dest);

Convert from one color format to another.

src :

the source color

dest :

the destination color

Since 0.1.27


cd_color_yxy_to_xyz ()

void                cd_color_yxy_to_xyz                 (const CdColorYxy *src,
                                                         CdColorXYZ *dest);

Convert from one color format to another.

src :

the source color

dest :

the destination color

Since 0.1.27


cd_color_xyz_to_yxy ()

void                cd_color_xyz_to_yxy                 (const CdColorXYZ *src,
                                                         CdColorYxy *dest);

Convert from one color format to another.

src :

the source color

dest :

the destination color

Since 0.1.27


cd_color_xyz_to_uvw ()

void                cd_color_xyz_to_uvw                 (const CdColorXYZ *src,
                                                         const CdColorXYZ *whitepoint,
                                                         CdColorUVW *dest);

Convert from one color format to another.

src :

the source color

whitepoint :

the whitepoint

dest :

the destination color

Since 1.1.6


cd_color_yxy_to_uvw ()

void                cd_color_yxy_to_uvw                 (const CdColorYxy *src,
                                                         CdColorUVW *dest);

Convert from one color format to another.

src :

the source color

dest :

the destination color

Since 1.1.6


cd_color_uvw_set_planckian_locus ()

void                cd_color_uvw_set_planckian_locus    (CdColorUVW *dest,
                                                         gdouble temp);

Sets the CIEUVW color from a Planckian locus of specific temperature.

dest :

destination color

temp :

temperature in Kelvin

Since 1.1.6


cd_color_uvw_get_chroma_difference ()

gdouble             cd_color_uvw_get_chroma_difference  (const CdColorUVW *p1,
                                                         const CdColorUVW *p2);

Gets the chromaticity distance in the CIE 1960 UCS.

p1 :

color

p2 :

color

Returns :

The Euclidean distance

Since 1.1.6


cd_color_get_blackbody_rgb ()

gboolean            cd_color_get_blackbody_rgb          (guint temp,
                                                         CdColorRGB *result);

Get the blackbody color for a specific temperature. If the temperature range is outside 1000K to 10000K then the result is clipped.

temp :

the temperature in Kelvin

result :

the destination color

Returns :

TRUE if temp was in range and the result accurate

Since 0.1.26


cd_color_rgb_interpolate ()

void                cd_color_rgb_interpolate            (const CdColorRGB *p1,
                                                         const CdColorRGB *p2,
                                                         gdouble index,
                                                         CdColorRGB *result);

Since 0.1.26


cd_color_xyz_to_cct ()

gdouble             cd_color_xyz_to_cct                 (const CdColorXYZ *src);

Gets the correlated color temperature for the XYZ value.

src :

the source color

Since 1.1.6


cd_color_xyz_normalize ()

void                cd_color_xyz_normalize              (const CdColorXYZ *src,
                                                         gdouble max,
                                                         CdColorXYZ *dest);

Normalizes src to y=1.0

src :

the source color

dest :

the destination color

Since 1.1.6


cd_color_rgb_array_new ()

GPtrArray *         cd_color_rgb_array_new              (void);

Creates a new RGB array.

Returns :

New array. [element-type CdColorRGB][transfer full]

Since 0.1.31


cd_color_rgb_array_is_monotonic ()

gboolean            cd_color_rgb_array_is_monotonic     (const GPtrArray *array);

Checks the array for monotonicity.

array :

Input array. [element-type CdColorRGB]

Returns :

TRUE if the array is monotonic

Since 0.1.31


cd_color_rgb_array_interpolate ()

GPtrArray *         cd_color_rgb_array_interpolate      (const GPtrArray *array,
                                                         guint new_length);

Interpolate the RGB array to a different size. This uses the Akima interpolation algorithm unless the array would become non-monotonic, in which case it falls back to linear interpolation.

array :

Input array. [element-type CdColorRGB]

new_length :

the target length of the return array

Returns :

An array of size new_length or NULL. [element-type CdColorRGB][transfer full]

Since 0.1.31