diff options
author | Robin Watts <robin.watts@artifex.com> | 2017-10-20 11:17:14 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2017-11-06 11:41:14 +0000 |
commit | 3e47130cdd0104916c9ca02bf5cca1dcbd92b526 (patch) | |
tree | 6ecd0bb4f2eebb5b16f28bf8003beaf08dc2fd8d /include | |
parent | fa7b06100f3c49abcac263f27368082040a2f95e (diff) | |
download | mupdf-3e47130cdd0104916c9ca02bf5cca1dcbd92b526.tar.xz |
Extract text state handling from run pdf_processor.
So it can be used in the filter pdf_processor too.
Diffstat (limited to 'include')
-rw-r--r-- | include/mupdf/pdf/interpret.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/include/mupdf/pdf/interpret.h b/include/mupdf/pdf/interpret.h index 812b0b92..cc5c0fdf 100644 --- a/include/mupdf/pdf/interpret.h +++ b/include/mupdf/pdf/interpret.h @@ -248,4 +248,43 @@ void pdf_process_contents(fz_context *ctx, pdf_processor *proc, pdf_document *do void pdf_process_annot(fz_context *ctx, pdf_processor *proc, pdf_document *doc, pdf_page *page, pdf_annot *annot, fz_cookie *cookie); void pdf_process_glyph(fz_context *ctx, pdf_processor *proc, pdf_document *doc, pdf_obj *resources, fz_buffer *contents); +/* Text handling helper functions */ +typedef struct pdf_text_state_s +{ + float char_space; + float word_space; + float scale; + float leading; + pdf_font_desc *font; + float size; + int render; + float rise; +} pdf_text_state; + +typedef struct pdf_text_object_state_s +{ + fz_text *text; + fz_rect text_bbox; + fz_matrix tlm; + fz_matrix tm; + int text_mode; + + int cid; + int gid; + fz_rect char_bbox; + pdf_font_desc *fontdesc; + float char_tx; + float char_ty; +} pdf_text_object_state; + +void pdf_tos_save(fz_context *ctx, pdf_text_object_state *tos, fz_matrix save[2]); +void pdf_tos_restore(fz_context *ctx, pdf_text_object_state *tos, fz_matrix save[2]); +fz_text *pdf_tos_get_text(fz_context *ctx, pdf_text_object_state *tos); +void pdf_tos_reset(fz_context *ctx, pdf_text_object_state *tos, int render); +int pdf_tos_make_trm(fz_context *ctx, pdf_text_object_state *tos, pdf_text_state *text, pdf_font_desc *fontdesc, int cid, fz_matrix *trm); +void pdf_tos_move_after_char(fz_context *ctx, pdf_text_object_state *tos); +void pdf_tos_translate(pdf_text_object_state *tos, float tx, float ty); +void pdf_tos_set_matrix(pdf_text_object_state *tos, float a, float b, float c, float d, float e, float f); +void pdf_tos_newline(pdf_text_object_state *tos, float leading); + #endif |