int gs_setcolortransfer(gs_state *pgs, gs_mapping_proc red_proc, gs_mapping_proc green_proc, gs_mapping_proc blue_proc, gs_mapping_proc gray_proc) { return gs_setcolortransfer_remap(pgs, red_proc, green_proc, blue_proc, gray_proc, true); }
/* <redproc> <greenproc> <blueproc> <grayproc> setcolortransfer - */ static int zsetcolortransfer(i_ctx_t *i_ctx_p) { os_ptr op = osp; int code; check_proc(op[-3]); check_proc(op[-2]); check_proc(op[-1]); check_proc(*op); check_ostack(zcolor_remap_one_ostack * 4 - 4); check_estack(1 + zcolor_remap_one_estack * 4); istate->transfer_procs.red = op[-3]; istate->transfer_procs.green = op[-2]; istate->transfer_procs.blue = op[-1]; istate->transfer_procs.gray = *op; if ((code = gs_setcolortransfer_remap(igs, gs_mapped_transfer, gs_mapped_transfer, gs_mapped_transfer, gs_mapped_transfer, false)) < 0 ) return code; /* Use osp rather than op here, because zcolor_remap_one pushes. */ pop(4); push_op_estack(zcolor_reset_transfer); if ((code = zcolor_remap_one(i_ctx_p, &istate->transfer_procs.red, igs->set_transfer.red, igs, zcolor_remap_one_finish)) < 0 || (code = zcolor_remap_one(i_ctx_p, &istate->transfer_procs.green, igs->set_transfer.green, igs, zcolor_remap_one_finish)) < 0 || (code = zcolor_remap_one(i_ctx_p, &istate->transfer_procs.blue, igs->set_transfer.blue, igs, zcolor_remap_one_finish)) < 0 || (code = zcolor_remap_one(i_ctx_p, &istate->transfer_procs.gray, igs->set_transfer.gray, igs, zcolor_remap_one_finish)) < 0 ) return code; return o_push_estack; }