/* * Create a local Device{Gray,RGB,CMYK} color space corresponding to the * given number of components. */ int pdf_cspace_init_Device(gs_memory_t *mem, gs_color_space **ppcs, int num_components) { switch (num_components) { case 1: *ppcs = gs_cspace_new_DeviceGray(mem); break; case 3: *ppcs = gs_cspace_new_DeviceRGB(mem); break; case 4: *ppcs = gs_cspace_new_DeviceCMYK(mem); break; default: return_error(gs_error_rangecheck); } return 0; }
/* setcmykcolor */ int gs_setcmykcolor(gs_gstate * pgs, double c, double m, double y, double k) { gs_color_space *pcs; int code; pcs = gs_cspace_new_DeviceCMYK(pgs->memory); if (pcs == NULL) return_error(gs_error_VMerror); if ((code = gs_setcolorspace(pgs, pcs)) >= 0) { gs_client_color *pcc = gs_currentcolor_inline(pgs); cs_adjust_color_count(pgs, -1); /* not strictly necessary */ pcc->paint.values[0] = FORCE_UNIT(c); pcc->paint.values[1] = FORCE_UNIT(m); pcc->paint.values[2] = FORCE_UNIT(y); pcc->paint.values[3] = FORCE_UNIT(k); pcc->pattern = 0; /* for GC */ gx_unset_dev_color(pgs); } rc_decrement_only_cs(pcs, "gs_setcmykcolor"); return code; }