summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/pgf-spectra/pgf-spectra.library.rainbow.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/pgf-spectra/pgf-spectra.library.rainbow.tex')
-rw-r--r--graphics/pgf/contrib/pgf-spectra/pgf-spectra.library.rainbow.tex83
1 files changed, 83 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/pgf-spectra/pgf-spectra.library.rainbow.tex b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.library.rainbow.tex
new file mode 100644
index 0000000000..1ecf0554f5
--- /dev/null
+++ b/graphics/pgf/contrib/pgf-spectra/pgf-spectra.library.rainbow.tex
@@ -0,0 +1,83 @@
+% --------------------------------------------------------------------------------------------------
+% subfile of pgf-spectra package -----------------------------------------------------------------
+% --------------------------------------------------------------------------------------------------
+\def\pgfspectra@library@rainbow@loaded{}%
+\message{pgf-spectra rainbow library loaded!}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% provide the macro
+% \pgfspectrarainbow<[tikz options]><(rainbow options)>{radius}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatletter%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \pgfspectrarainbow[<tikz options>](<rainbow fade>,<rainbow start>,<rainbow knock out>,<rainbow background>,<rainbow transparency>){radius}
+% tikz options -> color, opacity,scope fading
+% rainbow clip -> applies a scope fading in clipped region
+% ...
+\pgfkeys{/pgfspectra/.cd,%
+rainbow fade/.get=\pgfspectra@rainbowfade,%
+rainbow fade/.store in=\pgfspectra@rainbowfade,%
+rainbow fade/.default={},%
+rainbow start/.get=\pgfspectra@rainbow@start,%
+rainbow start/.store in=\pgfspectra@rainbow@start,%
+rainbow start/.default=.6,% -> 60%
+rainbow knock out/.get=\pgfspectra@rainbow@KO,%
+rainbow knock out/.store in=\pgfspectra@rainbow@KO,%
+rainbow knock out/.default=.4,% -> 40%
+rainbow background/.get=\pgfspectra@rainbowback,%
+rainbow background/.store in=\pgfspectra@rainbowback,%
+rainbow background/.default=white,%
+rainbow transparency/.get=\pgfspectra@rainbowtransp,%
+rainbow transparency/.store in=\pgfspectra@rainbowtransp,%
+rainbow transparency/.default=0}% -> 0%
+%
+\def\pgfspectrarainbow{\ignorespaces\@ifnextchar[\pgf@spectrarainbow{\pgf@spectrarainbow[]}}%
+\def\pgf@spectrarainbow[#1]{\ignorespaces\@ifnextchar({\pgf@spectra@rainbow{#1}}{\pgf@spectra@rainbow{#1}()}}%
+%
+\def\pgf@spectra@rainbow#1(#2)#3{\ignorespaces%
+\pgfkeys{/pgfspectra/.cd,rainbow fade,rainbow start,rainbow knock out,rainbow background,rainbow transparency}%
+\pgfkeys{/pgfspectra/.cd,#2}%
+\pgfmathparse{100-\pgfspectra@rainbowtransp*100}\edef\pgfspectra@rainbow@transp{\pgfmathresult}%
+\pgfmathparse{\pgfspectra@rainbowtransp*100}\edef\pgfspectra@rainbow@transp@w{\pgfmathresult}%
+\edef\pgfspectra@rainbowend{.8875cm}\pgfmathparse{\pgfspectra@rainbow@start*\pgfspectra@rainbowend/1cm}\edef\pgfspectra@rainbowstart{\pgfmathresult cm}%
+\pgfmathparse{\pgfspectra@rainbow@KO*#3/1cm}\edef\pgfspectra@rainbowKO{\pgfmathresult cm}%%\edef\pgfspectra@rainbowKO{\pgfspectra@rainbow@KO cm}%
+\ifdim\pgfspectra@rainbowstart<\pgfspectra@rainbowend\relax%
+\ifdim\pgfspectra@rainbowstart<.0175cm\relax\edef\pgfspectra@rainbowstart{.0175cm}\fi% ensuring there is no error in radial shading
+\pgfkeys{/pgf/number format/.cd,fixed,precision=3,set thousands separator={},assume math mode=true}%
+\pgfmathparse{\pgfspectra@rainbowstart-1/50*(\pgfspectra@rainbowend-\pgfspectra@rainbowstart)}%
+\pgfmathprintnumberto{\pgfmathresult}{\pgfspectra@rainbowresult}%
+\edef\rO{\pgfspectra@rainbowresult pt}%
+\@for\n:={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}\do{%
+%\pgfmathparse{380+(\n-1)*8}\edef\pgfspectra@currentwl{\pgfmathresult}%
+\pgfmathparse{372+8*\n}\edef\pgfspectra@currentwl{\pgfmathresult}%
+\wlcolor{\pgfspectra@currentwl}%
+\edef\pgfspectra@colorname{wlshcol\@Roman\n}\relax\colorlet{\pgfspectra@colorname}{wlcolor!100!transparent!\pgfspectra@rainbow@transp}%
+\pgfmathparse{\pgfspectra@rainbowstart+1/50*(\n-1)*(\pgfspectra@rainbowend-\pgfspectra@rainbowstart)}%
+\pgfmathprintnumberto{\pgfmathresult}{\pgfspectra@rainbowresult}%
+\expandafter\edef\csname r\@Roman\n\endcsname{\pgfspectra@rainbowresult pt}%
+}%
+\pgfdeclareradialshading{pgfspectrarainbow}{\pgfpoint{0pt}{0pt}}{%
+color(0cm)=(\pgfspectra@rainbowback!\pgfspectra@rainbow@transp@w!white);color(4/5*\rO)=(\pgfspectra@rainbowback!\pgfspectra@rainbow@transp@w!white!50);color(\rO)=(white);%
+color(\rI)=(wlshcolI);color(\rII)=(wlshcolII);color(\rIII)=(wlshcolIII);color(\rIV)=(wlshcolIV);color(\rV)=(wlshcolV);color(\rVI)=(wlshcolVI);color(\rVII)=(wlshcolVII);color(\rVIII)=(wlshcolVIII);color(\rIX)=(wlshcolIX);color(\rX)=(wlshcolX);%
+color(\rXI)=(wlshcolXI);color(\rXII)=(wlshcolXII);color(\rXIII)=(wlshcolXIII);color(\rXIV)=(wlshcolXIV);color(\rXV)=(wlshcolXV);color(\rXVI)=(wlshcolXVI);color(\rXVII)=(wlshcolXVII);color(\rXVIII)=(wlshcolXVIII);color(\rXIX)=(wlshcolXIX);color(\rXX)=(wlshcolXX);%
+color(\rXXI)=(wlshcolXXI);color(\rXXII)=(wlshcolXXII);color(\rXXIII)=(wlshcolXXIII);color(\rXXIV)=(wlshcolXXIV);color(\rXXV)=(wlshcolXXV);color(\rXXVI)=(wlshcolXXVI);color(\rXXVII)=(wlshcolXXVII);color(\rXXVIII)=(wlshcolXXVIII);color(\rXXIX)=(wlshcolXXIX);color(\rXXX)=(wlshcolXXX);%
+color(\rXXXI)=(wlshcolXXXI);color(\rXXXII)=(wlshcolXXXII);color(\rXXXIII)=(wlshcolXXXIII);color(\rXXXIV)=(wlshcolXXXIV);color(\rXXXV)=(wlshcolXXXV);color(\rXXXVI)=(wlshcolXXXVI);color(\rXXXVII)=(wlshcolXXXVII);color(\rXXXVIII)=(wlshcolXXXVIII);color(\rXXXIX)=(wlshcolXXXIX);color(\rXL)=(wlshcolXL);%
+color(\rXLI)=(wlshcolXLI);color(\rXLII)=(wlshcolXLII);color(\rXLIII)=(wlshcolXLIII);color(\rXLIV)=(wlshcolXLIV);color(\rXLV)=(wlshcolXLV);color(\rXLVI)=(wlshcolXLVI);color(\rXLVII)=(wlshcolXLVII);color(\rXLVIII)=(wlshcolXLVIII);color(\rXLIX)=(wlshcolXLIX);color(\rL)=(wlshcolL);color(\rLI)=(wlshcolLI);%
+color(.95cm)=(wlshcolLI)%
+}%
+\ifx\pgfspectra@rainbowfade\@empty\relax%
+\tikz{\clip(-#3,\pgfspectra@rainbowKO) rectangle ++(2*#3,#3-\pgfspectra@rainbowKO);%
+\fill[#1,shading=pgfspectrarainbow] (0,0) circle(#3);}%
+\else%
+\tikz{\clip[scope fading=\pgfspectra@rainbowfade] (-#3,\pgfspectra@rainbowKO) rectangle ++(2*#3,#3-\pgfspectra@rainbowKO);%
+\fill[shading=pgfspectrarainbow,\pgfspectra@rainbowback,#1] (0,0) circle(#3);}%
+\fi%
+\else\PackageError{pgf-spectra}{invalid 'rainbow start' value (rainbow start=\pgfspectra@rainbow@start). The rainbow start should be greater or equal then 0 and lower then 1.}{Don't forget that 'rainbow start' value is the fraction from witch the colors begin, relative to the center of a circle with radius 1...}%
+\fi
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatother%
+\endinput