summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def')
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def406
1 files changed, 406 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
new file mode 100644
index 00000000000..40ce682e041
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
@@ -0,0 +1,406 @@
+%%
+%% This is file `l3backend-testphase-pdftex.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3backend-testphase.dtx (with options: `drivers,pdftex')
+%%
+%% Copyright (C) 2019-2021 The LaTeX Project
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3backend-testphase.dtx
+\ProvidesExplFile
+ {l3backend-testphase-pdftex.def}{2021-02-22}{}
+ {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
+\RequirePackage{l3ref-tmp}
+\cs_generate_variant:Nn \ref_label:nn {en}
+\cs_generate_variant:Nn \ref_value:nn {en}
+\cs_new_protected:Npn \__pdf_backend_ref_label:nn #1 #2
+ {
+ \@bsphack
+ \ref_label:nn{#1}{abspage}
+ \@esphack
+ }
+\cs_new:Npn \__pdf_backend_ref_value:nn #1 #2
+ {
+ \ref_value:nn{#1}{#2}
+ }
+\cs_generate_variant:Nn \__pdf_backend_ref_label:nn {en}
+\cs_generate_variant:Nn \__pdf_backend_ref_value:nn {en}
+\prop_new:N \g__pdf_tmpa_prop
+\tl_new:N \l__pdf_tmpa_tl
+\box_new:N \l__pdf_backend_tmpa_box
+\int_new:N \g__pdf_backend_resourceid_int
+\int_new:N \g__pdf_backend_name_int
+\int_new:N \g__pdf_backend_page_int
+\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage
+ {
+ \g__kernel_pdfmanagement_end_run_code_tl
+ }
+\tl_if_exist:NTF \@kernel@after@shipout@background
+ {
+ \g@addto@macro \@kernel@before@shipout@background{\relax}
+ \g@addto@macro \@kernel@after@shipout@background
+ {
+ \g__kernel_pdfmanagement_thispage_shipout_code_tl
+ }
+ \tl_gput_left:Nn\@kernel@after@shipout@lastpage
+ {
+ \g__kernel_pdfmanagement_lastpage_shipout_code_tl
+ }
+ }
+ {
+ \hook_gput_code:nnn{shipout/background}{pdf}
+ {
+ \g__kernel_pdfmanagement_thispage_shipout_code_tl
+ }
+ \hook_gput_code:nnn {shipout/lastpage} {pdf}
+ {
+ \g__kernel_pdfmanagement_lastpage_shipout_code_tl
+ }
+ }
+
+\cs_new_protected:Npn \__pdf_backend_Pages_primitive:n #1
+ {
+ \tex_global:D \tex_pdfpagesattr:D { #1 }
+ }
+ %the primitive
+ \cs_new_protected:Npn \__pdf_backend_Page_primitive:n #1
+ {
+ \tex_global:D \tex_pdfpageattr:D { #1 }
+ }
+ \cs_new_protected:Npn \__pdf_backend_Page_gput:nn #1 #2 %key,value
+ {
+ \pdfdict_gput:nnn {g__pdf_Core/Page}{ #1 }{ #2 }
+ }
+\cs_new_protected:Npn \__pdf_backend_Page_gremove:n #1
+ {
+ \pdfdict_gremove:nn {g__pdf_Core/Page}{ #1 }
+ }
+\cs_new_protected:Npn \__pdf_backend_ThisPage_gput:nn #1 #2
+ {
+ %we need to know the page the resource should be added too.
+ \int_gincr:N\g__pdf_backend_resourceid_int
+ %\zref@labelbylist {l3pdf\int_use:N\g__pdf_backend_resourceid_int} {l3pdf}
+ %\ref_label:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ \__pdf_backend_ref_label:en { l3pdf\int_use:N\g__pdf_backend_resourceid_int }{abspage}
+ \tl_set:Nx \l__pdf_tmpa_tl
+ {
+ %\zref@extractdefault
+ \__pdf_backend_ref_value:en {l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ }
+ \pdfdict_if_exist:nF { g__pdf_Core/backend_Page\l__pdf_tmpa_tl}
+ {
+ \pdfdict_new:n { g__pdf_Core/backend_Page\l__pdf_tmpa_tl}
+ }
+ %backend_Page has no handler.
+ \pdfdict_gput:nnn {g__pdf_Core/backend_Page\l__pdf_tmpa_tl}{ #1 }{ #2 }
+ }
+\cs_new_protected:Npn \__pdf_backend_ThisPage_gpush:n #1
+ {
+ \prop_gset_eq:Nc \g__pdf_tmpa_prop { \__kernel_pdfdict_name:n { g__pdf_Core/Page } }
+ \prop_if_exist:cT { \__kernel_pdfdict_name:n { g__pdf_Core/backend_Page#1 } }
+ {
+ \prop_map_inline:cn { \__kernel_pdfdict_name:n { g__pdf_Core/backend_Page#1 } }
+ {
+ \prop_gput:Nnn \g__pdf_tmpa_prop { ##1 }{ ##2 }
+ }
+ }
+ \exp_args:Nx \__pdf_backend_Page_primitive:n
+ {
+ \prop_map_function:NN \g__pdf_tmpa_prop \pdfdict_item:ne
+ }
+ }
+\clist_const:Nn \c__pdf_backend_PageResources_clist
+ {
+ ExtGState,
+ ColorSpace,
+ Pattern,
+ Shading,
+ }
+ %create the backend objects:
+\clist_map_inline:Nn \c__pdf_backend_PageResources_clist
+ {
+ \__pdf_backend_object_new:nn {Page/Resources/#1} {dict}
+ \cs_if_exist:NT \tex_directlua:D
+ {
+ \tex_directlua:D
+ {
+ ltx.__pdf.object["Page/Resources/#1"]
+ =
+ "\__pdf_backend_object_ref:n{Page/Resources/#1}"
+ }
+ }
+ }
+ \cs_new_protected:Npn \__pdf_backend_PageResources_gput:nnn #1 #2 #3
+ {
+ \pdfdict_gput:nnn {g__pdf_Core/Page/Resources/#1} { #2 }{ #3 }
+ }
+\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush:
+ {
+ \clist_map_inline:Nn \c__pdf_backend_PageResources_clist
+ {
+ \prop_if_empty:cF
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/##1} }
+ {
+ \__pdf_backend_object_write:nx
+ { Page/Resources/##1 }
+ { \pdfdict_use:n { g__pdf_Core/Page/Resources/##1} }
+ }
+ }
+ }
+\bool_new:N \l__pdf_backend_xform_bool
+
+\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name
+ {
+ \int_gincr:N \g__pdf_backend_name_int
+ \exp_args:Nx\__kernel_backend_literal_page:n
+ { /#1 ~ /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC }
+ % code to set the property ....
+ \int_gincr:N\g__pdf_backend_resourceid_int
+ \bool_if:NTF \l__pdf_backend_xform_bool
+ {
+ \exp_args:Nnxx\pdfdict_gput:nnn %no handler needed
+ { g__pdf_Core/Xform/Resources/Properties }
+ { l3pdf\int_use:N\g__pdf_backend_resourceid_int }
+ { \__pdf_backend_object_ref:n { #2 } }
+ }
+ {
+ %\zref@labelbylist
+ \__pdf_backend_ref_label:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ \tl_set:Nx \l__pdf_tmpa_tl
+ {
+ %\zref@extractdefault
+ %\ref_value:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ \__pdf_backend_ref_value:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ }
+ \pdfdict_if_exist:nF { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties }
+ {
+ \pdfdict_new:n { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties }
+ }
+ \exp_args:Nnxx\pdfdict_gput:nnn
+ { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties }
+ { l3pdf\int_use:N\g__pdf_backend_resourceid_int }
+ { \__pdf_backend_object_ref:n{#2} }
+ }
+ }
+\cs_set_protected:Npn \__pdf_backend_bdcobject:n #1% #1 eg. Span
+ {
+ \int_gincr:N \g__pdf_backend_name_int
+ \exp_args:Nx\__kernel_backend_literal_page:n
+ { /#1 ~ /l3pdf\int_use:N\g__pdf_backend_name_int\c_space_tl BDC }
+ % code to set the property ....
+ \int_gincr:N\g__pdf_backend_resourceid_int
+ \bool_if:NTF \l__pdf_backend_xform_bool
+ {
+ \exp_args:Nnxx\pdfdict_gput:nnn
+ { g__pdf_Core/Xform/Resources/Properties }
+ { l3pdf\int_use:N\g__pdf_backend_resourceid_int }
+ { \__pdf_backend_object_last: }
+ }
+ {
+ %\zref@labelbylist
+ %\ref_label:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ \__pdf_backend_ref_label:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ \tl_set:Nx \l__pdf_tmpa_tl
+ {
+ %\zref@extractdefault
+ % \ref_value:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ \__pdf_backend_ref_value:en{l3pdf\int_use:N\g__pdf_backend_resourceid_int}{abspage}
+ }
+ \pdfdict_if_exist:nF { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties }
+ {
+ \pdfdict_new:n { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties }
+ }
+ \exp_args:Nnxx\pdfdict_gput:nnn
+ { g__pdf_Core/backend_Page\l__pdf_tmpa_tl/Resources/Properties }
+ { l3pdf\int_use:N\g__pdf_backend_resourceid_int }
+ { \__pdf_backend_object_last: }
+ %\pdfdict_show:n { g_backend_Page\l__pdf_tmpa_tl/Resources/Properties }
+ }
+ }
+\cs_set_protected:Npn \__pdf_backend_bmc:n #1
+ {
+ \__kernel_backend_literal_page:n { /#1~BMC }
+ }
+\cs_set_protected:Npn \__pdf_backend_bdc_contobj:nn #1 #2
+ {
+ \pdf_object_unnamed_write:nn { dict } { #2 }
+ \__pdf_backend_bdcobject:n { #1 }
+ }
+\cs_set_protected:Npn \__pdf_backend_bdc_contstream:nn #1 #2
+ {
+ \__kernel_backend_literal_page:n { /#1~<<#2>>~BDC }
+ }
+\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2
+ {
+ \bool_if:NTF \g__pdfmanagement_active_bool
+ {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contobj:nn}
+ {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn}
+ \__pdf_backend_bdc:nn {#1}{#2}
+ }
+\cs_set_protected:Npn \__pdf_backend_emc:
+ {
+ \__kernel_backend_literal_page:n { EMC }
+ }
+
+\cs_new:Npn \__pdf_backend_PageResources_gpush_aux:n #1 %#1 ExtGState etc
+ {
+ \prop_if_empty:cF
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/#1} }
+ {
+ \pdfdict_item:ne { #1 }{ \pdf_object_ref:n {Page/Resources/#1}}
+ }
+ }
+
+\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1
+ {
+ \exp_args:NNx \tex_global:D \tex_pdfpageresources:D
+ {
+ \prop_if_exist:cT
+ { \__kernel_pdfdict_name:n { g__pdf_Core/backend_Page#1/Resources/Properties } }
+ {
+ /Properties~
+ <<
+ \prop_map_function:cN
+ { \__kernel_pdfdict_name:n { g__pdf_Core/backend_Page#1/Resources/Properties } }
+ \pdfdict_item:ne
+ >>
+ }
+ %% add ExtGState etc
+ \clist_map_function:NN
+ \c__pdf_backend_PageResources_clist
+ \__pdf_backend_PageResources_gpush_aux:n
+ }
+ }
+
+\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_gpush:n #1 %array content
+ {
+ \pdf_object_unnamed_write:nn {dict} {/Names [#1] }
+ \tex_pdfnames:D {/EmbeddedFiles~\pdf_object_ref_last:}
+ }
+
+
+\int_new:N \g__pdf_backend_EmbeddedFiles_int
+\cs_new:Npn \__pdf_backend_EmbeddedFiles_name:
+ {
+ (
+ l3ef
+ \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {10}
+ {0}
+ \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {100}
+ {0}
+ \int_compare:nNnT {\g__pdf_backend_EmbeddedFiles_int} < {1000}
+ {0}
+ \int_use:N \g__pdf_backend_EmbeddedFiles_int
+ )
+ }
+\seq_new:N \g__pdf_backend_EmbeddedFiles_seq
+\prop_new:N \g__pdf_backend_EmbeddedFiles_named_prop
+\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:n #1
+ %#1 object ref
+ {
+ \int_gincr:N \g__pdf_backend_EmbeddedFiles_int
+ \prop_gput:Nnx \g__pdf_backend_EmbeddedFiles_named_prop
+ { #1 }
+ { \__pdf_backend_EmbeddedFiles_name: }
+ \seq_gput_right:Nx \g__pdf_backend_EmbeddedFiles_seq
+ { \__pdf_backend_EmbeddedFiles_name: \c_space_tl #1 }
+ }
+
+\cs_new_protected:Npn \__pdf_backend_xform_new:nnnn #1 #2 #3 #4
+ {
+ \hbox_set:Nn \l__pdf_backend_tmpa_box
+ {
+ \bool_set_true:N \l__pdf_backend_xform_bool
+ \prop_gclear:c {\__kernel_pdfdict_name:n { g__pdf_Core/Xform/Resources/Properties }}
+ #4
+ }
+ %store the dimensions
+ \tl_const:cx
+ { c__pdf_backend_xform_wd_ \tl_to_str:n {#1} _tl }
+ { \tex_the:D \box_wd:N \l__pdf_backend_tmpa_box }
+ \tl_const:cx
+ { c__pdf_backend_xform_ht_ \tl_to_str:n {#1} _tl }
+ { \tex_the:D \box_ht:N \l__pdf_backend_tmpa_box }
+ \tl_const:cx
+ { c__pdf_backend_xform_dp_ \tl_to_str:n {#1} _tl }
+ { \tex_the:D \box_dp:N \l__pdf_backend_tmpa_box }
+ %% do we need to test if #2 and #3 are empty??
+ \tex_immediate:D \tex_pdfxform:D
+ ~ attr ~ { #2 }
+ %% which other resources should be default? Is an argument actually needed?
+ ~ resources ~
+ {
+ #3
+ \int_compare:nNnT
+ { \prop_count:c { \__kernel_pdfdict_name:n { g__pdf_Core/Xform/Resources/Properties } } }
+ >
+ { 0 }
+ {
+ /Properties~
+ <<
+ \pdfdict_use:n { g__pdf_Core/Xform/Resources/Properties }
+ >>
+ }
+
+ \prop_if_empty:cF
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ExtGState } }
+ {
+ /ExtGState~ \pdf_object_ref:n { Page/Resources/ExtGState }
+ }
+ \prop_if_empty:cF
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Pattern } }
+ {
+ /Pattern~ \pdf_object_ref:n { Page/Resources/Pattern }
+ }
+ \prop_if_empty:cF
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Shading } }
+ {
+ /Shading~ \pdf_object_ref:n { Page/Resources/Shading }
+ }
+ \prop_if_empty:cF
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ColorSpace } }
+ {
+ /ColorSpace~ \pdf_object_ref:n { Page/Resources/ColorSpace }
+ }
+ }
+ \l__pdf_backend_tmpa_box
+ \int_const:cn
+ { c__pdf_backend_xform_ \tl_to_str:n {#1} _int }
+ { \tex_pdflastxform:D }
+ }
+
+\cs_new_protected:Npn \__pdf_backend_xform_use:n #1
+ {
+ \tex_pdfrefxform:D
+ \int_use:c { c__pdf_backend_xform_ \tl_to_str:n {#1} _int }
+ \scan_stop:
+ }
+
+\cs_new:Npn \__pdf_backend_xform_ref:n #1
+ {
+ \int_use:c { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } ~ 0 ~ R
+ }
+%% all
+\prg_new_conditional:Npnn \__pdf_backend_xform_if_exist:n #1 { p , T , F , TF }
+ {
+ \int_if_exist:cTF { c__pdf_backend_xform_ \tl_to_str:n {#1} _int }
+ { \prg_return_true: }
+ { \prg_return_false:}
+ }
+\prg_new_eq_conditional:NNn \pdfxform_if_exist:n\__pdf_backend_xform_if_exist:n
+ { TF , T , F , p }
+%%
+%%
+%% End of file `l3backend-testphase-pdftex.def'.