From 8f3c66451e590adc3ce6c15dd5c11d89e399f9a7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 30 Nov 2006 22:00:11 +0000 Subject: pst-grad/eps git-svn-id: svn://tug.org/texlive/trunk@2565 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/dvips/pst-grad/pst-grad.pro | 176 ++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 Master/texmf-dist/dvips/pst-grad/pst-grad.pro (limited to 'Master/texmf-dist/dvips/pst-grad') diff --git a/Master/texmf-dist/dvips/pst-grad/pst-grad.pro b/Master/texmf-dist/dvips/pst-grad/pst-grad.pro new file mode 100644 index 00000000000..e3d87c1bfd0 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-grad/pst-grad.pro @@ -0,0 +1,176 @@ +%! +% PostScript prologue for pst-grad.tex. +% Version 1.05, 2006/11/04 +% prepared by Herbert Voss +% For copying restrictions, see pstricks.tex. +% +% For the PSTricks gradient fillstyle.% +% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).% +% Syntax:% D.G. modification begin - Apr. 9, %1998 +%%%%%% R0 G0 B0 R1 G1 B1 NumLines MidPoint Angle GradientFill +% ifGradientCircle GradientScale %GradientPosX GradientPosY +% R0 G0 B0 R1 G1 B1 NumLines MidPoint %Angle GradientFill +% D.G. modification end +% +/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 +% D.G. modification begin - Apr. 9, 1998 +/GradientPosY ED +/GradientPosX ED + /GradientScale ED + /ifGradientCircle ED +% D.G. modification end + % This avoids gaps due to rounding errors: + clip + pathbbox %leave llx,lly,urx,ury on stack +% D.G. modification begin - Apr. 10, 1998 + 4 copy /ury ED /urx ED /lly ED /llx ED +% D.G. modification end + /y ED /x ED +% D.G. modification begin - Apr. 10, 1998 +ifGradientCircle + {0 GradientPosX eq + {0 GradientPosX eq {2 copy translate} if} if} + {2 copy translate} ifelse +% D.G. modification end + 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 +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {/YSizePerLine y NumLines div def + /CurrentY y 2 div def + /MidLine NumLines 2 div 1 MidPoint sub mul abs cvi def} + {fill + /YSizePerLine y NumLines div def + /CurrentY 0 def + /MidLine NumLines 1 MidPoint sub mul abs cvi def} ifelse +% DG modification end + 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 { +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {CurrentY 0 gt { +% The default center used is the center of the bounding box of the object + 0 GradientPosX eq {0 GradientPosX eq + {/GradientPosX urx llx sub 2 div def + /GradientPosY ury lly sub 2 div def} if} if + GradientPosX GradientPosY CurrentY GradientScale mul 0 360 arc + Red Green Blue setrgbcolor fill + /CurrentY CurrentY YSizePerLine sub def + /Blue Blue BlueIncrement add def + /Green Green GreenIncrement add def + /Red Red RedIncrement add def} if} {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} ifelse% D.G. modification end + }def +% +/GradientFillHSB { % hv 2006-11-04 + rotate + /MidPoint ED + /NumLines ED + /LastBrightness ED + /LastSaturation ED + /LastHue ED + /FirstBrightness ED + /FirstSaturation ED + /FirstHue 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: + LastHue FirstHue add 2 div + LastSaturation FirstSaturation add 2 div + LastBrightness FirstBrightness add 2 div + sethsbcolor + 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 + { + /Hue FirstHue def + /Saturation FirstSaturation def + /Brightness FirstBrightness def + /HueIncrement LastHue FirstHue sub MidLine 1 sub div def + /SaturationIncrement LastSaturation FirstSaturation sub MidLine 1 sub + div def + /BrightnessIncrement LastBrightness FirstBrightness sub MidLine 1 sub + div def + MidLine { GradientLoopHSB } repeat + } if + MidLine NumLines lt + { + /Hue LastHue def + /Saturation LastSaturation def + /Brightness LastBrightness def + /HueIncrement FirstHue LastHue sub NumLines MidLine sub 1 sub div def + /SaturationIncrement FirstSaturation LastSaturation sub + NumLines MidLine sub 1 sub div def + /BrightnessIncrement FirstBrightness LastBrightness sub + NumLines MidLine sub 1 sub div def + NumLines MidLine sub { GradientLoopHSB } repeat + } if +} def +/GradientLoopHSB { + 0 CurrentY moveto + x 0 rlineto + 0 YSizePerLine rlineto + x neg 0 rlineto + closepath + Hue Saturation Brightness sethsbcolor fill + /CurrentY CurrentY YSizePerLine add def + /Brightness Brightness BrightnessIncrement add def + /Saturation Saturation SaturationIncrement add def + /Hue Hue HueIncrement add def +} def +% +end +% +% END pst-grad.pro -- cgit v1.2.3