[pstricks] colored lines
Hensh, Richard
hensh at msu.edu
Thu Dec 23 13:46:19 CET 2021
And a very Happy New Year to you Herbert.
The code below throws 8 errors. Here's the first:
! Undefined control sequence.
<argument> 10 dict begin [ \psgetColorValues
{\ps at startColor } ] dup == alo..
I have the latest MikTeX installation. I'm a bit stumped.
regards
rick
________________________________
From: PSTricks <pstricks-bounces+hensh=math.msu.edu at tug.org> on behalf of Herbert Voss <Herbert.Voss at fu-berlin.de>
Sent: Thursday, December 23, 2021 6:43 AM
To: Graphics with PSTricks <pstricks at tug.org>
Subject: [pstricks] colored lines
Hello all,
merry christmas to all of you
\documentclass{article}
\usepackage{pstricks-add}
\makeatletter
\define at key[psset]{pstricks}{startColor}[black]{%
\colorlet{tempcolor}[rgb]{#1}% we need rgb
\pst at getcolor{tempcolor}\ps at startColor}
\define at key[psset]{pstricks}{endColor}[white]{%
\colorlet{tempcolor}[rgb]{#1}%
\pst at getcolor{tempcolor}\ps at endColor}
\psset[pstricks]{startColor=black,endColor=white}
\def\pscolorLine{\def\pst at par{}\pst at object{pscolorLine}}
\def\pscolorLine at i{%
\pst at getarrows{%
\begin at OpenObj
\pscolorLine at ii}}
\def\pscolorLine at ii(#1){\@ifnextchar({\pscolorLine at iii(#1)}{\pscolorLine at iii(0,0)(#1)}}%
\def\pscolorLine at iii(#1,#2)(#3,#4){%
\use at par
\ifx\psk at arrowA\@empty\else\psline[linecolor=\ps at startColor]{->}(!#3 0.5
mul #4 0.5 mul)(#1,#2)\fi
\ifx\psk at arrowB\@empty\else\psline[linecolor=\ps at endColor]{->}(!#1 0.5
mul #2 0.5 mul)(#3,#4)\fi
\pst at getcoor{#1,#2}\pst at tempA
\pst at getcoor{#3,#4}\pst at tempB
\addto at pscode{
10 dict begin
[ \psgetColorValues{\ps at startColor} ] dup == aload length 1 eq {
dup dup } if
3 copy 3 array astore /startColor ED
[ \psgetColorValues{\ps at endColor} ] dup == aload length 1 eq { dup
dup } if
3 copy 3 array astore /endColor ED
% on stack R1 G1 B1 R2 G2 B2
4 -1 roll % R1 G1 R2 G2 B2 B1
sub 256 div /dB ED % R1 G1 R2 G2
3 -1 roll % R1 R2 G2 G1
sub 256 div /dG ED % R1 R2
exch sub 256 div /dR ED
\pst at tempB /Y2 ED /X2 ED
\pst at tempA /Y1 ED /X1 ED
Y2 Y1 sub X2 X1 sub atan /Angle ED
Y2 Y1 sub Angle sin dup 0 eq { pop }{ div } ifelse /L_line ED %
line length
\ifx\psk at arrowA\@empty\else
X2 X1 sub L_line div \psk at arrowlength\space mul
\pst at number\psxunit mul X1 add /X1 ED
Y2 Y1 sub L_line div \psk at arrowlength\space mul
\pst at number\psyunit mul Y1 add /Y1 ED
\fi
\ifx\psk at arrowB\@empty\else
X2 X1 sub L_line div \psk at arrowlength\space mul
\pst at number\psxunit mul X2 exch sub /X2 ED
Y2 Y1 sub L_line div \psk at arrowlength\space mul
\pst at number\psyunit mul Y2 exch sub /Y2 ED
\fi
Y2 Y1 sub 256 div /dY ED
X2 X1 sub 256 div /dX ED
% dR dG dB == == ==
%startColor == endColor ==
\ifPst at noCurrentPoint\else\pst at cp\fi % current point?
0 1 255 {
/dIndex ED
%startColor ==
X1 Y1 moveto
X1 dX add Y1 dY add % start for coordinate array
gsave
lineto
CP /Y1 ED /X1 ED
\pst at number\pslinewidth SLW
startColor aload pop 3 copy setrgbcolor
% on stack r g b
dB add 3 1 roll % b+dB r g
dG add 3 1 roll % b+dB g+dG r
dR add 3 1 roll % b+dB g+dG r+dR
3 array astore /startColor ED
stroke
grestore
} for
end
}%
\end at OpenObj
\ignorespaces
}
\makeatother
\begin{document}
\begin{pspicture}[linewidth=12pt,showgrid](-5,-5)(5,5)
\pscolorLine(0,-5)(0,5)
\pscolorLine[startColor=cyan,endColor=magenta](-5,0)(5,0)
\pscolorLine[startColor=blue,endColor=green]{->}(-5,5)(5,-5)
\pscolorLine[startColor=red,endColor=blue]{<->}(-5,-5)(5,5)
\end{pspicture}
\end{document}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://tug.org/pipermail/pstricks/attachments/20211223/6713dd06/attachment.html>
More information about the PSTricks
mailing list.