static int pdf_get_string_width(pdf_xref *xref, fz_obj *res, fz_buffer *base, unsigned short *string, unsigned short *end) { fz_bbox bbox; fz_error error; int width, old_len = base->len; fz_device *dev = fz_new_bbox_device(xref->ctx, &bbox); pdf_string_to_Tj(xref->ctx, base, string, end); fz_buffer_printf(xref->ctx, base, "ET Q EMC"); error = pdf_run_glyph(xref, res, base, dev, fz_identity); width = error ? -1 : bbox.x1 - bbox.x0; base->len = old_len; fz_free_device(dev); return width; }
static void pdf_run_glyph_func(fz_context *ctx, void *doc, void *rdb, fz_buffer *contents, fz_device *dev, const fz_matrix *ctm, void *gstate, int nested_depth) { pdf_run_glyph(ctx, doc, (pdf_obj *)rdb, contents, dev, ctm, gstate, nested_depth); }
static void pdf_run_glyph_func(void *doc, void *rdb, fz_buffer *contents, fz_device *dev, fz_matrix ctm, void *gstate) { pdf_run_glyph(doc, (pdf_obj *)rdb, contents, dev, ctm, gstate); }