[latex3-commits] [git/LaTeX3-latex3-latex3] master: Switch to a generic object approach for drivers (7e1c58c)
Joseph Wright
joseph.wright at morningstar2.co.uk
Tue Sep 4 16:25:45 CEST 2018
Repository : https://github.com/latex3/latex3
On branch : master
Link : https://github.com/latex3/latex3/commit/7e1c58c48c824dfef905d1e6b9cc49858a41b9cc
>---------------------------------------------------------------
commit 7e1c58c48c824dfef905d1e6b9cc49858a41b9cc
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Tue Sep 4 13:25:27 2018 +0100
Switch to a generic object approach for drivers
Inspired by pdfbase: will add dvips shortly.
>---------------------------------------------------------------
7e1c58c48c824dfef905d1e6b9cc49858a41b9cc
l3kernel/l3drivers.dtx | 248 ++++++++++++++-----------------
l3kernel/testfiles/m3expl001.luatex.tlg | 12 +-
l3kernel/testfiles/m3expl001.ptex.tlg | 10 +-
l3kernel/testfiles/m3expl001.tlg | 12 +-
l3kernel/testfiles/m3expl001.uptex.tlg | 10 +-
l3kernel/testfiles/m3expl001.xetex.tlg | 10 +-
l3kernel/testfiles/m3expl003.luatex.tlg | 12 +-
l3kernel/testfiles/m3expl003.ptex.tlg | 10 +-
l3kernel/testfiles/m3expl003.tlg | 12 +-
l3kernel/testfiles/m3expl003.uptex.tlg | 10 +-
l3kernel/testfiles/m3expl003.xetex.tlg | 10 +-
11 files changed, 163 insertions(+), 193 deletions(-)
diff --git a/l3kernel/l3drivers.dtx b/l3kernel/l3drivers.dtx
index 067f376..c5fc449 100644
--- a/l3kernel/l3drivers.dtx
+++ b/l3kernel/l3drivers.dtx
@@ -474,30 +474,35 @@
% driver level, different PDF object types are declared separately. Objects
% are only \emph{written} to the PDF when referenced.
%
-% \begin{function}{\driver_pdf_dictionary_declare:n}
+% \begin{function}{\driver_pdf_object_new:nn}
% \begin{syntax}
-% \cs{driver_pdf_dictionary_declare:n} \Arg{name}
+% \cs{driver_pdf_object_new:n} \Arg{name} \Arg{type}
% \end{syntax}
-% Declares \meta{name} as a PDF dictionary object. This dictionary
-% subsequently be used by \cs{driver_pdf_dictionary_gput:nnn}.
+% Declares \meta{name} as a PDF object. The \type{type} should be one of
+% |array| or |dict|. (Note that streams are objects but are handled
+% separately.)
% \end{function}
%
-% \begin{function}[EXP]{\driver_pdf_dictionary_ref:n}
+% \begin{function}[EXP]{\driver_pdf_object_ref:n}
% \begin{syntax}
-% \cs{driver_pdf_dictionary_ref:n} \Arg{dictionary}
+% \cs{driver_pdf_object_ref:n} \Arg{object}
% \end{syntax}
-% Inserts the appropriate information to reference the \meta{dictionary}
+% Inserts the appropriate information to reference the \meta{object}
% in for example page resource allocation.
% \end{function}
%
-% \begin{function}{\driver_pdf_dictionary_gput:nnn}
+% \begin{function}{\driver_pdf_object_write:nn}
% \begin{syntax}
-% \cs{driver_pdf_dictionary_gput:nnn} \Arg{name} \Arg{key} \Arg{value}
+% \cs{driver_pdf_object_write:nn} \Arg{name} \Arg{data}
% \end{syntax}
-% Places the \meta{key}/\meta{value} pair into the PDF dictionary object
-% \meta{name}. The \meta{key} should \emph{not} include the leading
-% |/|. The \meta{value} is not assumed to be of any specific type:
-% string values should thus be surrounded by |(|/|)|.
+% Writes the \meta{data} as content of the \meta{object}. Depending on the
+% \meta{type} declared for the object, the format required for the
+% \meta{data} will vary
+% \begin{itemize}
+% \item[\texttt{array}] A space-separated list of values
+% \item[\texttt{dict}] Key--value pairs in the form
+% \texttt{/\meta{key} \meta{value}}
+% \end{itemize}
% \end{function}
%
% \subsection{PDF structure}
@@ -1390,16 +1395,16 @@
%
% \subsubsection{PDF Features}
%
-% \begin{macro}{\driver_pdf_dictionary_declare:n}
-% \begin{macro}[EXP]{\driver_pdf_dictionary_ref:n}
-% \begin{macro}{\driver_pdf_dictionary_gput:nnn}
+% \begin{macro}{\driver_pdf_object_new:n}
+% \begin{macro}[EXP]{\driver_pdf_object_ref:n}
+% \begin{macro}{\driver_pdf_ojbect_write:nn}
% \begin{macro}{\driver_pdf_compresslevel:n}
% \begin{macro}{\driver_pdf_objects_enable:, \driver_pdf_objects_disable:}
% These are all no-ops.
% \begin{macrocode}
-\cs_new_protected:Npn \driver_pdf_dictionary_declare:n #1 { }
-\cs_new:Npn \driver_pdf_dictionary_ref:n #1 { }
-\cs_new_protected:Npn \driver_pdf_dictionary_gput:nnn #1#2#3 { }
+\cs_new_protected:Npn \driver_pdf_object_new:n #1 { }
+\cs_new:Npn \driver_pdf_object_ref:n #1 { }
+\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { }
\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { }
\cs_new_protected:Npn \driver_pdf_objects_enable: { }
\cs_new_protected:Npn \driver_pdf_objects_disable: { }
@@ -1684,110 +1689,70 @@
%
% \subsubsection{PDF Objects}
%
-% \begin{variable}{\g_@@_pdf_object_seq}
-% For tracking dictionaries to allow finalisation.
+% \begin{variable}{\g_@@_pdf_object_prop}
+% For tracking objects to allow finalisation.
% \begin{macrocode}
-\seq_new:N \g_@@_pdf_dictionary_seq
+\prop_new:N \g_@@_pdf_object_prop
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\driver_pdf_dictionary_declare:n, \@@_pdf_object_declare:n}
-% \begin{macro}[EXP]{\driver_pdf_dictionary_ref:n, \@@_pdf_object_ref:n}
-% Creating a dictionary requires an object: the latter can have no
-% assumptions about structure, so the task is split into two.
+% \begin{macro}{\driver_pdf_object_new:nn}
+% \begin{macro}[EXP]{\driver_pdf_object_ref:n}
+% Declaring objects means reserving at the PDF level plus starting
+% tracking.
% \begin{macrocode}
-\cs_new_protected:Npn \driver_pdf_dictionary_declare:n #1
- {
- \prop_if_exist:cF { g_@@_pdf_dictionary_ \tl_to_str:n {#1} _prop }
- {
- \@@_pdf_object_declare:n {#1}
- \seq_gput_right:Nn \g_@@_pdf_dictionary_seq {#1}
- \prop_new:c { g_@@_pdf_dictionary_ \tl_to_str:n {#1} _prop }
- }
- }
-\cs_new_protected:Npx \@@_pdf_object_declare:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- {
- \tex_pdfextension:D obj ~ reserveobjnum ~
- \int_const:cn { g_@@_pdf_object_ \tl_to_str:n {#1} _int }
- { \tex_pdffeedback:D lastobj ~ }
- }
- {
- \tex_pdfobj:D reserveobjnum ~
- \int_const:cn { g_@@_pdf_object_ \tl_to_str:n {#1} _int }
- { \tex_pdflastobj:D }
- }
- }
-\cs_new:Npn \driver_pdf_dictionary_ref:n #1
- { \@@_pdf_object_ref:n {#1} }
-\cs_new:Npn \@@_pdf_object_ref:n #1
- { \int_use:c { g_@@_pdf_object_ \tl_to_str:n {#1} _int } }
+\group_begin:
+ \cs_set_protected:Npn \@@_tmp:w #1#2
+ {
+ \cs_new_protected:Npx \driver_pdf_object_new:nn ##1##2
+ {
+ #1 reserveobjnum
+ \int_const:cn
+ { g_@@_pdf_object_ \exp_not:N \tl_to_str:n {#1} _int }
+ {#2}
+ \prop_gput:Nnn \exp_not:N \g_@@_pdf_object_prop {##1} {##2}
+ }
+ }
+ \cs_if_exist:NTF \tex_pdfextension:D
+ {
+ \@@_tmp:w
+ { \tex_pdfextension:D obj ~ }
+ { \tex_pdffeedback:D lastobj \scan_stop: }
+ }
+ { \@@_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
+\group_end:
+\cs_new:Npn \driver_pdf_object_ref:n #1
+ { \int_use:c { g_@@_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\driver_pdf_dictionary_gput:nnn}
-% Storing data for a dictionary is a pure \TeX{} operation.
+% \begin{macro}{\driver_pdf_object_write:nn}
+% Writing the data needs a little information about the structure of the
+% object.
% \begin{macrocode}
-\cs_new_protected:Npn \driver_pdf_dictionary_gput:nnn #1#2#3
- {
- \prop_if_exist:cF { g_@@_pdf_dictionary_ \tl_to_str:n {#1} _prop }
- { \driver_pdf_dictionary_declare:n {#1} }
- \prop_gput:cnn
- { g_@@_pdf_dictionary_ \tl_to_str:n {#1} _prop }
- {#2} {#3}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_pdf_dictionary_finalise:}
-% \begin{macro}{\@@_pdf_dictionary_finalise:nn}
-% At the end of a run, object data needs to be finalised. At present, we
-% do not have a hook for this \dots
-% \begin{macrocode}
-\cs_new_protected:Npx \@@_pdf_dictionary_finalise:
- {
- \seq_map_inline:Nn \exp_not:N \g_@@_pdf_dictionary_seq
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_immediate:D \tex_pdfextension:D obj ~ }
- { \tex_immediate:D \tex_pdfobj:D }
- useobjnum ~
- \exp_not:N \int_use:c
- { g_@@_pdf_object_ \tl_to_str:n {##1} _int }
- {
- <<
- \c_space_tl
- \exp_not:N \prop_if_empty:cF
- { g_@@_pdf_dictionary_ \tl_to_str:n {##1} _prop }
- {
- \exp_not:N \prop_map_function:cN
- { g_@@_pdf_dictionary_ \tl_to_str:n {##1} _prop }
- \exp_not:N \@@_pdf_dictionary_finalise:nn
- \c_space_tl
- }
- >>
- }
- }
- }
-\cs_new:Npn \@@_pdf_dictionary_finalise:nn #1#2 { / #1 ~ #2 }
-\cs_if_exist:NTF \AtEndDocument
- { \AtEndDocument { \@@_pdf_dictionary_finalise: } }
- {
- \cs_if_exist:NTF \everybye
- {
- \global \everybye \expandafter
- {
- \the \everybye
- \@@_pdf_dictionary_finalise:
- }
- }
- { \tl_gput_left:Nn \bye { \@@_pdf_dictionary_finalise: } }
- }
+\group_begin:
+ \cs_set_protected:Npn \@@_tmp:w #1
+ {
+ \cs_new_protected:Npn \driver_pdf_object_write:nn ##1##2
+ {
+ \tex_immediate:D #1 useobjnum ~
+ \int_use:c
+ { g_@@_pdf_object_ \tl_to_str:n {#1} _int }
+ \str_case_e:nn
+ { \prop_item:Nn \g_@@_pdf_object_prop {##1} }
+ {
+ { array } { { [ ~ ##2 ~ ] } }
+ { dict } { { << ~ ##2 ~ >> } }
+ }
+ }
+ }
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \@@_tmp:w { \tex_pdfextension:D obj ~ } }
+ { \@@_tmp:w { \tex_pdfobj:D } }
+\group_end:
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \subsubsection{PDF Structure}
%
@@ -2066,39 +2031,48 @@
%
% \subsubsection{PDF Objects}
%
-% \begin{variable}{\g_@@_pdf_dictionary_seq}
-% We need to track objects at the macro level
+% \begin{variable}{\g_@@_pdf_object_int, \g_@@_pdf_object_prop}
+% For tracking objects to allow finalisation.
% \begin{macrocode}
-\seq_new:N \g_@@_pdf_dictionary_seq
+\int_new:N \g_@@_pdf_object_int
+\prop_new:N \g_@@_pdf_object_prop
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\driver_pdf_dictionary_declare:n}
-% \begin{macro}[EXP]{\driver_pdf_dictionary_ref:n}
-% Everything is handled by the driver, but we track at the macro level
-% so we can make sure there is always an object to accept data.
+% \begin{macro}{\driver_pdf_object_new:nn}
+% \begin{macro}[EXP]{\driver_pdf_object_ref:n}
+% Objects are tracked at the macro level, but we don't have to do anything
+% at this stage.
% \begin{macrocode}
-\cs_new_protected:Npn \driver_pdf_dictionary_declare:n #1
+\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2
{
- \seq_if_in:NnF \g_@@_pdf_dictionary_seq {#1}
- {
- \@@_literal:n { pdf:obj ~ @ #1 ~ << >> }
- \seq_gpush:Nn \g_@@_pdf_dictionary_seq {#1}
- }
+ \int_gincr:N \g_@@_pdf_object_int
+ \int_const:cn
+ { g_@@_pdf_object_ \tl_to_str:n {#1} _int }
+ { \g_@@_pdf_object_int }
+ \prop_gput:Nnn \g_@@_pdf_object_prop {#1} {#2}
}
-\cs_new:Npn \driver_pdf_dictionary_ref:n #1 { @ #1 }
+\cs_new:Npn \driver_pdf_object_ref:n #1
+ { @l3obj \int_use:c { g_@@_pdf_object_ \tl_to_str:n {#1} _int } }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\driver_pdf_dictionary_gput:nnn}
-% For \texttt{(x)dvipdfmx}, dictionary objects are handled by the driver.
+% \begin{macro}{\driver_pdf_object_write:nn}
+% This is where we choose the actual type
% \begin{macrocode}
-\cs_new_protected:Npn \driver_pdf_dictionary_gput:nnn #1#2#3
+\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2
{
- \seq_if_in:NnF \g_@@_pdf_dictionary_seq {#1}
- { \driver_pdf_dictionary_declare:n {#1} }
- \@@_literal:n { pdf:put ~ @ #1 ~ << ~ /#2 ~ #3 ~ >> }
+ \@@_literal:x
+ {
+ pdf:obj ~ \driver_pdf_object_ref:n {#1} ~
+ \str_case_e:nn
+ { \prop_item:Nn \g_@@_pdf_object_prop {#1} }
+ {
+ { array } { { [ ~ \exp_not:n {#2} ~ ] } }
+ { dict } { { << ~ \exp_not:n {#2} ~ >> } }
+ }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -2871,16 +2845,16 @@
%
% \subsubsection{PDF Features}
%
-% \begin{macro}{\driver_pdf_dictionary_declare:n}
-% \begin{macro}[EXP]{\driver_pdf_dictionary_ref:n}
-% \begin{macro}{\driver_pdf_dictionary_gput:nnn}
+% \begin{macro}{\driver_pdf_object_new:n}
+% \begin{macro}[EXP]{\driver_pdf_object_ref:n}
+% \begin{macro}{\driver_pdf_ojbect_write:nn}
% \begin{macro}{\driver_pdf_compresslevel:n}
% \begin{macro}{\driver_pdf_objects_enable:, \driver_pdf_objects_disable:}
% These are all no-ops.
% \begin{macrocode}
-\cs_new_protected:Npn \driver_pdf_dictionary_declare:n #1 { }
-\cs_new:Npn \driver_pdf_dictionary_ref:n #1 { }
-\cs_new_protected:Npn \driver_pdf_dictionary_gput:nnn #1#2#3 { }
+\cs_new_protected:Npn \driver_pdf_object_new:n #1 { }
+\cs_new:Npn \driver_pdf_object_ref:n #1 { }
+\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { }
\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { }
\cs_new_protected:Npn \driver_pdf_objects_enable: { }
\cs_new_protected:Npn \driver_pdf_objects_disable: { }
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 024f36f..72838c2 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -6144,14 +6144,10 @@ Defining \__driver_image_getbb_auxii:n on line ...
Defining \__driver_image_include_jpg:n on line ...
Defining \__driver_image_include_pdf:n on line ...
Defining \__driver_image_include_png:n on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \__driver_pdf_object_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \__driver_pdf_object_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
-Defining \__driver_pdf_dictionary_finalise: on line ...
-Defining \__driver_pdf_dictionary_finalise:nn on line ...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 3860bb2..47b96fc 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -6177,10 +6177,12 @@ Defining \__driver_image_include_auxi:nn on line ...
Defining \__driver_image_include_auxii:nnn on line ...
Defining \__driver_image_include_auxii:xnn on line ...
Defining \__driver_image_include_auxiii:nnn on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
+Defining \g__driver_pdf_object_int on line ...
+\g__driver_pdf_object_int=\count...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 4edc202..17c92e8 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -6382,14 +6382,10 @@ Defining \__driver_image_getbb_auxii:n on line ...
Defining \__driver_image_include_jpg:n on line ...
Defining \__driver_image_include_pdf:n on line ...
Defining \__driver_image_include_png:n on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \__driver_pdf_object_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \__driver_pdf_object_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
-Defining \__driver_pdf_dictionary_finalise: on line ...
-Defining \__driver_pdf_dictionary_finalise:nn on line ...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 49d72dd..a39973a 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -6375,10 +6375,12 @@ Defining \__driver_image_include_auxi:nn on line ...
Defining \__driver_image_include_auxii:nnn on line ...
Defining \__driver_image_include_auxii:xnn on line ...
Defining \__driver_image_include_auxiii:nnn on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
+Defining \g__driver_pdf_object_int on line ...
+\g__driver_pdf_object_int=\count...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index e4e48cc..44ad144 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -6140,10 +6140,12 @@ Defining \__driver_image_include_auxi:nn on line ...
Defining \__driver_image_include_auxii:nnn on line ...
Defining \__driver_image_include_auxii:xnn on line ...
Defining \__driver_image_include_auxiii:nnn on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
+Defining \g__driver_pdf_object_int on line ...
+\g__driver_pdf_object_int=\count...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 024f36f..72838c2 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -6144,14 +6144,10 @@ Defining \__driver_image_getbb_auxii:n on line ...
Defining \__driver_image_include_jpg:n on line ...
Defining \__driver_image_include_pdf:n on line ...
Defining \__driver_image_include_png:n on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \__driver_pdf_object_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \__driver_pdf_object_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
-Defining \__driver_pdf_dictionary_finalise: on line ...
-Defining \__driver_pdf_dictionary_finalise:nn on line ...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index 3860bb2..47b96fc 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -6177,10 +6177,12 @@ Defining \__driver_image_include_auxi:nn on line ...
Defining \__driver_image_include_auxii:nnn on line ...
Defining \__driver_image_include_auxii:xnn on line ...
Defining \__driver_image_include_auxiii:nnn on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
+Defining \g__driver_pdf_object_int on line ...
+\g__driver_pdf_object_int=\count...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 4edc202..17c92e8 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -6382,14 +6382,10 @@ Defining \__driver_image_getbb_auxii:n on line ...
Defining \__driver_image_include_jpg:n on line ...
Defining \__driver_image_include_pdf:n on line ...
Defining \__driver_image_include_png:n on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \__driver_pdf_object_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \__driver_pdf_object_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
-Defining \__driver_pdf_dictionary_finalise: on line ...
-Defining \__driver_pdf_dictionary_finalise:nn on line ...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 49d72dd..a39973a 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -6375,10 +6375,12 @@ Defining \__driver_image_include_auxi:nn on line ...
Defining \__driver_image_include_auxii:nnn on line ...
Defining \__driver_image_include_auxii:xnn on line ...
Defining \__driver_image_include_auxiii:nnn on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
+Defining \g__driver_pdf_object_int on line ...
+\g__driver_pdf_object_int=\count...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index e4e48cc..44ad144 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -6140,10 +6140,12 @@ Defining \__driver_image_include_auxi:nn on line ...
Defining \__driver_image_include_auxii:nnn on line ...
Defining \__driver_image_include_auxii:xnn on line ...
Defining \__driver_image_include_auxiii:nnn on line ...
-Defining \g__driver_pdf_dictionary_seq on line ...
-Defining \driver_pdf_dictionary_declare:n on line ...
-Defining \driver_pdf_dictionary_ref:n on line ...
-Defining \driver_pdf_dictionary_gput:nnn on line ...
+Defining \g__driver_pdf_object_int on line ...
+\g__driver_pdf_object_int=\count...
+Defining \g__driver_pdf_object_prop on line ...
+Defining \driver_pdf_object_new:nn on line ...
+Defining \driver_pdf_object_ref:n on line ...
+Defining \driver_pdf_object_write:nn on line ...
Defining \driver_pdf_compresslevel:n on line ...
Defining \driver_pdf_objects_enable: on line ...
Defining \driver_pdf_objects_disable: on line ...
More information about the latex3-commits
mailing list