[cairo] Subtractive API, part 0

ecir hana ecir.hana at gmail.com
Sat Jan 30 12:56:30 PST 2010


Just to write this down to make it a bit more clear: as it seems,
there are at least 3 ways how to write a cmyk definition (simple,
explicit, managed):

* "Simple":

For displaying it relies on the very basic conversion I mentioned
above. The conversion algorithm would be hard-coded in Cairo or there
would be a way to supply additional conversion function to Cairo.

void
cairo_set_source_cmyk(
    cairo_t *cr,
    double cyan,
    double magenta,
    double yellow,
    double black
);

* "Explicit":

For displaying it uses the RGB values supplied as additional function
arguments. Those values could possibly be already calibrated for the
current monitor, that would be the responsibility of the application
using Cairo. For images, you would need to supply two images: desired
cmyk, and rgb fallback for screen.

void
cairo_set_source_cmyk(
    cairo_t *cr,
    double cyan,
    double magenta,
    double yellow,
    double black,
    double fallback_red,
    double fallback_green,
    double fallback_blue
);

* "Managed":

Leaves the conversion to Cairo which means a user has to say what
devices it is intended to print and display on.

void
cairo_set_source_cmyk(
    cairo_t *cr,
    double cyan,
    double magenta,
    double yellow,
    cairo_icc_t *icc_printer,
    cairo_icc_t *icc_fallback,
);

I know each of the ways has its own issues but is this what are we
talking about so far?


More information about the cairo mailing list