Difference between revisions of "SpecIccForCairo"
Jump to navigation
Jump to search
(→Colors: typo) |
(Try to match cairo API a little better) |
||
Line 9: | Line 9: | ||
So a proposal would be: | So a proposal would be: | ||
typedef | typedef enum cairo_color_intent { | ||
CAIRO_COLOR_INTENT_PERCEPTUAL, | |||
CAIRO_COLOR_INTENT_RELATIVE_COLORIMETRIC, | |||
CAIRO_COLOR_INTENT_SATURATION, | |||
CAIRO_COLOR_INTENT_ABSOLUTE_COLORIMETRIC | |||
} cairo_color_intent_t; | |||
typedef struct cairo_color_profile cairo_color_profile_t; | |||
void | void cairo_pattern_add_profile_pair (cairo_pattern_t *pat, | ||
cairo_color_profile_t *in, | |||
cairo_color_profile_t *out); | |||
void | void cairo_pattern_remove_profiles (cairo_pattern_t *pat); | ||
void | void cairo_pattern_set_color_intent(cairo_pattern_t *pat, | ||
cairo_color_intent_t intent); | |||
== Colors== | == Colors== | ||
All the functions handling colors, like cairo_set_source_rgba and cairo_set_source_rgb, must be complemented (or replaced) with | All the functions handling colors, like cairo_set_source_rgba and cairo_set_source_rgb, must be complemented (or replaced) with | ||
void cairo_set_source_profiled_color (cairo_t *cr, void* color); | void cairo_set_source_profiled_color (cairo_t *cr, void* color); | ||
format of the color is the one defined by DWORD input_format. | format of the color is the one defined by DWORD input_format. |
Revision as of 18:53, 23 February 2008
Why
In order for inkscape to produce CMYK PDFs and PSs with cairo, Cairo needs to support ICC. This is an intent to propose a Cairo API that would be suitable with inkscape needs.
Profiles
A set of profiles will apply to the whole Cairo surface. Cairo needs to be able to compute a transform from this set. We can get inspiration from the lcms api [1], in particular the cmsCreateMultiprofileTransform (more generic than cmsCreateTransform that handles only a pair of color profiles).
So a proposal would be:
typedef enum cairo_color_intent { CAIRO_COLOR_INTENT_PERCEPTUAL, CAIRO_COLOR_INTENT_RELATIVE_COLORIMETRIC, CAIRO_COLOR_INTENT_SATURATION, CAIRO_COLOR_INTENT_ABSOLUTE_COLORIMETRIC } cairo_color_intent_t;
typedef struct cairo_color_profile cairo_color_profile_t; void cairo_pattern_add_profile_pair (cairo_pattern_t *pat, cairo_color_profile_t *in, cairo_color_profile_t *out); void cairo_pattern_remove_profiles (cairo_pattern_t *pat); void cairo_pattern_set_color_intent(cairo_pattern_t *pat, cairo_color_intent_t intent);
Colors
All the functions handling colors, like cairo_set_source_rgba and cairo_set_source_rgb, must be complemented (or replaced) with
void cairo_set_source_profiled_color (cairo_t *cr, void* color);
format of the color is the one defined by DWORD input_format.