summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
blob: 76aee08fef940fb7bdcd05d9ba7b86a5d0a3aa9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
%% LaTeX2e file `xcolor-patches.sty'
%%
\ProvidesPackage{xcolor-patches-tmp-ltx}[2021-05-14 v0.95d patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}

\ExplSyntaxOn
% #1 is the color name
% #2:  model or models
% #3: value: either numbers or a color name
% #4 is the type: named or ps
\cs_gset_protected:Npn \@expl@xcolor@set@@nnnn #1 #2 #3 #4
    {
      \str_case:nnF {#4}
        {
          % we ignore the ps  type for now.
          {ps}{}
          {named}
            {
               \cs_if_exist:cT { __color_parse_model_ #2 :w }
                 {
                    \color_set:nnn {#1}{#2}{#3}
                 }
            }
        }
        {
          \cs_if_exist:cTF { __color_parse_model_ #2 :w }
           {
             \color_set:nnn {#1}{#2}{#3}
           }
           {
             \tl_if_eq:nnTF{#2}{named}%this the model not the type!
               {
                 \color_set:nn{#1}{#3}
               }
               {
                 %this is for multi models, it will break if there is model
                 %l3 doesn't know, but the case is rare, so accept it for now.
                 \color_set:nnn{#1}{#2}{#3}
               }
           }
        }
    }
 \cs_generate_variant:Nn \color_set:nn {ne}
 \cs_new_protected:Npn \@expl@xcolor@set@@ne #1 #2
    {
      \exp_args:Nx \__color_if_defined:nT {#2}
           { \color_set:ne {#1}{#2} }
    }
\ExplSyntaxOff
%\pretocmd{\XC@col@rlet}   {\@expl@color@set@@ne{#2}{#4}}{}{\fail}
\def\XC@col@rlet[#1]#2[#3]#4%
 {\@expl@xcolor@set@@ne{#2}{#4}%
  \begingroup
  \edef\@@cls{#1}\XC@edef\@@nam{#2}\XC@sdef\@@mod{#3}\XC@edef\@@clr{#4}%
  \XC@info\@@clr\@@tmp\XC@@tstfalse
  \ifnum\@@tmp=\@ne\ifx\@@mod\@empty
    \ifx\@@cls\@empty
      \XC@@tsttrue
    \else
      \edef\@@tmp
       {\expandafter\expandafter\expandafter\@secondoffive
         \csname\string\color@\@@clr\endcsname}%
      \ifx\@@cls\@@tmp\XC@@tsttrue\fi
    \fi
  \fi\fi
  \ifXC@@tst
    \XC@logdef\@@nam\XC@c@l@rlet\@@nam\@@clr
  \else
    \extractcolorspec\@@clr\@@clr
    \ifx\@@mod\@empty\else
      \expandafter\convertcolorspec\@@clr\@@mod\@@clr
      \edef\@@clr{{\@@mod}{\@@clr}}\fi
    \edef\@@tmp{\noexpand\XC@definecolor[\@@cls]{\@@nam}\@@clr}%
  \fi
  \expandafter\endgroup\@@tmp\xglobal@stop}

%\pretocmd{\XC@definec@lor}{\@expl@color@set@@nnn{#2}{#4}{#5}}{}{\fail}
\def\XC@definec@lor[#1]#2[#3]#4#5%
 {\@expl@xcolor@set@@nnnn{#2}{#4}{#5}{#1}%
  \begingroup
  \XC@sdef\@@cls{#1}\XC@edef\@@nam{#2}\edef\colornameprefix{#3}%
  \XC@logdef\@@nam
  \XC@getmodclr02{#4}{#5}{\let\@@tmp\relax}%
   {\ifx\@@mod\XC@mod@named
      \XC@c@l@rlet\@@nam\@@clr
    \else
      \ifx\@@cls\XC@mod@ps
        \edef\@@drv{\@@mod\space\@@clr}\def\@@hue{0}%
        \edef\@@clr{\@nameuse{XC@clr@\@@mod @white}}%
      \else
        \ifconvertcolorsD
          \let\@@tmp\@@mod\XC@sdef\@@mod{\XC@tgt@mod\@@tmp}%
          \convertcolorspec\@@tmp\@@clr\@@mod\@@clr
        \fi
        \XC@coremodel\@@mod\@@clr
        \csname color@\@@mod\expandafter\endcsname
          \expandafter\@@drv\expandafter{\@@clr}%
        \ifcase\XC@@xcp@
          \immediate\write\XC@@xcp{/\colornameprefix\@@nam{\expandafter
            \XC@strip@comma\@@clr,,\@nnil}XC\@@mod}%
          \let\@@cls\XC@mod@named
        \fi
        \ifx\@@cls\@empty\else
          \let\@@tmp\@@cls
          \@nameuse{define@color@\@@cls}\@@nam\@@drv
          \csname color@\@@tmp\expandafter\endcsname
            \expandafter\@@drv\expandafter{\@@nam}%
        \fi
      \fi
      \toks@\expandafter{\@@drv}%
      \edef\@@tmp
       {\ifglobalcolors\global\else\xglobal@\fi
        \noexpand\@namedef{\string\color@\@@nam}%
         {\noexpand\xcolor@{\@@cls}{\the\toks@}{\@@mod}{\@@clr}}}%
    \fi}%
  \expandafter\endgroup\@@tmp\xglobal@stop}