blob: 44dba7a442e18edfbf8e7a185c75453089adfa10 (
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
|
%!
% PostScript header file gradient.ps
% For the PSTricks gradient fillstyle.
% Version: 0.94
% Date: 93/05/12
% For copying restrictions, see pstricks.doc or pstricks.tex.
%
% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).
%
% Syntax:
% R0 G0 B0 R1 G1 B1 MidPoint NumLines Angle GradientFill
/tx@GradientDict 40 dict def
tx@GradientDict begin
/GradientFill {
rotate
/MidPoint ED
/NumLines ED
/LastBlue ED
/LastGreen ED
/LastRed ED
/FirstBlue ED
/FirstGreen ED
/FirstRed ED
% This avoids gaps due to rounding errors:
clip
pathbbox %leave llx,lly,urx,ury on stack
/y ED /x ED
2 copy translate
y sub neg /y ED
x sub neg /x ED
% This avoids gaps due to rounding errors:
LastRed FirstRed add 2 div
LastGreen FirstGreen add 2 div
LastBlue FirstBlue add 2 div
setrgbcolor
fill
/YSizePerLine y NumLines div def
/CurrentY 0 def
/MidLine NumLines 1 MidPoint sub mul abs cvi def
MidLine NumLines 2 sub gt
{ /MidLine NumLines def }
{ MidLine 2 lt { /MidLine 0 def } if }
ifelse
MidLine 0 gt
{
/Red FirstRed def
/Green FirstGreen def
/Blue FirstBlue def
/RedIncrement LastRed FirstRed sub MidLine 1 sub div def
/GreenIncrement LastGreen FirstGreen sub MidLine 1 sub div def
/BlueIncrement LastBlue FirstBlue sub MidLine 1 sub div def
MidLine { GradientLoop } repeat
} if
MidLine NumLines lt
{
/Red LastRed def
/Green LastGreen def
/Blue LastBlue def
/RedIncrement FirstRed LastRed sub NumLines MidLine sub 1 sub div def
/GreenIncrement FirstGreen LastGreen sub NumLines MidLine sub 1 sub div def
/BlueIncrement FirstBlue LastBlue sub NumLines MidLine sub 1 sub div def
NumLines MidLine sub { GradientLoop } repeat
} if
} def
/GradientLoop {
0 CurrentY moveto
x 0 rlineto
0 YSizePerLine rlineto
x neg 0 rlineto
closepath
Red Green Blue setrgbcolor fill
/CurrentY CurrentY YSizePerLine add def
/Blue Blue BlueIncrement add def
/Green Green GreenIncrement add def
/Red Red RedIncrement add def
} def
end
% END gradient.ps
|