[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