/* GC procedures */ static ENUM_PTRS_WITH(device_mask_clip_enum_ptrs, gx_device_mask_clip *mcdev) { if (index < st_gx_strip_bitmap_max_ptrs) { return ENUM_USING(st_gx_strip_bitmap, &mcdev->tiles, sizeof(mcdev->tiles), index); } index -= st_gx_strip_bitmap_max_ptrs; if (index < st_device_memory_max_ptrs) { return ENUM_USING(st_device_memory, &mcdev->mdev, sizeof(mcdev->mdev), index); } ENUM_PREFIX(st_device_forward, st_device_memory_max_ptrs); }
/* GC procedures */ static ENUM_PTRS_WITH(screen_enum_enum_ptrs, gs_screen_enum *eptr) { if (index < 1 + st_ht_order_max_ptrs) { gs_ptr_type_t ret = ENUM_USING(st_ht_order, &eptr->order, sizeof(eptr->order), index - 1); if (ret == 0) /* don't stop early */ ENUM_RETURN(0); return ret; } return ENUM_USING(st_halftone, &eptr->halftone, sizeof(eptr->halftone), index - (1 + st_ht_order_max_ptrs)); }
static ENUM_PTRS_WITH(font_cid1_enum_ptrs, gs_font_cid1 *pfcid1) { if (index < st_cid_system_info_num_ptrs) return ENUM_USING(st_cid_system_info, &pfcid1->cidata.CIDSystemInfo, sizeof(st_cid_system_info), index); ENUM_PREFIX(st_gs_font_base, st_cid_system_info_num_ptrs); }
static ENUM_PTRS_WITH(gs_glyph_cache_elem_enum_ptrs, gs_glyph_cache_elem *e) { index --; if (index < ST_GLYPH_DATA_NUM_PTRS) return ENUM_USING(st_glyph_data, &e->gd, sizeof(e->gd), index); return 0; }
static ENUM_PTRS_WITH(font_cid0_enum_ptrs, gs_font_cid0 *pfcid0) { index -= 2; if (index < st_gs_font_cid_data_num_ptrs) return ENUM_USING(st_gs_font_cid_data, &pfcid0->cidata.common, sizeof(gs_font_cid_data), index); ENUM_PREFIX(st_gs_font_base, st_gs_font_cid_data_num_ptrs); }
static ENUM_PTRS_WITH(function_Sd_enum_ptrs, gs_function_Sd_t *pfn) { index -= 6; if (index < st_data_source_max_ptrs) return ENUM_USING(st_data_source, &pfn->params.DataSource, sizeof(pfn->params.DataSource), index); return ENUM_USING_PREFIX(st_function, st_data_source_max_ptrs); }
static ENUM_PTRS_WITH(context_state_enum_ptrs, gs_context_state_t *pcst) { index -= 6; if (index < st_gs_dual_memory_num_ptrs) return ENUM_USING(st_gs_dual_memory, &pcst->memory, sizeof(pcst->memory), index); index -= st_gs_dual_memory_num_ptrs; if (index < st_dict_stack_num_ptrs) return ENUM_USING(st_dict_stack, &pcst->dict_stack, sizeof(pcst->dict_stack), index); index -= st_dict_stack_num_ptrs; if (index < st_exec_stack_num_ptrs) return ENUM_USING(st_exec_stack, &pcst->exec_stack, sizeof(pcst->exec_stack), index); index -= st_exec_stack_num_ptrs; return ENUM_USING(st_op_stack, &pcst->op_stack, sizeof(pcst->op_stack), index); }
static ENUM_PTRS_WITH(font_cid2_enum_ptrs, gs_font_cid2 *pfcid2) { if (index < st_gs_font_cid2_own_ptrs) ENUM_PTR(0, gs_font_cid2, subst_CID_on_WMode); if (index < st_gs_font_cid_data_num_ptrs + st_gs_font_cid2_own_ptrs) return ENUM_USING(st_gs_font_cid_data, &pfcid2->cidata.common, sizeof(gs_font_cid_data), index - st_gs_font_cid2_own_ptrs); ENUM_PREFIX(st_gs_font_type42, st_gs_font_cid_data_num_ptrs + st_gs_font_cid2_own_ptrs); }
/* GC procedures */ static ENUM_PTRS_WITH(gs_type1_state_enum_ptrs, gs_type1_state *pcis) { index -= 4; if (index < pcis->ips_count * ST_GLYPH_DATA_NUM_PTRS) return ENUM_USING(st_glyph_data, &pcis->ipstack[index / ST_GLYPH_DATA_NUM_PTRS].cs_data, sizeof(pcis->ipstack[0].cs_data), index % ST_GLYPH_DATA_NUM_PTRS); return 0; }
ENUM_PTRS_WITH(c_param_enum_ptrs, gs_c_param *param) { index -= 3; switch (param->type) { /* Only the aggregate types are handled specially. */ case gs_param_type_dict: case gs_param_type_dict_int_keys: case gs_param_type_array: return ENUM_USING(st_c_param_list, ¶m->value.d, sizeof(param->value.d), index); default: { gs_param_typed_value value; value.value = *(const gs_param_value *)¶m->value; value.type = param->type; return gs_param_typed_value_enum_ptrs(mem, &value, sizeof(value), index, pep, NULL, gcst); } } }
/* Define the structure for keeping track of progress through an image. */ typedef struct pdf_image_enum_s { gx_image_enum_common; int width; int bits_per_pixel; /* bits per pixel (per plane) */ int rows_left; pdf_image_writer writer; gs_matrix mat; } pdf_image_enum; gs_private_st_composite(st_pdf_image_enum, pdf_image_enum, "pdf_image_enum", pdf_image_enum_enum_ptrs, pdf_image_enum_reloc_ptrs); /* GC procedures */ static ENUM_PTRS_WITH(pdf_image_enum_enum_ptrs, pdf_image_enum *pie) if (index < pdf_image_writer_max_ptrs) { gs_ptr_type_t ret = ENUM_USING(st_pdf_image_writer, &pie->writer, sizeof(pie->writer), index); if (ret == 0) /* don't stop early */ ENUM_RETURN(0); return ret; } return ENUM_USING_PREFIX(st_gx_image_enum_common, pdf_image_writer_max_ptrs); ENUM_PTRS_END static RELOC_PTRS_WITH(pdf_image_enum_reloc_ptrs, pdf_image_enum *pie) { RELOC_USING(st_pdf_image_writer, &pie->writer, sizeof(pie->writer)); RELOC_USING(st_gx_image_enum_common, vptr, size); } RELOC_PTRS_END
/* GC procedures */ static ENUM_PTRS_WITH(device_memory_enum_ptrs, gx_device_memory *mptr) { return ENUM_USING(st_device_forward, vptr, sizeof(gx_device_forward), index - 3); }