[latex3-commits] [git/LaTeX3-latex3-latex3] master: Use color stack where possible for drawing color (9d0c9ec)
Joseph Wright
joseph.wright at morningstar2.co.uk
Fri Mar 2 08:54:18 CET 2018
Repository : https://github.com/latex3/latex3
On branch : master
Link : https://github.com/latex3/latex3/commit/9d0c9ec39072c1707ad88406fc2efd4878cfb23c
>---------------------------------------------------------------
commit 9d0c9ec39072c1707ad88406fc2efd4878cfb23c
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Fri Mar 2 07:54:18 2018 +0000
Use color stack where possible for drawing color
This pulls together 'normal' and 'drawing' color: the latter is still
documented separately as the stroke/fill split really only makes sense
there.
It's not possible to use the stack for fill color other than in
pdfTeX/LuaTeX, as the other stacks don't cover general graphics
isntructions.
At present, the dvisvgm set up is untested: a lot of that code though
likely needs further work.
>---------------------------------------------------------------
9d0c9ec39072c1707ad88406fc2efd4878cfb23c
l3experimental/l3draw/l3draw-state.dtx | 17 +-
l3experimental/l3draw/testfiles/m3draw004.ptex.tlg | 9 +-
l3experimental/l3draw/testfiles/m3draw004.tlg | 18 +-
.../l3draw/testfiles/m3draw004.uptex.tlg | 9 +-
.../l3draw/testfiles/m3draw004.xetex.tlg | 9 +-
l3kernel/l3drivers.dtx | 387 +++++++++-----------
l3kernel/testfiles/d3dvips.luatex.tlg | 1 +
l3kernel/testfiles/d3dvips.tlg | 1 +
l3kernel/testfiles/m3expl001.luatex.tlg | 18 +-
l3kernel/testfiles/m3expl001.ptex.tlg | 18 +-
l3kernel/testfiles/m3expl001.tlg | 18 +-
l3kernel/testfiles/m3expl001.uptex.tlg | 18 +-
l3kernel/testfiles/m3expl001.xetex.tlg | 18 +-
l3kernel/testfiles/m3expl003.luatex.tlg | 18 +-
l3kernel/testfiles/m3expl003.ptex.tlg | 18 +-
l3kernel/testfiles/m3expl003.tlg | 18 +-
l3kernel/testfiles/m3expl003.uptex.tlg | 18 +-
l3kernel/testfiles/m3expl003.xetex.tlg | 18 +-
18 files changed, 307 insertions(+), 324 deletions(-)
diff --git a/l3experimental/l3draw/l3draw-state.dtx b/l3experimental/l3draw/l3draw-state.dtx
index 5ebdbab..380defe 100644
--- a/l3experimental/l3draw/l3draw-state.dtx
+++ b/l3experimental/l3draw/l3draw-state.dtx
@@ -58,6 +58,10 @@
%<@@=draw>
% \end{macrocode}
%
+% \begin{macrocode}
+\cs_generate_variant:Nn \group_insert_after:N { c }
+% \end{macrocode}
+%
% \begin{variable}{\g_@@_linewidth_dim, \g_@@_inner_linewidth_dim}
% Linewidth for strokes: global as the scope for this relies on the graphics
% state. The inner line width is used for places where two lines are used.
@@ -147,18 +151,21 @@
\@@_color_aux:Vn \l_@@_color_tmp_tl {#1}
}
\cs_new_protected:Npn \@@_color_aux:nn #1#2
- { \@@_color:nw {#2} #1 \q_stop }
+ {
+ \@@_color:nw {#2} #1 \q_stop
+ \group_insert_after:c { driver_draw_color_ #2 _reset: }
+ }
\cs_generate_variant:Nn \@@_color_aux:nn { V }
\cs_new_protected:Npn \@@_color:nw #1#2 ~ #3 \q_stop
{ \use:c { @@_color_ #2 :nw } {#1} #3 \q_stop }
\cs_new_protected:Npn \@@_color_cmyk:nw #1#2 ~ #3 ~ #4 ~ #5 \q_stop
- { \use:c { driver_draw_ #1 _cmyk:nnnn } {#2} {#3} {#4} {#5} }
+ { \use:c { driver_draw_color_ #1 _cmyk:nnnn } {#2} {#3} {#4} {#5} }
\cs_new_protected:Npn \@@_color_gray:nw #1#2 \q_stop
- { \use:c { driver_draw_ #1 _gray:n } {#2} }
+ { \use:c { driver_draw_color_ #1 _gray:n } {#2} }
\cs_new_protected:Npn \@@_color_rgb:nw #1#2 ~ #3 ~ #4 \q_stop
- { \use:c { driver_draw_ #1 _rgb:nnn } {#2} {#3} {#4} }
+ { \use:c { driver_draw_color_ #1 _rgb:nnn } {#2} {#3} {#4} }
\cs_new_protected:Npn \@@_color_spot:nw #1#2 ~ #3 \q_stop
- { \use:c { driver_draw_ #1 _spot:nn } {#2} {#3} }
+ { \use:c { driver_draw_color_ #1 _spot:nn } {#2} {#3} }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/l3experimental/l3draw/testfiles/m3draw004.ptex.tlg b/l3experimental/l3draw/testfiles/m3draw004.ptex.tlg
index 6063fcc..7d2de4c 100644
--- a/l3experimental/l3draw/testfiles/m3draw004.ptex.tlg
+++ b/l3experimental/l3draw/testfiles/m3draw004.ptex.tlg
@@ -323,19 +323,22 @@ TEST 8: \draw_color_stroke:n
...\special{pdf:literal q}
...\special{pdf:literal 0.3985 w}
...\special{color push gray 0}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 28.34647 28.34647 re}
...\special{pdf:literal f}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 28.34647 28.34647 re}
...\special{pdf:literal B}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 m}
...\special{pdf:literal 28.34647 283.46457 l}
...\special{pdf:literal 56.69292 0 l}
...\special{pdf:literal S}
...\special{pdf:literal Q}
...\special{color pop}
+...\special{color pop}
+...\special{color pop}
+...\special{color pop}
! OK.
<argument> \l_tmpa_box
l. ... }
diff --git a/l3experimental/l3draw/testfiles/m3draw004.tlg b/l3experimental/l3draw/testfiles/m3draw004.tlg
index 7579ca9..badda61 100644
--- a/l3experimental/l3draw/testfiles/m3draw004.tlg
+++ b/l3experimental/l3draw/testfiles/m3draw004.tlg
@@ -295,19 +295,22 @@ TEST 7: \draw_color_fill:n
...\pdfliteral{q}
...\pdfliteral{0.3985 w}
...\pdfcolorstack 0 push {0 g 0 G}
-...\pdfliteral{1 0 0 rg}
+...\pdfcolorstack 0 push {1 0 0 rg}
...\pdfliteral{0 0 28.34647 28.34647 re}
...\pdfliteral{f}
-...\pdfliteral{1 0 0 rg}
+...\pdfcolorstack 0 push {1 0 0 rg}
...\pdfliteral{0 0 28.34647 28.34647 re}
...\pdfliteral{B}
-...\pdfliteral{1 0 0 rg}
+...\pdfcolorstack 0 push {1 0 0 rg}
...\pdfliteral{0 0 m}
...\pdfliteral{28.34647 283.46457 l}
...\pdfliteral{56.69292 0 l}
...\pdfliteral{S}
...\pdfliteral{Q}
...\pdfcolorstack 0 pop
+...\pdfcolorstack 0 pop
+...\pdfcolorstack 0 pop
+...\pdfcolorstack 0 pop
! OK.
<argument> \l_tmpa_box
l. ... }
@@ -323,19 +326,22 @@ TEST 8: \draw_color_stroke:n
...\pdfliteral{q}
...\pdfliteral{0.3985 w}
...\pdfcolorstack 0 push {0 g 0 G}
-...\pdfliteral{1 0 0 RG}
+...\pdfcolorstack 0 push {1 0 0 RG}
...\pdfliteral{0 0 28.34647 28.34647 re}
...\pdfliteral{f}
-...\pdfliteral{1 0 0 RG}
+...\pdfcolorstack 0 push {1 0 0 RG}
...\pdfliteral{0 0 28.34647 28.34647 re}
...\pdfliteral{B}
-...\pdfliteral{1 0 0 RG}
+...\pdfcolorstack 0 push {1 0 0 RG}
...\pdfliteral{0 0 m}
...\pdfliteral{28.34647 283.46457 l}
...\pdfliteral{56.69292 0 l}
...\pdfliteral{S}
...\pdfliteral{Q}
...\pdfcolorstack 0 pop
+...\pdfcolorstack 0 pop
+...\pdfcolorstack 0 pop
+...\pdfcolorstack 0 pop
! OK.
<argument> \l_tmpa_box
l. ... }
diff --git a/l3experimental/l3draw/testfiles/m3draw004.uptex.tlg b/l3experimental/l3draw/testfiles/m3draw004.uptex.tlg
index 6063fcc..7d2de4c 100644
--- a/l3experimental/l3draw/testfiles/m3draw004.uptex.tlg
+++ b/l3experimental/l3draw/testfiles/m3draw004.uptex.tlg
@@ -323,19 +323,22 @@ TEST 8: \draw_color_stroke:n
...\special{pdf:literal q}
...\special{pdf:literal 0.3985 w}
...\special{color push gray 0}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 28.34647 28.34647 re}
...\special{pdf:literal f}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 28.34647 28.34647 re}
...\special{pdf:literal B}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 m}
...\special{pdf:literal 28.34647 283.46457 l}
...\special{pdf:literal 56.69292 0 l}
...\special{pdf:literal S}
...\special{pdf:literal Q}
...\special{color pop}
+...\special{color pop}
+...\special{color pop}
+...\special{color pop}
! OK.
<argument> \l_tmpa_box
l. ... }
diff --git a/l3experimental/l3draw/testfiles/m3draw004.xetex.tlg b/l3experimental/l3draw/testfiles/m3draw004.xetex.tlg
index 6063fcc..7d2de4c 100644
--- a/l3experimental/l3draw/testfiles/m3draw004.xetex.tlg
+++ b/l3experimental/l3draw/testfiles/m3draw004.xetex.tlg
@@ -323,19 +323,22 @@ TEST 8: \draw_color_stroke:n
...\special{pdf:literal q}
...\special{pdf:literal 0.3985 w}
...\special{color push gray 0}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 28.34647 28.34647 re}
...\special{pdf:literal f}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 28.34647 28.34647 re}
...\special{pdf:literal B}
-...\special{pdf:literal 1 0 0 RG}
+...\special{color push 1 0 0 RG}
...\special{pdf:literal 0 0 m}
...\special{pdf:literal 28.34647 283.46457 l}
...\special{pdf:literal 56.69292 0 l}
...\special{pdf:literal S}
...\special{pdf:literal Q}
...\special{color pop}
+...\special{color pop}
+...\special{color pop}
+...\special{color pop}
! OK.
<argument> \l_tmpa_box
l. ... }
diff --git a/l3kernel/l3drivers.dtx b/l3kernel/l3drivers.dtx
index 34207a7..5c8f66a 100644
--- a/l3kernel/l3drivers.dtx
+++ b/l3kernel/l3drivers.dtx
@@ -404,51 +404,53 @@
%
% \begin{function}
% {
-% \driver_draw_color_cmyk:nnnn ,
-% \driver_draw_fill_cmyk:nnnn ,
-% \driver_draw_stroke_cmyk:nnnn
+% \driver_draw_color_fill_cmyk:nnnn ,
+% \driver_draw_color_stroke_cmyk:nnnn
% }
% \begin{syntax}
-% \cs{driver_draw_color_cmyk:nnnn} \Arg{cyan} \Arg{magenta} \Arg{yellow}
+% \cs{driver_draw_color_fill_cmyk:nnnn} \Arg{cyan} \Arg{magenta} \Arg{yellow}
% \Arg{black}
% \end{syntax}
% Sets the color for drawing to the CMYK values specified, all of which are
-% fp denotations in the range $0$ and $1$. The
-% \texttt{fill} and \texttt{stroke} versions set only the color for those
-% operations. Note that the general setting is more efficient with some
-% drivers so should in most cases be preferred.
+% fp denotations in the range $0$ and $1$.
% \end{function}
%
% \begin{function}
% {
-% \driver_draw_color_gray:n ,
-% \driver_draw_fill_gray:n ,
-% \driver_draw_stroke_gray:n
+% \driver_draw_color_fill_gray:n ,
+% \driver_draw_color_stroke_gray:n
% }
% \begin{syntax}
-% \cs{driver_draw_color_gray:n} \Arg{gray}
+% \cs{driver_draw_color_fill_gray:n} \Arg{gray}
% \end{syntax}
% Sets the color for drawing to the grayscale value specified, which is
-% fp denotations in the range $0$ and $1$. The
-% \texttt{fill} and \texttt{stroke} versions set only the color for those
-% operations. Note that the general setting is more efficient with some
-% drivers so should in most cases be preferred.
+% fp denotations in the range $0$ and $1$.
% \end{function}
%
% \begin{function}
% {
-% \driver_draw_color_rgb:nnn ,
-% \driver_draw_fill_rgb:nnn ,
-% \driver_draw_stroke_rgb:nnn
+% \driver_draw_color_fill_rgb:nnn ,
+% \driver_draw_color_stroke_rgb:nnn
% }
% \begin{syntax}
-% \cs{driver_draw_color_rgb:nnn} \Arg{red} \Arg{green} \Arg{blue}
+% \cs{driver_draw_color_fill_rgb:nnn} \Arg{red} \Arg{green} \Arg{blue}
% \end{syntax}
% Sets the color for drawing to the RGB values specified, all of which are
-% fp denotations in the range $0$ and $1$. The
-% \texttt{fill} and \texttt{stroke} versions set only the color for those
-% operations. Note that the general setting is more efficient with some
-% drivers so should in most cases be preferred.
+% fp denotations in the range $0$ and $1$.
+% \end{function}
+%
+% \begin{function}
+% {\driver_draw_color_fill_reset:, \driver_draw_color_stroke_reset:}
+% \begin{syntax}
+% \cs{driver_draw_color_fill_reset:}
+% \end{syntax}
+% Resets the active color to that before a call to
+% \cs{driver_draw_color_fill_\meta{model}:n(nnn)}. This function should be
+% inserted after the \TeX{} group setting a color, \emph{i.e.}~normally
+% \begin{verbatim}
+% % Use of \driver_driver_color_fill_rgb:nnn, etc.
+% \group_insert_after:N \driver_draw_color_fill_reset:
+% \end{verbatim}
% \end{function}
%
% \subsection{Inserting \TeX{} material}
@@ -537,9 +539,13 @@
%
% \subsection{Color support}
%
+% Color support is split into two parts: a \enquote{general} concept and
+% one directly linked to drawings (or rather the split between filling
+% and stroking). General color is relatively easy to handle: we have a color
+% stack available with all modern drivers, and can use that.%
% Whilst \texttt{(x)dvipdfmx} does have its own approach to color specials,
% it is easier to use \texttt{dvips}-like ones for all cases except direct
-% PDF output. As such the color code is collected here in two blocks.
+% PDF output.
%
% \subsubsection{\texttt{dvips}-style}
%
@@ -587,7 +593,8 @@
% \begin{macro}{\driver_color_spot:nn}
% \begin{macro}{\@@_color_select:n}
% \begin{macro}{\driver_color_reset:}
-% Simply dump the data.
+% Push the data to the stack. In the case of \texttt{dvips} also reset the
+% drawing fill color in raw PostScript.
% \begin{macrocode}
\cs_new_protected:Npn \driver_color_cmyk:nnnn #1#2#3#4
{ \@@_color_select:n { cmyk~ #1 ~ #2 ~ #3 ~ #4 } }
@@ -598,7 +605,12 @@
\cs_new_protected:Npn \driver_color_spot:nn #1#2
{ \@@_color_select:n { color~push~\c_space_tl #1 } }
\cs_new_protected:Npn \@@_color_select:n #1
- { \tex_special:D { color~push~ #1 } }
+ {
+ \tex_special:D { color~push~ #1 }
+%<*dvips>
+ \tex_special:D { ps::/l3fc~{ }~def }
+%</dvips>
+ }
\cs_new_protected:Npn \driver_color_reset:
{ \tex_special:D { color~pop } }
% \end{macrocode}
@@ -896,6 +908,7 @@
\@@_draw_literal:n { save }
\@@_draw_literal:n { /l3x~currentpoint~/l3y~exch~def~def }
\@@_draw_literal:n { @beginspecial }
+ \@@_draw_literal:n { /l3fc~{ }~def }
}
\cs_new_protected:Npn \driver_draw_end:
{
@@ -987,21 +1000,17 @@
% \begin{variable}{\g_@@_draw_clip_bool}
% Unlike PDF, PostScript doesn't track separate colors for strokes and other
% elements. It is also desirable to have the |clip| keyword after a stroke or
-% fill. To achieve those outcomes, there is some work to do. For color, if a
-% stroke or fill color is defined it is used for the relevant operation, with
-% a graphic scope inserted as required. That does mean that once such a color
-% is set all further uses inside the same scope have to use scoping: see also
-% the color set up functions. For clipping, the required ordering is achieved
-% using a \TeX{} switch. All of the operations end with a new path instruction
-% as they do not terminate (again in contrast to PDF).
+% fill. To achieve those outcomes, there is some work to do. For color, the
+% stoke color is simple but the fill one has to be inserted by hand. For
+% clipping, the required ordering is achieved using a \TeX{} switch. All of
+% the operations end with a new path instruction as they do not terminate
+% (again in contrast to PDF).
% \begin{macrocode}
\cs_new_protected:Npn \driver_draw_closepath:
{ \@@_draw_literal:n { closepath } }
\cs_new_protected:Npn \driver_draw_stroke:
{
- \@@_draw_literal:n { currentdict~/l3sc~known~{gsave~l3sc}~if }
- \@@_draw_literal:n { stroke }
- \@@_draw_literal:n { currentdict~/l3sc~known~{grestore}~if }
+ \@@_draw_literal:n { stroke }
\bool_if:NT \g_@@_draw_clip_bool
{
\@@_draw_literal:x
@@ -1020,13 +1029,14 @@
}
\cs_new_protected:Npn \driver_draw_fill:
{
- \@@_draw_literal:n { currentdict~/l3fc~known~{gsave~l3fc}~if }
+ \@@_draw_literal:n { gsave }
+ \@@_draw_literal:n { l3fc }
\@@_draw_literal:x
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
fill
}
- \@@_draw_literal:n { currentdict~/l3fc~known~{grestore}~if }
+ \@@_draw_literal:n { grestore }
\bool_if:NT \g_@@_draw_clip_bool
{
\@@_draw_literal:x
@@ -1040,16 +1050,15 @@
}
\cs_new_protected:Npn \driver_draw_fillstroke:
{
- \@@_draw_literal:n { currentdict~/l3fc~known~{gsave~l3fc}~if }
+ \@@_draw_literal:n { gsave }
+ \@@_draw_literal:n { l3fc }
\@@_draw_literal:x
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
fill
}
- \@@_draw_literal:n { currentdict~/l3fc~known~{grestore}~if }
- \@@_draw_literal:n { currentdict~/l3sc~known~{gsave~l3sc}~if }
+ \@@_draw_literal:n { grestore }
\@@_draw_literal:n { stroke }
- \@@_draw_literal:n { currentdict~/l3sc~known~{grestore}~if }
\bool_if:NT \g_@@_draw_clip_bool
{
\@@_draw_literal:x
@@ -1131,79 +1140,53 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_draw_color_reset:}
+%
% \begin{macro}
% {
-% \driver_draw_color_cmyk:nnnn ,
-% \driver_draw_fill_cmyk:nnnn ,
-% \driver_draw_stroke_cmyk:nnnn
+% \driver_draw_color_fill_cmyk:nnnn ,
+% \driver_draw_color_stroke_cmyk:nnnn
% }
% \begin{macro}
% {
-% \driver_draw_color_gray:n ,
-% \driver_draw_fill_gray:n ,
-% \driver_draw_stroke_gray:n
+% \driver_draw_color_fill_gray:n ,
+% \driver_draw_color_stroke_gray:n
% }
% \begin{macro}
% {
-% \driver_draw_color_rgb:nnn ,
-% \driver_draw_fill_rgb:nnn ,
-% \driver_draw_stroke_rgb:nnn
+% \driver_draw_color_fill_rgb:nnn ,
+% \driver_draw_color_stroke_rgb:nnn
% }
-% To allow color to be defined for strokes and fills separately and to
-% respect scoping, the data needs to be stored at the PostScript level.
-% We cannot undefine (local) fill/stroke colors once set up but we can
-% set them blank to improve performance slightly.
+% \begin{macro}{\@@_draw_color_fill:n, \@@_draw_color_stroke:n}
+% \begin{macro}{\driver_draw_color_fill_reset:, \driver_draw_color_stroke_reset:}
+% For \texttt{dvips}, we can use the standard color stack to deal with
+% stroke color, but for fills have to switch to raw PostScript. This is
+% thus not handled by the stack, but the context is very restricted. See
+% also how fills are implemented.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_draw_color_reset:
- {
- \@@_draw_literal:n { currentdict~/l3fc~known~{ /l3fc~ { } ~def }~if }
- \@@_draw_literal:n { currentdict~/l3sc~known~{ /l3sc~ { } ~def }~if }
- }
-\cs_new_protected:Npn \driver_draw_color_cmyk:nnnn #1#2#3#4
- {
- \@@_draw_literal:n { #1 ~ #2 ~ #3 ~ #4 ~ setcmykcolor }
- \@@_draw_color_reset:
- }
-\cs_new_protected:Npn \driver_draw_fill_cmyk:nnnn #1#2#3#4
- {
- \@@_draw_literal:n
- { /l3fc ~ { #1 ~ #2 ~ #3 ~ #4 ~ setcmykcolor ~ } ~ def }
- }
-\cs_new_protected:Npn \driver_draw_stroke_cmyk:nnnn #1#2#3#4
- {
- \@@_draw_literal:n
- { /l3sc ~ { #1 ~ #2 ~ #3 ~ #4 ~ setcmykcolor ~ } ~ def }
- }
-\cs_new_protected:Npn \driver_draw_color_gray:n #1
- {
- \@@_draw_literal:n { #1 ~ setgray }
- \@@_draw_color_reset:
- }
-\cs_new_protected:Npn \driver_draw_fill_gray:n #1
- { \@@_draw_literal:n { /l3fc ~ { #1 ~ setgray } ~ def } }
-\cs_new_protected:Npn \driver_draw_stroke_gray:n #1
- { \@@_draw_literal:n { /l3sc ~ { #1 ~ setgray } ~ def } }
-\cs_new_protected:Npn \driver_draw_color_rgb:nnn #1#2#3
- {
- \@@_draw_literal:n { #1 ~ #2 ~ #3 ~ setrgbcolor }
- \@@_draw_color_reset:
- }
-\cs_new_protected:Npn \driver_draw_fill_rgb:nnn #1#2#3
- {
- \@@_draw_literal:n
- { /l3fc ~ { #1 ~ #2 ~ #3 ~ setrgbcolor } ~ def }
- }
-\cs_new_protected:Npn \driver_draw_stroke_rgb:nnn #1#2#3
- {
- \@@_draw_literal:n
- { /l3sc ~ { #1 ~ #2 ~ #3 ~ setrgbcolor } ~ def }
- }
+\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
+ { \@@_draw_fill:n { #1 ~ #2 ~ #3 ~ #4 ~ setcmykcolor } }
+\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
+ { \@@_draw_stroke:n { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } }
+\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
+ { \@@_draw_fill:n { #1 ~ setgray } }
+\cs_new_protected:Npn \driver_draw_color_stroke_gray:n #1
+ { \@@_draw_stroke:n { gray ~ #1 } }
+\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
+ { \@@_draw_fill:n { #1 ~ #2 ~ #3 ~ setrgbcolor } }
+\cs_new_protected:Npn \driver_draw_color_stroke_rgb:nnn #1#2#3
+ { \@@_draw_stroke:n { rgb ~ #1 ~ #2 ~ #3 } }
+\cs_new_protected:Npn \@@_draw_color_fill:n #1
+ { \@@_draw_literal:n { /l3fc ~ { #1 } ~ def } }
+\cs_new_protected:Npn \@@_draw_color_stroke:n #1
+ { \tex_special:D { color~push~#1 } }
+\cs_new_protected:Npn \driver_draw_color_fill_reset: { }
+\cs_new_eq:NN \driver_draw_color_stroke_reset: \driver_color_reset:
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\driver_draw_transformcm:nnnnnn}
% The first four arguments here are floats (the affine matrix), the last
@@ -2053,55 +2036,59 @@
%
% \begin{macro}
% {
-% \driver_draw_color_cmyk:nnnn ,
-% \driver_draw_fill_cmyk:nnnn ,
-% \driver_draw_stroke_cmyk:nnnn
+% \driver_draw_color_fill_cmyk:nnnn ,
+% \driver_draw_color_stroke_cmyk:nnnn
% }
% \begin{macro}
% {
-% \driver_draw_color_gray:n ,
-% \driver_draw_fill_gray:n ,
-% \driver_draw_stroke_gray:n
+% \driver_draw_color_fill_gray:n ,
+% \driver_draw_color_stroke_gray:n
% }
% \begin{macro}
% {
-% \driver_draw_color_rgb:nnn ,
-% \driver_draw_fill_rgb:nnn ,
-% \driver_draw_stroke_rgb:nnn
+% \driver_draw_color_fill_rgb:nnn ,
+% \driver_draw_color_stroke_rgb:nnn
% }
-% Yet more fast conversion, all using the FPU to allow for expressions
-% in numerical input.
-% \begin{macrocode}
-\cs_new_protected:Npn \driver_draw_color_cmyk:nnnn #1#2#3#4
- {
- \@@_draw_literal:n
- { #1 ~ #2 ~ #3 ~ #4 ~ k ~ #1 ~ #2 ~ #3 ~ #4 ~ K }
- }
-\cs_new_protected:Npn \driver_draw_fill_cmyk:nnnn #1#2#3#4
- {
- \@@_draw_literal:n { #1 ~ #2 ~ #3 ~ #4 ~ k }
- }
-\cs_new_protected:Npn \driver_draw_stroke_cmyk:nnnn #1#2#3#4
- { \@@_draw_literal:n { #1 ~ #2 ~ #3 ~ #4 ~ K } }
-\cs_new_protected:Npn \driver_draw_color_gray:n #1
- { \@@_draw_literal:n { #1 ~ g ~ #1 ~ G } }
-\cs_new_protected:Npn \driver_draw_fill_gray:n #1
- { \@@_draw_literal:n { #1 ~ g } }
-\cs_new_protected:Npn \driver_draw_stroke_gray:n #1
- { \@@_draw_literal:n { #1 ~ G } }
-\cs_new_protected:Npn \driver_draw_color_rgb:nnn #1#2#3
- {
- \@@_draw_literal:n
- { #1 ~ #2 ~ #3 ~ rg ~ #1 ~ #2 ~ #3 ~ RG }
- }
-\cs_new_protected:Npn \driver_draw_fill_rgb:nnn #1#2#3
- { \@@_draw_literal:n { #1 ~ #2 ~ #3 ~ rg } }
-\cs_new_protected:Npn \driver_draw_stroke_rgb:nnn #1#2#3
- { \@@_draw_literal:n { #1 ~ #2 ~ #3 ~ RG } }
+% \begin{macro}
+% {
+% \driver_draw_color_fill_reset: ,
+% \driver_draw_color_stroke_reset:
+% }
+% For the stroke color, all engines here can use the color stack to handle
+% the setting. However, that is not the case for fill color: the stack in
+% \texttt{(x)dvipdfmx} only covers one type of color. So we have to use
+% different approaches for the two sets of engines.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
+ { \@@_color_fill_select:n { #1 ~ #2 ~ #3 ~ #4 ~ k } }
+\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
+ { \@@_color_select:n { #1 ~ #2 ~ #3 ~ #4 ~ K } }
+\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
+ { \@@_color_fill_select:n { #1 ~ g } }
+\cs_new_protected:Npn \driver_draw_color_stroke_gray:n #1
+ { \@@_color_select:n { #1 ~ G } }
+\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
+ { \@@_color_fill_select:n { #1 ~ #2 ~ #3 ~ rg } }
+\cs_new_protected:Npn \driver_draw_color_stroke_rgb:nnn #1#2#3
+ { \@@_color_select:n { #1 ~ #2 ~ #3 ~ RG } }
+%<*pdfmode>
+\cs_new_eq:NN \driver_draw_color_fill_reset: \driver_color_reset:
+%</pdfmode>
+%<*dvipdfmx|xdvipdfmx>
+\cs_new_protected:Npn \driver_draw_color_fill_reset: { }
+%</dvipdfmx|xdvipdfmx>
+\cs_new_eq:NN \driver_draw_color_stroke_reset: \driver_color_reset:
+%<*pdfmode>
+\cs_new_eq:NN \@@_color_fill_select:n \@@_color_select:n
+%</pdfmode>
+%<*dvipdfmx|xdvipdfmx>
+\cs_new_eq:NN \@@_color_fill_select:n \@@_draw_literal:n
+%</dvipdfmx|xdvipdfmx>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\driver_draw_transformcm:nnnnnn}
% The first four arguments here are floats (the affine matrix), the last
@@ -2649,113 +2636,85 @@
%
% \begin{macro}
% {
-% \driver_draw_color_cmyk:nnnn ,
-% \driver_draw_fill_cmyk:nnnn ,
-% \driver_draw_stroke_cmyk:nnnn
+% \driver_draw_color_fill_cmyk:nnnn ,
+% \driver_draw_color_stroke_cmyk:nnnn
% }
% \begin{macro}
% {
-% \driver_draw_color_gray:n ,
-% \driver_draw_fill_gray:n ,
-% \driver_draw_stroke_gray:n
+% \driver_draw_color_fill_gray:n ,
+% \driver_draw_color_stroke_gray:n
% }
% \begin{macro}
% {
-% \driver_draw_color_rgb:nnn ,
-% \driver_draw_fill_rgb:nnn ,
-% \driver_draw_stroke_rgb:nnn
+% \driver_draw_color_fill_rgb:nnn ,
+% \driver_draw_color_stroke_rgb:nnn
% }
-% SVG only works with RGB colors, so there is some conversion to
-% do. The values also need to be given as percentages, which means a
-% little more maths.
+% \begin{macro}{\@@_draw_color_fill:nnn}
+% \begin{macro}
+% {
+% \driver_draw_color_fill_reset: ,
+% \driver_draw_color_stroke_reset:
+% }
+% SVG fill color has to be covered outside of the stack, as for
+% \texttt{dvips}. Here, we are only allowed RGB colors so there is some
+% conversion to do.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_draw_color_cmyk_aux:NNnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
{
\use:x
{
- \@@_draw_color_rgb_auxii:nnn
- { \fp_eval:n { -100 * ( (#3) * ( 1 - (#6) ) - 1 ) } }
- { \fp_eval:n { -100 * ( (#4) * ( 1 - (#6) ) + #6 - 1 ) } }
- { \fp_eval:n { -100 * ( (#5) * ( 1 - (#6) ) + #6 - 1 ) } }
+ \@@_draw_color_fill:nnn
+ { \fp_eval:n { -100 * ( (#1) * ( 1 - (#4) ) - 1 ) } }
+ { \fp_eval:n { -100 * ( (#2) * ( 1 - (#4) ) + #4 - 1 ) } }
+ { \fp_eval:n { -100 * ( (#3) * ( 1 - (#4) ) + #4 - 1 ) } }
}
- #1 #2
}
-\cs_new_protected:Npn \driver_draw_color_cmyk:nnnn
- { \@@_draw_color_cmyk_aux:NNnnnnn \c_true_bool \c_true_bool }
-\cs_new_protected:Npn \driver_draw_fill_cmyk:nnnn
- { \@@_draw_color_cmyk_aux:NNnnnnn \c_false_bool \c_true_bool }
-\cs_new_protected:Npn \driver_draw_stroke_cmyk:nnnn
- { \@@_draw_color_cmyk_aux:NNnnnnn \c_true_bool \c_false_bool }
-\cs_new_protected:Npn \@@_draw_color_gray_aux:NNn #1#2#3
+\cs_new_eq:NN \driver_draw_color_stroke_cmyk:nnnn \driver_color_cmyk:nnnn
+\cs_new_protected:Npn \driver_draw_color_gray:n #1
{
\use:x
{
- \@@_draw_color_gray_aux:nNN
- { \fp_eval:n { 100 * (#3)} }
+ \@@_draw_color_gray_aux:n
+ { \fp_eval:n { 100 * (#3) } }
}
- #1 #2
- }
-\cs_new_protected:Npn \@@_draw_color_gray_aux:nNN #1
- { \@@_draw_color_rgb_auxii:nnnNN {#1} {#1} {#1} }
-\cs_generate_variant:Nn \@@_draw_color_gray_aux:nNN { x }
-\cs_new_protected:Npn \driver_draw_color_gray:n
- { \@@_draw_color_gray_aux:NNn \c_true_bool \c_true_bool }
-\cs_new_protected:Npn \driver_draw_fill_gray:n
- { \@@_draw_color_gray_aux:NNn \c_false_bool \c_true_bool }
-\cs_new_protected:Npn \driver_draw_stroke_gray:n
- { \@@_draw_color_gray_aux:NNn \c_true_bool \c_false_bool }
-\cs_new_protected:Npn \@@_draw_color_rgb_auxi:NNnnn #1#2#3#4#5
+ }
+\cs_new_protected:Npn \@@_draw_color_gray_aux:n #1
+ { \@@_draw_color_fill:nnn {#1} {#1} {#1} }
+\cs_new_eq:NN \driver_draw_color_stroke_gray:n \driver_color_gray:n
+\cs_new_protected:Npn \driver_draw_color_rgb:nnn #1#2#3
{
\use:x
{
- \@@_draw_color_rgb_auxii:nnnNN
+ \@@_draw_color_fill:nnn
+ { \fp_eval:n { 100 * (#1) } }
+ { \fp_eval:n { 100 * (#2) } }
{ \fp_eval:n { 100 * (#3) } }
- { \fp_eval:n { 100 * (#4) } }
- { \fp_eval:n { 100 * (#5) } }
}
- #1 #2
}
-\cs_new_protected:Npn \@@_draw_color_rgb_auxii:nnnNN #1#2#3#4#5
+\cs_new_protected:Npn \@@_draw_color_fill:nnn #1#2#3
{
\@@_draw_scope:x
{
- \bool_if:NT #4
- {
- fill =
- "
- rgb
- (
- #1 \c_percent_str ,
- #2 \c_percent_str ,
- #3 \c_percent_str
- )
- "
- \bool_if:NT #5 { ~ }
- }
- \bool_if:NT #5
- {
- stroke =
- "
- rgb
- (
- #1 \c_percent_str ,
- #2 \c_percent_str ,
- #3 \c_percent_str
- )
- "
- }
+ fill =
+ "
+ rgb
+ (
+ #1 \c_percent_str ,
+ #2 \c_percent_str ,
+ #3 \c_percent_str
+ )
+ "
}
}
-\cs_new_protected:Npn \driver_draw_color_rgb:nnn
- { \@@_draw_color_rgb_auxi:NNnnn \c_true_bool \c_true_bool }
-\cs_new_protected:Npn \driver_draw_fill_rgb:nnn
- { \@@_draw_color_rgb_auxi:NNnnn \c_false_bool \c_true_bool }
-\cs_new_protected:Npn \driver_draw_stroke_rgb:nnn
- { \@@_draw_color_rgb_auxi:NNnnn \c_true_bool \c_false_bool }
+\cs_new_eq:NN \driver_draw_color_stroke_rgb:nnn \driver_color_rgb:nnn
+\cs_new_protected:Npn \driver_draw_color_fill_reset: { }
+\cs_new_eq:NN \driver_draw_color_stroke_reset: \driver_color_reset:
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\driver_draw_transformcm:nnnnnn}
% The first four arguments here are floats (the affine matrix), the last
diff --git a/l3kernel/testfiles/d3dvips.luatex.tlg b/l3kernel/testfiles/d3dvips.luatex.tlg
index fe90a95..cb6b9b3 100644
--- a/l3kernel/testfiles/d3dvips.luatex.tlg
+++ b/l3kernel/testfiles/d3dvips.luatex.tlg
@@ -583,6 +583,7 @@ TEST 4: Color
> \box...=
\hbox(6.94444+0.0)x50.02786, direction TLT
.\special{color push gray 0}
+.\special{ps::/l3fc {} def}
.\OT1/cmr/m/n/10 H
.\OT1/cmr/m/n/10 e
.\OT1/cmr/m/n/10 l
diff --git a/l3kernel/testfiles/d3dvips.tlg b/l3kernel/testfiles/d3dvips.tlg
index 8db0cfb..0a81339 100644
--- a/l3kernel/testfiles/d3dvips.tlg
+++ b/l3kernel/testfiles/d3dvips.tlg
@@ -551,6 +551,7 @@ TEST 4: Color
> \box...=
\hbox(6.94444+0.0)x50.02786
.\special{color push gray 0}
+.\special{ps::/l3fc {} def}
.\OT1/cmr/m/n/10 H
.\OT1/cmr/m/n/10 e
.\OT1/cmr/m/n/10 l
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 2221e6b..fa2bd69 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -5968,15 +5968,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 93837ba..e148105 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -5959,15 +5959,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index de8efbd..1886f8a 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -6160,15 +6160,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index f879fb0..ea87590 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -6158,15 +6158,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index 8883318..155b3aa 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -5950,15 +5950,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 2221e6b..fa2bd69 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -5968,15 +5968,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index 93837ba..e148105 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -5959,15 +5959,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index de8efbd..1886f8a 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -6160,15 +6160,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index f879fb0..ea87590 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -6158,15 +6158,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index 8883318..155b3aa 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -5950,15 +5950,15 @@ Defining \driver_draw_cap_rectangle: on line ...
Defining \driver_draw_join_miter: on line ...
Defining \driver_draw_join_round: on line ...
Defining \driver_draw_join_bevel: on line ...
-Defining \driver_draw_color_cmyk:nnnn on line ...
-Defining \driver_draw_fill_cmyk:nnnn on line ...
-Defining \driver_draw_stroke_cmyk:nnnn on line ...
-Defining \driver_draw_color_gray:n on line ...
-Defining \driver_draw_fill_gray:n on line ...
-Defining \driver_draw_stroke_gray:n on line ...
-Defining \driver_draw_color_rgb:nnn on line ...
-Defining \driver_draw_fill_rgb:nnn on line ...
-Defining \driver_draw_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_cmyk:nnnn on line ...
+Defining \driver_draw_color_stroke_cmyk:nnnn on line ...
+Defining \driver_draw_color_fill_gray:n on line ...
+Defining \driver_draw_color_stroke_gray:n on line ...
+Defining \driver_draw_color_fill_rgb:nnn on line ...
+Defining \driver_draw_color_stroke_rgb:nnn on line ...
+Defining \driver_draw_color_fill_reset: on line ...
+Defining \driver_draw_color_stroke_reset: on line ...
+Defining \__driver_color_fill_select:n on line ...
Defining \driver_draw_transformcm:nnnnnn on line ...
Defining \driver_draw_hbox:Nnnnnnn on line ...
Defining \l__driver_tmp_box on line ...
More information about the latex3-commits
mailing list