/* from a dictionary. */ static int dict_spot_params(const ref * pdict, gs_spot_halftone * psp, ref * psproc, ref * ptproc) { int code; check_dict_read(*pdict); if ((code = dict_float_param(pdict, "Frequency", 0.0, &psp->screen.frequency)) != 0 || (code = dict_float_param(pdict, "Angle", 0.0, &psp->screen.angle)) != 0 || (code = dict_proc_param(pdict, "SpotFunction", psproc, false)) != 0 || (code = dict_bool_param(pdict, "AccurateScreens", gs_currentaccuratescreens(), &psp->accurate_screens)) < 0 || (code = dict_proc_param(pdict, "TransferFunction", ptproc, false)) < 0 ) return (code < 0 ? code : e_undefined); psp->transfer = (code > 0 ? (gs_mapping_proc) 0 : gs_mapped_transfer); psp->transfer_closure.proc = 0; psp->transfer_closure.data = 0; return 0; }
/* <frequency> <angle> <proc> setscreen - */ static int zsetscreen(i_ctx_t *i_ctx_p) { os_ptr op = osp; gs_screen_halftone screen; gx_ht_order order; int code = zscreen_params(op, &screen); gs_memory_t *mem; int space_index = r_space_index(op); if (code < 0) return code; mem = (gs_memory_t *)idmemory->spaces_indexed[space_index]; /* * Allocate the halftone in the same VM space as the procedure. * This keeps the space relationships consistent. */ code = gs_screen_order_init_memory(&order, igs, &screen, gs_currentaccuratescreens(mem), mem); if (code < 0) return code; return zscreen_enum_init(i_ctx_p, &order, &screen, op, 3, setscreen_finish, space_index); }
/* Boolean values */ static bool current_AccurateScreens(i_ctx_t *i_ctx_p) { return gs_currentaccuratescreens(imemory); }