[latex3-commits] [l3svn] branch master updated: Support for pagebox in l3image
noreply at latex-project.org
noreply at latex-project.org
Mon May 15 18:02:23 CEST 2017
This is an automated email from the git hooks/post-receive script.
joseph pushed a commit to branch master
in repository l3svn.
The following commit(s) were added to refs/heads/master by this push:
new 96ddf39 Support for pagebox in l3image
96ddf39 is described below
commit 96ddf39d89a78786a7b466873af4d9816bd13012
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Mon May 15 16:03:43 2017 +0100
Support for pagebox in l3image
---
l3kernel/l3drivers.dtx | 27 +++++++++++--
l3kernel/testfiles/m3expl001.xetex.tlg | 5 ++-
l3kernel/testfiles/m3expl003.xetex.tlg | 5 ++-
l3trial/l3image/l3image.dtx | 67 +++++++++++++++++++++++++-------
4 files changed, 86 insertions(+), 18 deletions(-)
diff --git a/l3kernel/l3drivers.dtx b/l3kernel/l3drivers.dtx
index b973fb7..7e82d2c 100644
--- a/l3kernel/l3drivers.dtx
+++ b/l3kernel/l3drivers.dtx
@@ -720,6 +720,7 @@
\cs_new_protected:Npn \@@_image_getbb_jpg:n #1
{
\int_zero:N \l__image_page_int
+ \tl_clear:N \l__image_pagebox_tl
\tl_clear:N \l_@@_image_attr_tl
\@@_image_getbb_auxi:n {#1}
}
@@ -730,6 +731,8 @@
{
\int_compare:nNnT \l__image_page_int > 0
{ :P \int_use:N \l__image_page_int }
+ \tl_if_empty:NF \l__image_pagebox_tl
+ { : \l__image_pagebox_tl }
}
\@@_image_getbb_auxi:n {#1}
}
@@ -749,6 +752,8 @@
\tex_immediate:D \pdftex_pdfximage:D
\int_compare:nNnT \l__image_page_int > 0
{ page ~ \int_use:N \l__image_page_int }
+ \tl_if_empty:NF \l__image_pagebox_tl
+ { \l__image_pagebox_tl }
{#1}
\hbox_set:Nn \l__image_tmp_box
{ \pdftex_pdfrefximage:D \pdftex_pdflastximage:D }
@@ -936,6 +941,7 @@
\cs_new_protected:Npn \@@_image_getbb_jpg:n
{
\int_zero:N \l__image_page_int
+ \tl_clear:N \l__image_pagebox_tl
\__image_extract_bb:n
}
\cs_new_eq:NN \@@_image_getbb_pdf:n \@@_image_getbb_jpg:n
@@ -968,6 +974,8 @@
pdf:#2~
\int_compare:nNnT \l__image_page_int > 0
{ page ~ \int_use:N \l__image_page_int \c_space_tl }
+ \tl_if_empty:NF \l__image_pagebox_tl
+ { pagebox ~ \l__image_pagebox_tl \c_space_tl }
(#1)
}
}
@@ -1018,7 +1026,9 @@
% {\@@_image_getbb_jpg:n, \@@_image_getbb_pdf:n, \@@_image_getbb_png:n}
% \begin{macro}[aux]{\@@_image_getbb_auxi:nN}
% \begin{macro}[aux]{\@@_image_getbb_auxii:nnN, \@@_image_getbb_auxii:VnN}
-% \begin{macro}[aux]{\@@_image_getbb_auxiiii:nNnn, \@@_image_getbb_auxiv:nNnn}
+% \begin{macro}[aux]{\@@_image_getbb_auxiii:nNnn, \@@_image_getbb_auxiv:nNnn}
+% \begin{macro}[aux]{\@@_image_getbb_auxiv:nnNnn, \@@_image_getbb_auxiv:VnNnn}
+% \begin{macro}[aux]{\@@_image_getbb_auxiv:nNnn}
% For \texttt{xdvipdfmx}, there are two primitives that allow us to obtain
% the bounding box without needing \texttt{extractbb}. The only complexity
% is passing the various minor variations to a common core process.
@@ -1040,14 +1050,24 @@
\cs_new_protected:Npn \@@_image_getbb_auxii:nnN #1#2#3
{ \@@_image_getbb_aux:nNnn {#2} #3 { :P #1 } { page #1 } }
\cs_generate_variant:Nn \@@_image_getbb_auxii:nnN { V }
-\cs_new_protected:Npn \@@_image_getbb_auxiiii:nNnn #1#2#3#4
+\cs_new_protected:Npn \@@_image_getbb_auxiii:nNnn #1#2#3#4
+ {
+ \tl_if_empty:NTF \l__image_pagebox_tl
+ { \@@_image_getbb_auxiv:VnNnn \l__image_pagebox_tl }
+ { \@@_image_getbb_auxv:nNnn }
+ {#1} #2 {#3} {#4}
+ }
+\cs_new_protected:Npn \@@_image_getbb_auxiv:nnNnn #1#2#3#4#5
+ { \@@_image_getbb_auxv:nNnn {#2} #3 { #4 : #1 } { #5 ~ #1 } }
+\cs_generate_variant:Nn \@@_image_getbb_auxiv:nnNnn { V }
+\cs_new_protected:Npn \@@_image_getbb_auxv:nNnn #1#2#3#4
{
\dim_if_exist:cTF { c__image_ #1#3 _urx_dim }
{
\dim_set_eq:Nc \l__image_urx_dim { c__image_ #1#3 _urx__dim }
\dim_set_eq:Nc \l__image_ury_dim { c__image_ #1#3 _ury__dim }
}
- { \@@_image_getbb_auxiv:nNnn {#1} #2 {#3} {#4} }
+ { \@@_image_getbb_auxiv:nNnn {#1} #2 {#3} {#4} }
}
\cs_new_protected:Npn \@@_image_getbb_auxiv:nNnn #1#2#3#4
{
@@ -1064,6 +1084,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macrocode}
%</xdvipdfmx>
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index e6c3103..4e74b99 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -5040,7 +5040,10 @@ Defining \__driver_image_getbb_pdf:n on line ...
Defining \__driver_image_getbb_auxi:nN on line ...
Defining \__driver_image_getbb_auxii:nnN on line ...
Defining \__driver_image_getbb_auxii:VnN on line ...
-Defining \__driver_image_getbb_auxiiii:nNnn on line ...
+Defining \__driver_image_getbb_auxiii:nNnn on line ...
+Defining \__driver_image_getbb_auxiv:nnNnn on line ...
+Defining \__driver_image_getbb_auxiv:VnNnn on line ...
+Defining \__driver_image_getbb_auxv:nNnn on line ...
Defining \__driver_image_getbb_auxiv:nNnn on line ...
Defining \__driver_draw_literal:n on line ...
Defining \__driver_draw_literal:x on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index 84a0cf5..03ff142 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -5041,7 +5041,10 @@ Defining \__driver_image_getbb_pdf:n on line ...
Defining \__driver_image_getbb_auxi:nN on line ...
Defining \__driver_image_getbb_auxii:nnN on line ...
Defining \__driver_image_getbb_auxii:VnN on line ...
-Defining \__driver_image_getbb_auxiiii:nNnn on line ...
+Defining \__driver_image_getbb_auxiii:nNnn on line ...
+Defining \__driver_image_getbb_auxiv:nnNnn on line ...
+Defining \__driver_image_getbb_auxiv:VnNnn on line ...
+Defining \__driver_image_getbb_auxv:nNnn on line ...
Defining \__driver_image_getbb_auxiv:nNnn on line ...
Defining \__driver_draw_literal:n on line ...
Defining \__driver_draw_literal:x on line ...
diff --git a/l3trial/l3image/l3image.dtx b/l3trial/l3image/l3image.dtx
index 2cf7f59..7186b55 100644
--- a/l3trial/l3image/l3image.dtx
+++ b/l3trial/l3image/l3image.dtx
@@ -52,6 +52,18 @@
%
% \section{\pkg{l3image} documentation}
%
+% \begin{variable}{page}
+% The page number of an image to be used when including a multi-page image
+% file. The value should be a positive integer.
+% \end{variable}
+%
+% \begin{variable}{pagebox}
+% The page box setting used when determining the bounding box of an image:
+% used for |.pdf| images which may present multiple page boxes. Valid
+% settings are |artbox|, |bleedbox|, |cropbox| (the standard setting),
+% |mediabox| and |trimbox|.
+% \end{variable}
+%
% \subsection{Internal functions}
%
% Inclusion of image files requires a range of low-level data be passed to
@@ -64,6 +76,12 @@
% which may contain multiple pages.
% \end{variable}
%
+% \begin{variable}[int]{\l__image_pagebox_tl}
+% The nature of the page box setting used to determine the bounding box of
+% material: used for |.pdf| files which feature multiple page box
+% specifications.
+% \end{variable}
+%
% \begin{variable}[int]
% {
% \l__image_llx_dim, \l__image_lly_dim ,
@@ -162,13 +180,20 @@
%
% \subsection{Image feature support}
%
-% \begin{macro}[int]{\l__image_page_int}
-% Keys which control features of images.
+% \begin{macro}[int]{\l__image_page_int, \l__image_pagebox_tl}
+% Keys which control features of images. The somewhat odd order for
+% |pagebox| matches that in the \pdfTeX{} manual (where the choices all
+% have numerical values).
% \begin{macrocode}
\keys_define:nn { image }
{
- page .int_set:N = \l__image_page_int
+ page .int_set:N = \l__image_page_int ,
+ pagebox .choices:nn =
+ { artbox, bleedbox , mediabox , trimbox }
+ { \tl_set:Nn \l__image_pagebox_tl {#1} } ,
+ pagebox / cropbox .code:n = { \tl_clear:N \l__image_pagebox_tl }
}
+\tl_new:N \l__image_pagebox_tl
% \end{macrocode}
% \end{macro}
%
@@ -189,12 +214,14 @@
% \end{variable}
%
% \begin{macro}[int]{\__image_extract_bb:n, \__image_read_bb:n}
-% \begin{macro}[aux]{\__image_extract_bb_aux:nn, \__image_extract_bb_aux:nV}
-% \begin{macro}[aux]{\__image_extract_bb_aux:nnn}
-% \begin{macro}[aux]{\@@_read_bb_auxi:nnnn, \@@_read_bb_auxii:nnnn}
+% \begin{macro}[aux]{\@@_extract_bb_auix:nn, \@@_extract_bb_auix:Vn}
+% \begin{macro}[aux]{\@@_extract_bb_auxii:nnn}
+% \begin{macro}[aux]{\@@_extract_bb_auxiii:nnnn, \@@_extract_bb_auxiii:Vnnn}
+% \begin{macro}[aux]{\@@_extract_bb_auxiv:nnn}
+% \begin{macro}[aux]{\@@_read_bb_auxi:nnnn, \@@_read_bb_auxii:Vnnn}
% \begin{macro}[aux]
% {
-% \@@_read_bb_auxii:w ,
+% \@@_read_bb_auxii:w ,
% \@@_read_bb_auxiv:w ,
% \@@_read_bb_auxv:w
% }
@@ -209,12 +236,23 @@
\cs_new_protected:Npn \__image_extract_bb:n #1
{
\int_compare:nNnTF \l__image_page_int > 0
- { \__image_extract_bb_aux:nV \l__image_page_int }
- { \__image_extract_bb_aux:nnn {#1} { } { } }
-\cs_new_protected:Npn \__image_extract_bb_aux:nn #1#2
- { \__image_extract_bb_aux:nnn {#1} { :P #2 } { -p~#2~ } }
-\cs_generate_variant:Nn \__image_extract_bb_aux:nn { nV }
-\cs_new_protected:Npn \__image_extract_bb_aux:nnn #1#2#3
+ { \@@_extract_bb_auxi:Vn \l__image_page_int {#1} }
+ { \@@_extract_bb_auxii:nnn {#1} { } { } }
+ }
+\cs_new_protected:Npn \@@_extract_bb_auix:nn #1#2
+ { \@@_extract_bb_auxii:nnn {#2} { :P #1 } { -p~#1~ } }
+\cs_generate_variant:Nn \@@_extract_bb_auxi:nn { Vn }
+\cs_new_protected:Npn \@@_extract_bb_auxii:nnn #1#2#3
+ {
+ \tl_if_empty:NTF \l__image_pagebox_tl
+ { \@@_extract_bb_auxiv:nnn }
+ { \@@_extract_bb_auxiii:Vnnn \l__image_pagebox_tl }
+ {#1} {#2} {#3}
+ }
+\cs_new_protected:Npn \@@_extract_bb_auxiii:nnnn #1#2#3#4
+ { \@@_extract_bb_auxiv:nnn {#2} { #3 : #1 } { #4 -B~#1~ } }
+\cs_generate_variant:Nn \@@_extract_bb_auxiii:nnnn { V }
+\cs_new_protected:Npn \@@_extract_bb_auxiv:nnn #1#2#3
{
\@@_read_bb_auxi:nnnn {#1} {#2}
{ \tex_openin:D \l_@@_tmp_ior = "|extractbb~#3-O~#1" }
@@ -314,6 +352,9 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsection{Messages}
%
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the latex3-commits
mailing list