coloritto.h 4.74 KB
Newer Older
1 2 3 4 5 6 7
#ifndef COLORITTO_H
#define COLORITTO_H

typedef enum ColorittoDef {
  COLORITTO_SCALAR                           = 1 << 0,
  COLORITTO_LAB                              = 1 << 1,
  COLORITTO_LCH                              = 1 << 2,
8
  COLORITTO_DISPLAY_RGB                      = 1 << 3,
9 10 11 12 13 14 15
  COLORITTO_SRGB                             = 1 << 4,
  COLORITTO_XYZ                              = 1 << 5,
  COLORITTO_xyY                              = 1 << 6,
  COLORITTO_SPECTRUM_ON_WHITE                = 1 << 7,
  COLORITTO_SPECTRUM_ON_WHITE_RAMP           = 1 << 8,
  COLORITTO_SPECTRUM_ON_WHITE_AND_BLACK      = 1 << 9,
  COLORITTO_SPECTRUM_ON_WHITE_AND_BLACK_RAMP = 1 << 10,
16 17 18

  COLORITTO_SET                              = 1 << 20,

19 20 21
} ColorittoDef;

typedef struct _Coloritto Coloritto;
22 23 24
typedef struct _ColorittoCollection ColorittoCollection;

Coloritto            *coloritto_new          (void);
25 26
Coloritto            *coloritto_ref          (Coloritto *color);
void                  coloritto_unref        (Coloritto *color);
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
void                  coloritto_destroy      (Coloritto *color);

void                  coloritto_set          (Coloritto    *color,
                                              ColorittoDef  color_type,
                                              const float  *data);

int                   coloritto_is_set       (Coloritto    *color,
                                              ColorittoDef  color_type);

void                  coloritto_get          (Coloritto   *color,
                                              ColorittoDef color_type,
                                              float       *data);

void                  coloritto_set_spectrum (Coloritto   *color,
                                              int          on_white,
                                              float        coverage,
                                              const float *spectrum);
44

45 46 47 48 49 50
/* interpolate? how to know which values are valid - is it relevant ? */
void                  coloritto_get_spectrum (Coloritto   *color,
                                              int          on_white,
                                              float        coverage,
                                              float       *spectrum);

51 52
float                 coloritto_get_coverage_start (Coloritto *color);
float                 coloritto_get_coverage_gap   (Coloritto *color);
53 54 55 56 57 58

void                  coloritto_set_name (Coloritto *color, const char *name);
const char           *coloritto_get_name (Coloritto *color);
void                  coloritto_set_key  (Coloritto *color, const char *key,
                                          const char *value);
const char           *coloritto_get_key  (Coloritto *color, const char *key);
59
const char          **coloritto_get_keys (Coloritto *color);
60 61 62 63 64 65

ColorittoCollection  *coloritto_collection_new (void);
void                  coloritto_collection_destroy (ColorittoCollection *cc);

void coloritto_collection_load_cxf (ColorittoCollection *cc, const char *cxf_data);
ColorittoCollection * coloritto_collection_new_from_cxf (const char *cxf_data);
66
ColorittoCollection * coloritto_collection_new_from_cxf_path (const char *cxf_path);
67 68 69 70 71 72 73 74 75

int                   coloritto_collection_count (ColorittoCollection *cc);

Coloritto *           coloritto_collection_get_no (ColorittoCollection *cc,
                                                   int                  no);

char *                coloritto_collection_to_cxf (ColorittoCollection *cc);
char *                coloritto_collection_to_luz (ColorittoCollection *cc);

76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
void                  coloritto_collection_set_no (ColorittoCollection *cc,
                                                   int                  no,
                                                   Coloritto           *coloritto);
void                  coloritto_collection_insert_no (ColorittoCollection *cc,
                                                      int                  no,
                                                      Coloritto           *coloritto);
void                  coloritto_collection_remove_no (ColorittoCollection *cc,
                                                      int                  no);

void                  coloritto_collection_set_key   (ColorittoCollection *cc,
                                                      const char *key,
                                                      const char *value);
const char           *coloritto_collection_get_key   (ColorittoCollection *cc,
                                                      const char *key);
const char          **coloritto_collection_get_keys  (ColorittoCollection *cc);
void                  coloritto_set_display_icc      (const char *icc_data,
                                                      int icc_length);
93 94

#endif