Beispiel #1
0
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;
}