PostScript

<..postscript draw..>
 \ifHtml
    \:CheckOption{postscript}  \if:Option
       <.postscript.>
       <.special.>
    \fi
 \fi
 -_-_-

<..postscript..>
 \expandafter\def\csname i:0\endcsname{0}
 \expandafter\def\csname i:1\endcsname{1}
 \expandafter\def\csname i:2\endcsname{2}
 \expandafter\def\csname i:3\endcsname{3}
 \expandafter\def\csname i:4\endcsname{4}
 \expandafter\def\csname i:5\endcsname{5}
 \expandafter\def\csname i:6\endcsname{6}
 \expandafter\def\csname i:7\endcsname{7}
 \expandafter\def\csname i:8\endcsname{8}
 \expandafter\def\csname i:9\endcsname{9}
 \def\i:A{10}  \let\i:a=\i:A
 \def\i:B{11}  \let\i:b=\i:B
 \def\i:C{12}  \let\i:c=\i:C
 \def\i:D{13}  \let\i:d=\i:D
 \def\i:E{14}  \let\i:e=\i:E
 \def\i:F{15}  \let\i:f=\i:F
 
 \def\Hex:Frac#1#2{\tmp:cnt=\csname i:#1\endcsname
    \multiply\tmp:cnt by 16
    \advance\tmp:cnt\csname i:#2\endcsname
    \multiply\tmp:cnt by 100
    \divide\tmp:cnt by 255
    \edef\:temp{\ifnum \tmp:cnt>99 1.0\else 0.\the\tmp:cnt\fi}}
 
 \def\df:clr#1#2#3#4#5#6#7{\Hex:Frac#2#3\let#1=\:temp
    \Hex:Frac#4#5\edef#1{ #1 \:temp}%
    \Hex:Frac#6#7\edef#1{#1 \:temp\space setrgbcolor }}
 
 \def\DefPsColor#1#2{\df:clr#1#2}
 <.delay postscript.>%
 -_-_-

<..delay postscript..>
 \let\PsCode=\relax
 -_-_-

<..special..>
 \ifx \PsCodeSpecial\:UnDef \def\PsCodeSpecial{ps:}\fi
 -_-_-

<..postscript..>+
 \def\MarkPsLoc(#1){%
   \PsCode{ currentpoint
    /Psy#1  exch  def
    /PsX#1  exch  def
 }}
 \def\RecallPsLoc(#1){ PsX#1  Psy#1 }
 -_-_-