Current File : //usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdfrender.sty |
%%
%% This is file `pdfrender.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% pdfrender.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% Project: pdfrender
%% Version: 2019/12/29 v1.6
%%
%% Copyright (C)
%% 2010 Heiko Oberdiek
%% 2016-2019 Oberdiek Package Support Group
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
%% https://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
%% https://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainers of this work are
%% Heiko Oberdiek and the Oberdiek Package Support Group
%% https://github.com/ho-tex/oberdiek/issues
%%
%%
%% The Base Interpreter refers to any `TeX-Format',
%% because some files are installed in TDS:tex/generic//.
%%
%% This work consists of the main source file pdfrender.dtx
%% and the derived files
%% pdfrender.sty, pdfrender.pdf, pdfrender.ins, pdfrender.drv,
%% pdfrender-test1.tex, pdfrender-test2.tex,
%% pdfrender-test3.tex, pdfrender-test4.tex,
%% pdfrender-test5.tex.
%%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode35=6 % #
\catcode39=12 % '
\catcode44=12 % ,
\catcode45=12 % -
\catcode46=12 % .
\catcode58=12 % :
\catcode64=11 % @
\catcode123=1 % {
\catcode125=2 % }
\expandafter\let\expandafter\x\csname ver@pdfrender.sty\endcsname
\ifx\x\relax % plain-TeX, first loading
\else
\def\empty{}%
\ifx\x\empty % LaTeX, first loading,
% variable is initialized, but \ProvidesPackage not yet seen
\else
\expandafter\ifx\csname PackageInfo\endcsname\relax
\def\x#1#2{%
\immediate\write-1{Package #1 Info: #2.}%
}%
\else
\def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
\fi
\x{pdfrender}{The package is already loaded}%
\aftergroup\endinput
\fi
\fi
\endgroup%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode35=6 % #
\catcode39=12 % '
\catcode40=12 % (
\catcode41=12 % )
\catcode44=12 % ,
\catcode45=12 % -
\catcode46=12 % .
\catcode47=12 % /
\catcode58=12 % :
\catcode64=11 % @
\catcode91=12 % [
\catcode93=12 % ]
\catcode123=1 % {
\catcode125=2 % }
\expandafter\ifx\csname ProvidesPackage\endcsname\relax
\def\x#1#2#3[#4]{\endgroup
\immediate\write-1{Package: #3 #4}%
\xdef#1{#4}%
}%
\else
\def\x#1#2[#3]{\endgroup
#2[{#3}]%
\ifx#1\@undefined
\xdef#1{#3}%
\fi
\ifx#1\relax
\xdef#1{#3}%
\fi
}%
\fi
\expandafter\x\csname ver@pdfrender.sty\endcsname
\ProvidesPackage{pdfrender}%
[2019/12/29 v1.6 Access to some PDF graphics parameters (HO)]%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode123=1 % {
\catcode125=2 % }
\catcode64=11 % @
\def\x{\endgroup
\expandafter\edef\csname PdfRender@AtEnd\endcsname{%
\endlinechar=\the\endlinechar\relax
\catcode13=\the\catcode13\relax
\catcode32=\the\catcode32\relax
\catcode35=\the\catcode35\relax
\catcode61=\the\catcode61\relax
\catcode64=\the\catcode64\relax
\catcode123=\the\catcode123\relax
\catcode125=\the\catcode125\relax
}%
}%
\x\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode35=6 % #
\catcode64=11 % @
\catcode123=1 % {
\catcode125=2 % }
\def\TMP@EnsureCode#1#2{%
\edef\PdfRender@AtEnd{%
\PdfRender@AtEnd
\catcode#1=\the\catcode#1\relax
}%
\catcode#1=#2\relax
}
\TMP@EnsureCode{10}{12}% ^^J
\TMP@EnsureCode{36}{3}% $
\TMP@EnsureCode{39}{12}% '
\TMP@EnsureCode{40}{12}% (
\TMP@EnsureCode{41}{12}% )
\TMP@EnsureCode{42}{12}% *
\TMP@EnsureCode{43}{12}% +
\TMP@EnsureCode{44}{12}% ,
\TMP@EnsureCode{45}{12}% -
\TMP@EnsureCode{46}{12}% .
\TMP@EnsureCode{47}{12}% /
\TMP@EnsureCode{58}{12}% :
\TMP@EnsureCode{59}{12}% ;
\TMP@EnsureCode{60}{12}% <
\TMP@EnsureCode{62}{12}% >
\TMP@EnsureCode{63}{12}% ?
\TMP@EnsureCode{91}{12}% [
\TMP@EnsureCode{93}{12}% ]
\TMP@EnsureCode{94}{7}% ^ (superscript)
\TMP@EnsureCode{96}{12}% `
\TMP@EnsureCode{124}{12}% |
\def\PdfRender@AtEndHook{}
\expandafter\def\expandafter\PdfRender@AtEnd\expandafter{%
\expandafter\PdfRender@AtEndHook
\PdfRender@AtEnd
\endinput
}
\def\PdfRender@newif#1{%
\expandafter\edef\csname PdfRender@#1true\endcsname{%
\let
\expandafter\noexpand\csname ifPdfRender@#1\endcsname
\noexpand\iftrue
}%
\expandafter\edef\csname PdfRender@#1false\endcsname{%
\let
\expandafter\noexpand\csname ifPdfRender@#1\endcsname
\noexpand\iffalse
}%
\csname PdfRender@#1false\endcsname
}
\PdfRender@newif{Stack}
\PdfRender@newif{Match}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname RequirePackage\endcsname\relax
\def\PdfRender@RequirePackage#1[#2]{%
\expandafter\def\expandafter\PdfRender@AtEndHook\expandafter{%
\PdfRender@AtEndHook
\ltx@ifpackagelater{#1}{#2}{}{%
\@PackageWarningNoLine{pdfrender}{%
You have requested version\MessageBreak
`#2' of package `#1',\MessageBreak
but only version\MessageBreak
`\csname ver@#1.\ltx@pkgextension\endcsname'\MessageBreak
is available%
}%
}%
}%
\input #1.sty\relax
}%
\else
\let\PdfRender@RequirePackage\RequirePackage
\fi
\ifx\pdfextension\@undefined\else
\def\pdfcolorstackinit {\pdffeedback colorstackinit}
\protected\def\pdfcolorstack {\pdfextension colorstack}
\protected\def\pdfliteral {\pdfextension literal}
\fi
\PdfRender@RequirePackage{iftex}[2019/11/07]
\PdfRender@RequirePackage{infwarerr}[2007/09/09]
\PdfRender@RequirePackage{ltxcmds}[2010/01/28]
\ifpdf
\ltx@IfUndefined{pdfcolorstackinit}{%
\@PackageWarning{pdfrender}{%
Missing \string\pdfcolorstackinit
}%
}{%
\PdfRender@Stacktrue
}%
\ltx@IfUndefined{pdfmatch}{%
\@PackageInfoNoLine{pdfrender}{%
\string\pdfmatch\ltx@space not found. %
Therefore the values\MessageBreak
of some parameters are not validated%
}%
}{%
\PdfRender@Matchtrue
}%
\else
\@PackageWarning{pdfrender}{%
Missing pdfTeX in PDF mode%
}%
\ltx@IfUndefined{newcommand}{%
\def\pdfrender#1{}%
\long\def\textpdfrender#1#2{#2}%
}{%
\newcommand*{\pdfrender}[1]{}%
\newcommand{\textpdfrender}[2]{#2}%
}%
\expandafter\PdfRender@AtEnd
\fi%
\ltx@ifpackageloaded{color}{}{%
\def\color@setgroup{\begingroup\set@color}%
\let\color@begingroup\begingroup
\def\color@endgroup{\endgraf\endgroup}%
\def\color@hbox{\hbox\bgroup\color@begingroup}%
\def\color@vbox{\vbox\bgroup\color@begingroup}%
\def\color@endbox{\color@endgroup\egroup}%
\ltx@ifundefined{bgroup}{%
\let\bgroup={\let\egroup=}%
}{}%
\ltx@ifundefined{endgraf}{%
\let\endgraf=\par
}{}%
}
\def\PdfRender@NormalColorHook{}
\def\PdfRender@ColorSetGroupHook{}
\def\PdfRender@TestBox#1{%
\setbox0=\color@hbox#1\color@endbox
}
\def\PdfRender@PatchNormalColor{%
\ltx@ifundefined{normalcolor}{%
\gdef\normalcolor{\PdfRender@NormalColorHook}%
}{%
\begingroup
\def\PdfRender@NormalColorHook{\let\PdfRender@temp=Y}%
\PdfRender@TestBox{%
\let\set@color\relax
\normalcolor
\ifx\PdfRender@temp Y%
\else
\ltx@GlobalAppendToMacro\normalcolor{%
\PdfRender@NormalColorHook
}%
\fi
}%
\endgroup
}%
\ifx\@nodocument\relax
\global\let\PdfRender@PatchNormalColor\relax
\fi
}%
\def\PdfRender@PatchColorSetGroup{%
\begingroup
\def\PdfRender@ColorSetGroupHook{\let\PdfRender@temp=Y}%
\PdfRender@TestBox{%
\let\set@color\relax
\color@setgroup\color@endgroup
\ifx\PdfRender@temp Y%
\else
\ltx@GlobalAppendToMacro\color@setgroup{%
\PdfRender@ColorSetGroupHook
}%
\fi
}%
\endgroup
\ifx\@nodocument\relax
\global\let\PdfRender@PatchColorSetGroup\relax
\fi
}%
\def\PdfRender@PatchColor{%
\PdfRender@PatchNormalColor
\PdfRender@PatchColorSetGroup
}
\PdfRender@PatchColor
\ltx@IfUndefined{AtBeginDocument}{}{%
\AtBeginDocument{\PdfRender@PatchColor}%
}
\ltx@IfUndefined{AfterPackage}{%
}{%
\AfterPackage{color}{\PdfRender@PatchColor}%
\AfterPackage{xcolor}{\PdfRender@PatchColor}%
\AfterPackage{etoolbox}{%
\AfterEndPreamble{\PdfRender@PatchColor}%
}%
}%
\ltx@IfUndefined{AfterEndPreamble}{%
}{%
\AfterEndPreamble{\PdfRender@PatchColor}%
}%
\PdfRender@RequirePackage{kvsetkeys}[2010/01/28]
\def\PdfRender@texorpdfstring{%
\ltx@IfUndefined{texorpdfstring}\ltx@firstoftwo\texorpdfstring
}
\ltx@IfUndefined{DeclareRobustCommand}%
\ltx@firstoftwo\ltx@secondoftwo
{%
\def\pdfrender#1%
}{%
\newcommand{\pdfrender}{}%
\DeclareRobustCommand*{\pdfrender}[1]%
}%
{%
\PdfRender@texorpdfstring{%
\PdfRender@PatchNormalColor
\global\let\PdfRender@FillColor\ltx@empty
\global\let\PdfRender@StrokeColor\ltx@empty
\kvsetkeys{PDFRENDER}{#1}%
\PdfRender@SetColor
}{}%
}
\ltx@IfUndefined{DeclareRobustCommand}%
\ltx@firstoftwo\ltx@secondoftwo
{%
\long\def\textpdfrender#1#2%
}{%
\newcommand{\textpdfrender}{}%
\DeclareRobustCommand{\textpdfrender}[2]%
}%
{%
\PdfRender@texorpdfstring{%
\begingroup
\pdfrender{#1}%
#2%
\endgroup
}{#2}%
}
\PdfRender@newif{Values}
\def\PdfRender@NewClassValues#1#2#3#4{%
\PdfRender@Valuestrue
\PdfRender@NewClass{#1}{#2}{#3}{#4}{}%
}
\def\PdfRender@NewClass#1#2#3#4#5{%
\PdfRender@newif{Active#1}%
\expandafter\def\csname PdfRender@Default#1\endcsname{#2}%
\expandafter\let\csname PdfRender@Current#1\expandafter\endcsname
\csname PdfRender@Default#1\endcsname
\ifPdfRender@Stack
\expandafter\edef\csname PdfRender@Init#1\endcsname{%
\global\chardef
\expandafter\noexpand\csname PdfRender@Stack#1\endcsname=%
\noexpand\pdfcolorstackinit page direct{%
\noexpand#3%
\expandafter\noexpand\csname PdfRender@Default#1\endcsname
}\relax
\noexpand\@PackageInfo{pdfrender}{%
New color stack `#1' = \noexpand\number
\expandafter\noexpand\csname PdfRender@Stack#1\endcsname
}%
\gdef\expandafter\noexpand\csname PdfRender@Init#1\endcsname{}%
}%
\expandafter\edef\csname PdfRender@Set#1\endcsname{%
\expandafter\noexpand\csname PdfRender@Init#1\endcsname
\noexpand\pdfcolorstack
\expandafter\noexpand\csname PdfRender@Stack#1\endcsname
push{%
#3{\expandafter\noexpand\csname PdfRender@Current#1\endcsname}%
}%
\noexpand\aftergroup
\expandafter\noexpand\csname PdfRender@Reset#1\endcsname
}%
\expandafter\edef\csname PdfRender@Reset#1\endcsname{%
\expandafter\noexpand\csname PdfRender@Init#1\endcsname
\noexpand\pdfcolorstack
\expandafter\noexpand\csname PdfRender@Stack#1\endcsname
pop\relax
}%
\else
\expandafter\edef\csname PdfRender@Set#1\endcsname{%
\noexpand\pdfliteral direct{%
#3{\expandafter\noexpand\csname PdfRender@Current#1\endcsname}%
}%
\noexpand\aftergroup
\expandafter\noexpand\csname PdfRender@Reset#1\endcsname
}%
\expandafter\edef\csname PdfRender@Reset#1\endcsname{%
\noexpand\pdfliteral direct{%
#3{\expandafter\noexpand\csname PdfRender@Current#1\endcsname}%
}%
}%
\fi
\expandafter\edef\csname PdfRender@Normal#1\endcsname{%
\let
\expandafter\noexpand\csname PdfRender@Current#1\endcsname
\expandafter\noexpand\csname PdfRender@Default#1\endcsname
\noexpand\PdfRender@Set{#1}%
}%
\expandafter\ltx@GlobalAppendToMacro\expandafter\PdfRender@NormalColorHook
\expandafter{%
\csname PdfRender@Normal#1\endcsname
}%
\ltx@GlobalAppendToMacro\PdfRender@ColorSetGroupHook{%
\PdfRender@Set{#1}%
}%
\ifPdfRender@Values
\kv@parse@normalized{#4}{%
\expandafter\let\csname PdfRender@#1@\kv@key\endcsname\kv@key
\ifx\kv@value\relax
\else
\expandafter\let\csname PdfRender@#1@\kv@value\endcsname\kv@key
\fi
\ltx@gobbletwo
}%
\PdfRender@define@key{PDFRENDER}{#1}{%
\global\csname PdfRender@Active#1true\endcsname
\def\PdfRender@Current{##1}%
\PdfRender@SetValidateValues{#1}%
}%
\PdfRender@Valuesfalse
\else
\PdfRender@define@key{PDFRENDER}{#1}{%
\global\csname PdfRender@Active#1true\endcsname
\expandafter\def\csname PdfRender@Current#1\endcsname{##1}%
\ltx@IfUndefined{PdfRender@PostProcess#1}{%
}{%
\csname PdfRender@PostProcess#1\endcsname
}%
\PdfRender@SetValidate{#1}{#4}{#5}%
}%
\fi
}%
\ltx@IfUndefined{define@key}{%
\def\PdfRender@define@key#1#2{%
\expandafter\def\csname KV@#1@#2\endcsname##1%
}%
}{%
\let\PdfRender@define@key\define@key
}
\def\PdfRender@Set#1{%
\csname ifPdfRender@Active#1\endcsname
\csname PdfRender@Set#1\expandafter\endcsname
\fi
}
\def\PdfRender@Reset#1{%
\csname ifPdfRender@Active#1\endcsname
\csname PdfRender@Reset#1\expandafter\endcsname
\fi
}
\def\PdfRender@ErrorInvalidValue#1{%
\PackageError{pdfrender}{%
Ignoring parameter setting for `#1'\MessageBreak
because of invalid value %
`\csname PdfRender@Current#1\endcsname'%
}\@ehc
\expandafter\let\csname PdfRender@Current#1\endcsname\ltx@empty
}%
\ifPdfRender@Match
\def\PdfRender@SetValidate#1#2#3{%
\ifnum\pdfmatch{^(#2)$}{\csname PdfRender@Current#1\endcsname}=1 %
\csname PdfRender@Set#1\expandafter\endcsname
\else
\PdfRender@ErrorInvalidValue{#1}%
\fi
}%
\else
\def\PdfRender@SetValidate#1#2#3{%
\expandafter\let\expandafter\PdfRender@Current
\csname PdfRender@Current#1\endcsname
#3%
\ifx\PdfRender@Current\@empty
\PdfRender@ErrorInvalidValue{#1}%
\else
\csname PdfRender@Set#1\expandafter\endcsname
\fi
}%
\fi
\def\PdfRender@SetValidateValues#1{%
\ltx@IfUndefined{PdfRender@#1@\PdfRender@Current}{%
\expandafter\let\csname PdfRender@Current#1\endcsname
\PdfRender@Current
\PdfRender@ErrorInvalidValue{#1}%
}{%
\expandafter\edef\csname PdfRender@Current#1\endcsname{%
\csname PdfRender@#1@\PdfRender@Current\endcsname
}%
\csname PdfRender@Set#1\endcsname
}%
}
\def\PdfRender@OpValue#1#2{#2\ltx@space#1}%
\def\PdfRender@OpName#1#2{/#2\ltx@space#1}%
\PdfRender@NewClassValues{TextRenderingMode}%
{0}%
{\PdfRender@OpValue{Tr}}{%
0=Fill,%
1=Stroke,%
2=FillStroke,%
3=Invisible,%
4=FillClip,%
5=StrokeClip,%
6=FillStrokeClip,%
7=Clip,%
}%
\PdfRender@NewClass{LineWidth}{1}{\PdfRender@OpValue{w}}{%
[0-9]+\string\.?[0-9]*|\string\.[0-9]+%
}{}%
\ltx@IfUndefined{dimexpr}{%
\def\PdfRender@dimexpr{}%
}{%
\let\PdfRender@dimexpr\dimexpr
}
\def\PdfRender@PostProcessLineWidth{%
\begingroup
\afterassignment\PdfRender@@PostProcessLineWidth
\dimen0=\PdfRender@dimexpr\PdfRender@CurrentLineWidth bp %
\PdfRender@let\PdfRender@relax\PdfRender@relax
}
\let\PdfRender@let\let
\let\PdfRender@relax\relax
\def\PdfRender@@PostProcessLineWidth#1\PdfRender@let{%
\ifx\\#1\\%
\endgroup
\else
\dimen0=.996264\dimen0 % 72/72.27
\edef\x{\endgroup
\def\noexpand\PdfRender@CurrentLineWidth{%
\strip@pt\dimen0%
}%
}%
\expandafter\x
\fi
}
\PdfRender@NewClassValues{LineCapStyle}{0}{\PdfRender@OpValue{J}}{%
0=Butt,%
1=Round,%
2=ProjectingSquare,%
}%
\PdfRender@NewClassValues{LineJoinStyle}{0}{\PdfRender@OpValue{j}}{%
0=Miter,%
1=Round,%
2=Bevel,%
}%
\PdfRender@NewClass{MiterLimit}{10}{\PdfRender@OpValue{M}}{%
[0-9]*[1-9][0-9]*\string\.?[0-9]*|%
[0-9]*\string\.?[0-9]*[1-9][0-9]*%
}{}%
\PdfRender@NewClass{Flatness}{0}{\PdfRender@OpValue{i}}{%
100(\string\.0*)?|[0-9][0-9](\string\.[0-9]*)?|\string\.[0-9]+%
}{}%
\PdfRender@NewClass{LineDashPattern}{[]0}{\PdfRender@OpValue{d}}{%
\string\[%
( ?([0-9]+\string\.?[0-9]*|\string\.[0-9]+) ?)*%
\string\] ?%
([0-9]+\string\.?[0-9]*|\string\.[0-9]+)%
}{}%
\PdfRender@NewClassValues{RenderingIntent}%
{RelativeColorimetric}%
{\PdfRender@OpName{ri}}{%
AbsoluteColorimetric,%
RelativeColorimetric,%
Saturation,%
Perceptual,%
}%
\PdfRender@define@key{PDFRENDER}{FillColor}{%
\begingroup
\def\PdfRender@Color{#1}%
\ifx\PdfRender@Color\ltx@empty
\global\let\PdfRender@FillColor\ltx@empty
\else
\PdfRender@ColorAvailable{%
\PdfRender@TestBox{%
\expandafter\PdfRender@TryColor\PdfRender@Color\ltx@empty
\PdfRender@GetFillColor
\ifx\PdfRender@FillColor\ltx@empty
\@PackageWarning{pdfrender}{%
Cannot extract fill color\MessageBreak
from value `#1'%
}%
\fi
}%
}%
\fi
\endgroup
}
\PdfRender@define@key{PDFRENDER}{StrokeColor}{%
\begingroup
\def\PdfRender@Color{#1}%
\ifx\PdfRender@Color\ltx@empty
\global\let\PdfRender@StrokeColor\ltx@empty
\else
\PdfRender@ColorAvailable{%
\PdfRender@TestBox{%
\expandafter\PdfRender@TryColor\PdfRender@Color\ltx@empty
\PdfRender@GetStrokeColor
\ifx\PdfRender@StrokeColor\ltx@empty
\@PackageWarning{pdfrender}{%
Cannot extract stroke color\MessageBreak
from value `#1'%
}%
\fi
}%
}%
\fi
\endgroup
}
\def\PdfRender@ColorAvailable{%
\@ifundefined{set@color}{%
\@PackageError{pdfrender}{%
Ignoring color options, because neither\MessageBreak
package `color' nor package `xcolor' is loaded%
}\@ehc
\global\let\PdfRender@ColorAvailable\ltx@gobble
}{%
\global\let\PdfRender@ColorAvailable\ltx@firstofone
}%
\PdfRender@ColorAvailable
}
\def\PdfRender@TryColor{%
\@ifnextchar[\color\PdfRender@@TryColor
}
\def\PdfRender@@TryColor#1\ltx@empty{%
\expandafter\color\expandafter{\PdfRender@Color}%
}
\def\PdfRender@SetColor{%
\chardef\PdfRender@NeedsCurrentColor=0 %
\ifx\PdfRender@FillColor\ltx@empty
\ifx\PdfRender@StrokeColor\ltx@empty
\else
\edef\PdfRender@CurrentColor{%
\noexpand\PdfRender@FillColor\ltx@space\PdfRender@StrokeColor
}%
\chardef\PdfRender@NeedsCurrentColor=1 %
\fi
\else
\ifx\PdfRender@StrokeColor\ltx@empty
\edef\PdfRender@CurrentColor{%
\PdfRender@FillColor\ltx@space\noexpand\PdfRender@StrokeColor
}%
\chardef\PdfRender@NeedsCurrentColor=2 %
\else
\edef\current@color{%
\PdfRender@FillColor\ltx@space\PdfRender@StrokeColor
}%
\set@color
\fi
\fi
\ifnum\PdfRender@NeedsCurrentColor=1 %
\PdfRender@GetFillColor
\ifx\PdfRender@FillColor\ltx@empty
\@PackageWarning{pdfrender}{%
Cannot extract current fill color%
}%
\else
\edef\current@color{\PdfRender@CurrentColor}%
\set@color
\fi
\else
\ifnum\PdfRender@NeedsCurrentColor=2 %
\PdfRender@GetStrokeColor
\ifx\PdfRender@StrokeColor\ltx@empty
\@PackageWarning{pdfrender}{%
Cannot extract current stroke color%
}%
\else
\edef\current@color{\PdfRender@CurrentColor}%
\set@color
\fi
\fi
\fi
}
\edef\PdfRender@PatternFillColor{ % space
(%
[0-9\string\.]+ g|%
[0-9\string\.]+ [0-9\string\.]+ [0-9\string\.]+ rg|%
[0-9\string\.]+ [0-9\string\.]+ %
[0-9\string\.]+ [0-9\string\.]+ k%
) % space
(.*)$%
}
\edef\PdfRender@PatternStrokeColor{ % space
(%
[0-9\string\.]+ G|%
[0-9\string\.]+ [0-9\string\.]+ [0-9\string\.]+ RG|%
[0-9\string\.]+ [0-9\string\.]+ %
[0-9\string\.]+ [0-9\string\.]+ K%
) % space
(.*)$%
}
\def\PdfRender@MatchPattern#1{%
\ifnum\pdfmatch{\PdfRender@Pattern}{\PdfRender@String}=1 %
\xdef#1{%
\expandafter\strip@prefix\pdflastmatch 1%
}%
\edef\PdfRender@String{%
\expandafter\strip@prefix\pdflastmatch 2%
}%
\ifx\PdfRender@String\ltx@empty
\else
\expandafter\expandafter\expandafter\PdfRender@MatchPattern
\expandafter\expandafter\expandafter#1%
\fi
\fi
}
\def\PdfRender@GetFillColor{%
\global\let\PdfRender@FillColor\ltx@empty
\begingroup
\ifPdfRender@Match
\let\PdfRender@Pattern\PdfRender@PatternFillColor
\edef\PdfRender@String{\ltx@space\current@color\ltx@space}%
\PdfRender@MatchPattern\PdfRender@FillColor
\else
\edef\current@color{\current@color\ltx@space}%
\let\PdfRender@OP\relax
\PdfRender@FindOp{g}0%
\PdfRender@FindOp{G}1%
\PdfRender@FindOp{rg}0%
\PdfRender@FindOp{RG}1%
\PdfRender@FindOp{k}0%
\PdfRender@FindOp{K}1%
\PdfRender@FilterOp 0\PdfRender@FillColor
\fi
\endgroup
}
\def\PdfRender@GetStrokeColor{%
\global\let\PdfRender@StrokeColor\ltx@empty
\begingroup
\ifPdfRender@Match
\let\PdfRender@Pattern\PdfRender@PatternStrokeColor
\edef\PdfRender@String{\ltx@space\current@color\ltx@space}%
\PdfRender@MatchPattern\PdfRender@StrokeColor
\else
\edef\current@color{\current@color\ltx@space}%
\let\PdfRender@OP\relax
\PdfRender@FindOp{g}0%
\PdfRender@FindOp{G}1%
\PdfRender@FindOp{rg}0%
\PdfRender@FindOp{RG}1%
\PdfRender@FindOp{k}0%
\PdfRender@FindOp{K}1%
\PdfRender@FilterOp 1\PdfRender@StrokeColor
\fi
\endgroup
}
\ifPdfRender@Match
\expandafter\PdfRender@AtEnd
\fi%
\def\PdfRender@FindOp#1#2{%
\def\PdfRender@temp##1 #1 ##2\@nil{%
##1%
\ifx\\##2\\%
\expandafter\@gobble
\else
\PdfRender@OP{#1}#2%
\expandafter\@firstofone
\fi
{%
\PdfRender@temp##2\@nil
}%
}%
\edef\current@color{%
\@firstofone{\expandafter\PdfRender@temp\current@color} #1 \@nil
}%
}
\def\PdfRender@FilterOp#1#2{%
\expandafter\PdfRender@@FilterOp\expandafter#1\expandafter#2%
\current@color\PdfRender@OP{}{}%
}
\def\PdfRender@@FilterOp#1#2#3\PdfRender@OP#4#5{%
\ifx\\#4#5\\%
\else
\ifnum#1=#5 %
\xdef#2{#3 #4}%
\fi
\expandafter\PdfRender@@FilterOp\expandafter#1\expandafter#2%
\fi
}
\PdfRender@AtEnd%
%% \section{Installation}
\endinput
%%
%% End of file `pdfrender.sty'.