Skip to content

Instantly share code, notes, and snippets.

@andremedeiros
Created June 4, 2014 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andremedeiros/75979fff98f5a8af85f7 to your computer and use it in GitHub Desktop.
Save andremedeiros/75979fff98f5a8af85f7 to your computer and use it in GitHub Desktop.
void
dz_cmyk_to_rgb(fz_context *ctx, fz_colorspace *cs, const float *cmyk, float *rgb) {
static cmsHTRANSFORM transform = NULL;
if(!transform) {
cmsHPROFILE cmyk_profile, rgb_profile;
size_t cmyk_size, rgb_size;
const char *cmyk_data = find_embedded_file("cmyk.icc", &cmyk_size);
const char *rgb_data = find_embedded_file("srgb.icc", &rgb_size);
cmyk_profile = cmsOpenProfileFromMem(cmyk_data, cmyk_size);
rgb_profile = cmsOpenProfileFromMem(rgb_data, rgb_size);
transform = cmsCreateTransform(cmyk_profile, TYPE_CMYK_FLT,
rgb_profile, TYPE_RGBA_FLT,
INTENT_PERCEPTUAL, 0);
cmsCloseProfile(cmyk_profile);
cmsCloseProfile(rgb_profile);
}
float scaled_cmyk[4] = { cmyk[0] * 100.0, cmyk[1] * 100.0, cmyk[2] * 100.0, cmyk[3] * 100.0 };
cmsDoTransform(transform, &scaled_cmyk, rgb, 1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment