diff options
author | Luigi Scarso <luigi.scarso@gmail.com> | 2018-01-17 18:00:12 +0000 |
---|---|---|
committer | Luigi Scarso <luigi.scarso@gmail.com> | 2018-01-17 18:00:12 +0000 |
commit | f100e939b3262ac391fe767d591d1a316ab59f3a (patch) | |
tree | 53787d7aa79da3a8b10df0049cfe623cf0f2bd89 /Build/source/texk/web2c/luatexdir/pdf | |
parent | 345e6b3ddab394ae88cd0d916992bc2bc0f8695d (diff) |
Luatex 1.07 --- luatex and luatex53
git-svn-id: svn://tug.org/texlive/trunk@46348 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/pdf')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdfliteral.h | 1 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdfliteral.w | 65 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdfpage.h | 1 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdfpage.w | 15 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdftables.h | 1 | ||||
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdftables.w | 2 |
6 files changed, 64 insertions, 21 deletions
diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdfliteral.h b/Build/source/texk/web2c/luatexdir/pdf/pdfliteral.h index 14c197d0f72..388742732aa 100644 --- a/Build/source/texk/web2c/luatexdir/pdf/pdfliteral.h +++ b/Build/source/texk/web2c/luatexdir/pdf/pdfliteral.h @@ -27,6 +27,7 @@ # define set_pdf_literal_data(A,B) pdf_literal_data(A)=B extern void pdf_literal(PDF pdf, str_number s, int literal_mode, boolean warn); +extern void pdf_literal_set_mode(PDF pdf, int literal_mode); extern void pdf_special(PDF pdf, halfword p); extern void pdf_out_literal(PDF pdf, halfword p); diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdfliteral.w b/Build/source/texk/web2c/luatexdir/pdf/pdfliteral.w index 35687bf7401..94bb2c93c4a 100644 --- a/Build/source/texk/web2c/luatexdir/pdf/pdfliteral.w +++ b/Build/source/texk/web2c/luatexdir/pdf/pdfliteral.w @@ -62,6 +62,12 @@ void pdf_out_literal(PDF pdf, halfword p) case direct_page: pdf_goto_pagemode(pdf); break; + case direct_text: + pdf_goto_textmode(pdf); + break; + case direct_font: + pdf_goto_fontmode(pdf); + break; case direct_always: pdf_end_string_nl(pdf); ps->need_tm = true; @@ -105,29 +111,11 @@ void pdf_literal(PDF pdf, str_number s, int literal_mode, boolean warn) j = 0; /* unfortunately we always go through this when we have vf specials (and also via temp strings) */ if (literal_mode == scan_special) { - if (!(str_in_cstr(s, "PDF:", 0) || str_in_cstr(s, "pdf:", 0))) { - if (warn && ((!(str_in_cstr(s, "SRC:", 0) || str_in_cstr(s, "src:", 0))) || (str_length(s) == 0))) + if (!(str_in_cstr(s, "pdf:", 0) || str_in_cstr(s, "PDF:", 0))) { + if (warn && ((!(str_in_cstr(s, "src:", 0) || str_in_cstr(s, "SRC:", 0))) || (str_length(s) == 0))) tprint_nl("Non-PDF special ignored!"); return; } - /* - j = j + (pool_pointer) strlen("PDF:"); - if (str_in_cstr(s, "direct:", strlen("PDF:"))) { - j = j + (pool_pointer) strlen("direct:"); - literal_mode = direct_always; - } else if (str_in_cstr(s, "page:", strlen("PDF:"))) { - j = j + (pool_pointer) strlen("page:"); - literal_mode = direct_page; - } else if (str_in_cstr(s, "raw:", strlen("PDF:"))) { - j = j + (pool_pointer) strlen("raw:"); - literal_mode = direct_raw; - } else if (str_in_cstr(s, "origin:", strlen("PDF:"))) { - j = j + (pool_pointer) strlen("origin:"); - literal_mode = set_origin; - } else { - literal_mode = set_origin; - } - */ j = j + (pool_pointer) 4; /* strlen("PDF:") */ if (str_in_cstr(s, "direct:", 4)) { /* strlen("PDF:") */ j = j + (pool_pointer) 7; /* strlen("direct:") */ @@ -135,6 +123,9 @@ void pdf_literal(PDF pdf, str_number s, int literal_mode, boolean warn) } else if (str_in_cstr(s, "page:", 4)) { /* strlen("PDF:") */ j = j + (pool_pointer) 5; /* strlen("page:") */ literal_mode = direct_page; + } else if (str_in_cstr(s, "text:", 4)) { /* strlen("PDF:") */ + j = j + (pool_pointer) 5; /* strlen("text:") */ + literal_mode = direct_text; } else if (str_in_cstr(s, "raw:", 4)) { /* strlen("PDF:") */ j = j + (pool_pointer) 4; /* strlen("raw:") */ literal_mode = direct_raw; @@ -154,6 +145,10 @@ void pdf_literal(PDF pdf, str_number s, int literal_mode, boolean warn) case direct_page: pdf_goto_pagemode(pdf); break; + case direct_text: + pdf_goto_fontmode(pdf); +// pdf_goto_textmode(pdf); + break; case direct_always: pdf_end_string_nl(pdf); p->need_tm = true; @@ -174,3 +169,33 @@ void pdf_literal(PDF pdf, str_number s, int literal_mode, boolean warn) } pdf_out(pdf, '\n'); } + +void pdf_literal_set_mode(PDF pdf, int literal_mode) +{ + pdfstructure *p = pdf->pstruct; + switch (literal_mode) { + case set_origin: + pdf_goto_pagemode(pdf); + pdf_set_pos(pdf, pdf->posstruct->pos); + break; + case direct_page: + pdf_goto_pagemode(pdf); + break; + case direct_text: + pdf_goto_textmode(pdf); + break; + case direct_font: + pdf_goto_fontmode(pdf); + break; + case direct_always: + pdf_end_string_nl(pdf); + p->need_tm = true; + break; + case direct_raw: + pdf_end_string_nl(pdf); + break; + default: + normal_error("pdf backend","bad literal mode"); + break; + } +} diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdfpage.h b/Build/source/texk/web2c/luatexdir/pdf/pdfpage.h index 175fbcc6c7e..c7a5f8a7076 100644 --- a/Build/source/texk/web2c/luatexdir/pdf/pdfpage.h +++ b/Build/source/texk/web2c/luatexdir/pdf/pdfpage.h @@ -38,6 +38,7 @@ boolean calc_pdfpos(pdfstructure * p, scaledpos pos); void pdf_end_string_nl(PDF pdf); void pdf_goto_pagemode(PDF pdf); void pdf_goto_textmode(PDF pdf); +void pdf_goto_fontmode(PDF pdf); void init_pdf_pagecalculations(PDF pdf); void pdf_print_cm(PDF pdf, pdffloat * cm); void pdf_set_pos(PDF pdf, scaledpos pos); diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdfpage.w b/Build/source/texk/web2c/luatexdir/pdf/pdfpage.w index f0782d2093c..ecc51ddfd63 100644 --- a/Build/source/texk/web2c/luatexdir/pdf/pdfpage.w +++ b/Build/source/texk/web2c/luatexdir/pdf/pdfpage.w @@ -257,3 +257,18 @@ void pdf_goto_textmode(PDF pdf) normal_error("pdf backend","text mode expected in goto_text_mode"); } } + +void pdf_goto_fontmode(PDF pdf){ + pdfstructure *p = pdf->pstruct; + const scaledpos origin = { + 0, 0 + }; + if (is_charmode(p)) + end_charmode(pdf); + if (is_chararraymode(p)) + end_chararray(pdf); + if (is_textmode(p)) + end_text(pdf); + pdf_set_pos(pdf, origin); + p->mode = PMODE_PAGE; +} diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdftables.h b/Build/source/texk/web2c/luatexdir/pdf/pdftables.h index cfaab5df046..e29c5603d66 100644 --- a/Build/source/texk/web2c/luatexdir/pdf/pdftables.h +++ b/Build/source/texk/web2c/luatexdir/pdf/pdftables.h @@ -164,6 +164,7 @@ extern int pdf_last_annot; extern int pdf_last_link; extern int pdf_last_obj; extern int pdf_retval; +extern int pdf_cur_form; # define pdf_compress_level get_tex_extension_count_register(c_pdf_compress_level) # define pdf_obj_compress_level get_tex_extension_count_register(c_pdf_obj_compress_level) diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdftables.w b/Build/source/texk/web2c/luatexdir/pdf/pdftables.w index d8b5cf10321..31fc2c9ad4e 100644 --- a/Build/source/texk/web2c/luatexdir/pdf/pdftables.w +++ b/Build/source/texk/web2c/luatexdir/pdf/pdftables.w @@ -32,6 +32,7 @@ int pdf_last_annot; int pdf_last_link; int pdf_last_obj; int pdf_retval; /* global multi-purpose return value */ +int pdf_cur_form; /* the form being output */ @ AVL sort entry into |avl_table[]| @c @@ -272,7 +273,6 @@ void libpdffinish(PDF pdf) enc_free(); epdf_free(); ttf_free(); - sfd_free(); glyph_unicode_free(); zip_free(pdf); } |