diff options
author | Karl Berry <karl@freefriends.org> | 2021-01-29 22:37:37 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-01-29 22:37:37 +0000 |
commit | 88b40fe28cf8ad53d15f707a0e4a3f99c953bb4b (patch) | |
tree | bc34852e40c7d6417600fca15591bdb58acbaf5c /Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def | |
parent | 7ae58a3bf77274814f2c766b55c3713cab428aea (diff) |
l3 (29jan21)
git-svn-id: svn://tug.org/texlive/trunk@57554 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def | 145 |
1 files changed, 112 insertions, 33 deletions
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def index 69caa65acef..1a5b246fa6b 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-luatex.def @@ -10,8 +10,9 @@ %% l3backend-draw.dtx (with options: `package,luatex') %% l3backend-graphics.dtx (with options: `package,luatex') %% l3backend-pdf.dtx (with options: `package,luatex') +%% l3backend-opacity.dtx (with options: `package,luatex') %% -%% Copyright (C) 1990-2021 The LaTeX3 Project +%% Copyright (C) 1990-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 @@ -25,7 +26,7 @@ %% %% File: l3backend-basics.dtx \ProvidesExplFile - {l3backend-luatex.def}{2021-01-09}{} + {l3backend-luatex.def}{2020-01-29}{} {L3 backend support: PDF output (LuaTeX)} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { @@ -103,7 +104,8 @@ } } } -\cs_new_protected:Npn \__kernel_color_stack_init:Nnn #1#2#3 +\int_new:N \l__color_backend_stack_int +\cs_new_protected:Npn \__kernel_color_backend_stack_init:Nnn #1#2#3 { \int_const:Nn #1 { @@ -112,32 +114,36 @@ {#3} } } -\cs_new_protected:Npn \__kernel_color_stack_push:nn #1#2 +\cs_new_protected:Npn \__color_backend_stack_push:nn #1#2 { \tex_pdfextension:D colorstack ~ \int_eval:n {#1} ~ push ~ {#2} } -\cs_new_protected:Npn \__kernel_color_stack_pop:n #1 +\cs_generate_variant:Nn \__color_backend_stack_push:nn { nx } +\cs_new_protected:Npn \__color_backend_stack_pop:n #1 { \tex_pdfextension:D colorstack ~ \int_eval:n {#1} ~ pop \scan_stop: } -\int_new:N \l__kernel_color_stack_int +\tl_new:N \l__color_backend_fill_tl +\tl_new:N \l__color_backend_stroke_tl \cs_new_protected:Npn \__color_backend_select_cmyk:n #1 - { \__color_backend_select:n { #1 ~ k ~ #1 ~ K } } + { \__color_backend_select:nn { #1 ~ k } { #1 ~ K } } \cs_new_protected:Npn \__color_backend_select_gray:n #1 - { \__color_backend_select:n { #1 ~ g ~ #1 ~ G } } + { \__color_backend_select:nn { #1 ~ g } { #1 ~ G } } \cs_new_protected:Npn \__color_backend_select_rgb:n #1 - { \__color_backend_select:n { #1 ~ rg ~ #1 ~ RG } } -\cs_new_protected:Npn \__color_backend_select:n #1 + { \__color_backend_select:nn { #1 ~ rg } { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_select:nn #1#2 { - \__kernel_color_stack_push:nn \l__kernel_color_stack_int {#1} + \tl_set:Nn \l__color_backend_fill_tl {#1} + \tl_set:Nn \l__color_backend_stroke_tl {#2} + \__color_backend_stack_push:nn \l__color_backend_stack_int { #1 ~ #2 } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_reset: - { \__kernel_color_stack_pop:n \l__kernel_color_stack_int } + { \__color_backend_stack_pop:n \l__color_backend_stack_int } \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 - { \__color_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } + { \__color_backend_select:nn { /#1 ~ cs ~ #2 ~ scn } { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn \cs_new_protected:Npn \__color_backend_separation_init:nnnnn #1#2#3#4#5 { @@ -245,21 +251,35 @@ } \cs_new_eq:NN \__color_backend_devicen_init:n \__color_backend_separation_init:n \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ k } } + { \__color_backend_fill:n { #1 ~ k } } \cs_new_protected:Npn \__color_backend_fill_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ g } } + { \__color_backend_fill:n { #1 ~ g } } \cs_new_protected:Npn \__color_backend_fill_rgb:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ rg } } - \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ K } } + { \__color_backend_fill:n { #1 ~ rg } } +\cs_new_protected:Npn \__color_backend_fill:n #1 + { + \tl_set:Nn \l__color_backend_fill_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { #1 ~ \l__color_backend_stroke_tl } + \group_insert_after:N \__color_backend_reset: + } +\cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 + { \__color_backend_stroke:n { #1 ~ K } } \cs_new_protected:Npn \__color_backend_stroke_gray:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ G } } + { \__color_backend_stroke:n { #1 ~ G } } \cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 - { \__kernel_backend_literal_pdf:n { #1 ~ RG } } + { \__color_backend_stroke:n { #1 ~ RG } } +\cs_new_protected:Npn \__color_backend_stroke:n #1 + { + \tl_set:Nn \l__color_backend_stroke_tl {#1} + \__color_backend_stack_push:nn \l__color_backend_stack_int + { \l__color_backend_fill_tl \c_space_tl #1 } + \group_insert_after:N \__color_backend_reset: + } \cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 - { \__kernel_backend_literal_pdf:n { /#1 ~ cs ~ #2 ~ scn } } + { \__color_backend_fill:n { /#1 ~ cs ~ #2 ~ scn } } \cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2 - { \__kernel_backend_literal_pdf:n { /#1 ~ CS ~ #2 ~ SCN } } + { \__color_backend_stroke:n { /#1 ~ CS ~ #2 ~ SCN } } \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn \cs_new_eq:NN \__color_backend_stroke_devicen:nn \__color_backend_stroke_separation:nn %% File: l3backend-box.dtx @@ -594,18 +614,14 @@ { xyz ~ zoom \fp_eval:n { #2 * 10 } } \scan_stop: } -\cs_new_protected:Npn \__pdf_backend_destination_box:nn #1#2 +\cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { - \group_begin: - \hbox_set:Nn \l__pdf_internal_box {#2} - \tex_pdfextension:D dest ~ - name {#1} - fitr ~ - width \box_wd:N \l__pdf_internal_box - height \box_ht:N \l__pdf_internal_box - depth \box_dp:N \l__pdf_internal_box - \box_use:N \l__pdf_internal_box - \group_end: + \tex_pdfextension:D dest ~ + name {#1} + fitr ~ + width \dim_eval:n {#2} ~ + height \dim_eval:n {#3} ~ + depth \dim_eval:n {#4} \scan_stop: } \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { @@ -735,6 +751,69 @@ { \__kernel_backend_literal_page:n { /#1 ~ #2 ~ BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__kernel_backend_literal_page:n { EMC } } +%% File: l3backend-opacity.dtx +\cs_if_exist:NT \pdfmanagement_add:nnn + { + \__kernel_color_backend_stack_init:Nnn \c__opacity_backend_stack_int + { page ~ direct } { /opacity 1 ~ gs } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity 1 } { << /ca ~ 1 /CA ~ 1 >> } + } +\tl_new:N \l__opacity_backend_fill_tl +\tl_new:N \l__opacity_backend_stroke_tl +\cs_new_protected:Npn \__opacity_backend_select:n #1 + { + \exp_args:Nx \__opacity_backend_select_aux:n + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_select_aux:n #1 + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#1} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity #1 } + { << /ca ~ #1 /CA ~ #1 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity #1 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } +\cs_if_exist:NF \pdfmanagement_add:nnn + { + \cs_gset_protected:Npn \__opacity_backend_select_aux:n #1 { } + } +\cs_new_protected:Npn \__opacity_backend_reset: + { \__opacity_backend_stack_pop:n \c__opacity_backend_stack_int } +\cs_new_protected:Npn \__opacity_backend_fill:n #1 + { + \__opacity_backend_fill_stroke:xx + { \fp_eval:n { min(max(0,#1),1) } } + \l__opacity_backend_stroke_tl + } +\cs_new_protected:Npn \__opacity_backend_stroke:n #1 + { + \__opacity_backend_fill_stroke:xx + \l__opacity_backend_fill_tl + { \fp_eval:n { min(max(0,#1),1) } } + } +\cs_new_protected:Npn \__opacity_backend_fill_stroke:nn #1#2 + { + \str_if_eq:nnTF {#1} {#2} + { \__opacity_backend_select_aux:n {#1} } + { + \tl_set:Nn \l__opacity_backend_fill_tl {#1} + \tl_set:Nn \l__opacity_backend_stroke_tl {#2} + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.fill #1 } + { << /ca ~ #1 >> } + \pdfmanagement_add:nnn { Page / Resources / ExtGState } + { opacity.stroke #1 } + { << /CA ~ #2 >> } + \__opacity_backend_stack_push:nn \c__opacity_backend_stack_int + { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs } + \group_insert_after:N \__opacity_backend_reset: + } + } +\cs_generate_variant:Nn \__opacity_backend_fill_stroke:nn { xx } %% %% %% End of file `l3backend-luatex.def'. |