summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-08-21 21:47:21 +0000
committerKarl Berry <karl@freefriends.org>2018-08-21 21:47:21 +0000
commit264fd35aafd09737359fce67fd7a048a44221303 (patch)
treeb6379bfde8ac14d948d202b1580dd76ac9e30e59
parentd651e84fcb7ac24f9677177e6ea57de7eebc083f (diff)
pgf-blur (21aug18)
git-svn-id: svn://tug.org/texlive/trunk@48446 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/pgf-blur/README15
-rw-r--r--Master/texmf-dist/doc/latex/pgf-blur/README.md73
-rw-r--r--Master/texmf-dist/doc/latex/pgf-blur/pgf-blur.pdfbin253111 -> 250036 bytes
-rw-r--r--Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx119
-rw-r--r--Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins4
-rw-r--r--Master/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex88
6 files changed, 265 insertions, 34 deletions
diff --git a/Master/texmf-dist/doc/latex/pgf-blur/README b/Master/texmf-dist/doc/latex/pgf-blur/README
deleted file mode 100644
index d599ee37578..00000000000
--- a/Master/texmf-dist/doc/latex/pgf-blur/README
+++ /dev/null
@@ -1,15 +0,0 @@
-Package pgf-blur
-----------------
-
-Copyright 2012 Martin Giese, martingi@ifi.uio.no
-
-This file is under the LaTeX Project Public License
-See CTAN archives in directory macros/latex/base/lppl.txt.
-See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
-for the details of that license.
-
-DESCRIPTION:
- `pgf-blur' adds blurred/faded/fuzzy shadows to TikZ/PGF
-
-Run (pdf)latex on pgf-blur.dtx to produce a TikZ library file
-and the documentation.
diff --git a/Master/texmf-dist/doc/latex/pgf-blur/README.md b/Master/texmf-dist/doc/latex/pgf-blur/README.md
new file mode 100644
index 00000000000..617440dd8fb
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pgf-blur/README.md
@@ -0,0 +1,73 @@
+Package pgf-blur
+================
+
+The package adds blurred/faded/fuzzy shadows to PGF/TikZ pictures.
+It is configured as a TikZ/PGF library module.
+
+Run (pdf)latex on pgf-blur.dtx to produce a TikZ library file
+and the documentation.
+
+Development
+-----------
+
+Martin Giese has stopped working on pgf-blur and pgf-blur is now
+developed at https://github.com/norbusan/pgf-blur
+
+Issues and Bugs
+---------------
+
+Please report issues to https://github.com/norbusan/pgf-blur/issues
+
+Currently (as of TL2018) multiple drop shadows can produce problems
+with xelatex (dvipdfmx) when including a pdf with drop shadows into
+another pdf. A typical error is
+
+ xdvipdfmx:fatal: Loop in object hierarchy detected. Broken PDF file?
+
+This will be fixed in TL2019 with an update to dvipdfmx. luatex and pdftex
+do not exhibit this problem.
+
+
+License and Copyright
+---------------------
+
+ Copyright 2012 Martin Giese, martingi@ifi.uio.no
+ Copyright 2012 Andrew Stacey
+ Copyright 2018 Norbert Preining, norbert@preining.info
+
+This file is under the LaTeX Project Public License
+See CTAN archives in directory macros/latex/base/lppl.txt.
+See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
+for the details of that license.
+
+
+Details:
+
+The original version was developed by Martin Giese:
+
+ Copyright 2012 Martin Giese, martingi@ifi.uio.no
+
+who handed over maintainership to Norbert Preining in 2018
+
+Message-Id: <BDCE3150-A170-4AC9-B1E3-2903DA9D390F@ifi.uio.no>
+
+ Ich finde es gut, wenn sich jemand um die Verbesserung der package kümmern möchte.
+ Wenn du willst kannst du gerne die Rolle des Maintainers übernehmen. Ich werde
+ selber wahrscheinlich keine Zeit mehr haben, mich darum zu kümmern. So lange
+ die Doku einen Hinweis behält, dass die ursprüngliche Version von mir kam,
+ bin ich glücklich.
+
+Additions by Andrew Stacey are public domain, CC0, or LPPL
+
+ Copyright 2012 Andrew Stacey
+
+Message-ID: <cd8cae1b-c5c9-9fcc-8822-fff529375bb5@mathforge.org>
+
+ "My additions to the pgf-blur code are hereby placed in the public domain to
+ the extent governable by law. Explicitly, they are dually placed under the
+ CC0 licence and the LPPL licence."
+
+Current maintainership, uploads, etc
+
+ Copyright 2018 Norbert Preining, norbert@preining.info
+
diff --git a/Master/texmf-dist/doc/latex/pgf-blur/pgf-blur.pdf b/Master/texmf-dist/doc/latex/pgf-blur/pgf-blur.pdf
index f22357da0eb..d4fc98e8435 100644
--- a/Master/texmf-dist/doc/latex/pgf-blur/pgf-blur.pdf
+++ b/Master/texmf-dist/doc/latex/pgf-blur/pgf-blur.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx b/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx
index 9f271907452..f4fa8d4adbe 100644
--- a/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx
+++ b/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.dtx
@@ -11,6 +11,8 @@
\askforoverwritefalse
\preamble
Copyright 2012 Martin Giese, martingi@ifi.uio.no
+Copyright 2012 Andrew Stacey
+Copyright 2018 Norbert Preining, norbert@preining.info
This file is under the LaTeX Project Public License
See CTAN archives in directory macros/latex/base/lppl.txt.
@@ -67,7 +69,7 @@ DESCRIPTION:
%</driver>
%\fi
%
-% \CheckSum{338}
+% \CheckSum{475}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -88,17 +90,21 @@ DESCRIPTION:
%
% \changes{v1.00}{2012/04/20}{First public release. (mg)}
% \changes{v1.01}{2012/04/24}{Remove antialiasing/clipping artefacts (mg)}
+% \changes{v1.02}{2018/08/21}{Fix multiple shadows, support inversion (as), changed maintainer (np)}
%
% \DoNotIndex{\!,\",\#,\$,\%,\&,\',\(,\+,\*,\,,\-,\.,\/,\:,\;,\<,\=,\>,\?}
% \setcounter{IndexColumns}{2}
%
% \title{\textsf{pgf-blur} package \\ version \fileversion}
-% \author{Martin Giese\thanks{\protect\url{martingi@ifi.uio.no}}}
+% \author{Martin Giese}
% \date{\filedate}
% \maketitle
%
%\def\tikzname{Ti\emph{k}Z}
%
+%\begin{center}
+% Currently maintained by Norbert Preining\footnote{\protect\url{https://github.com/norbusan/pgf-blur}}
+%\end{center}
%
%\begin{center}
% \small \textbf{Acknowledgement}\\ This package evolved from a discussion
@@ -466,14 +472,27 @@ DESCRIPTION:
% import the original shadow code for the offset and scale parameters.
% \begin{macrocode}
%<*texfile>
-\def\fileversion{1.01}
-\def\filedate{2012/04/24}
+\def\fileversion{1.02}
+\def\filedate{2012/12/09}
\message{ v\fileversion, \filedate}
\usetikzlibrary{shadows}
\usetikzlibrary{calc}
% \end{macrocode}
% \end{macro}
%\end{macro}
+%\begin{macro}{\ifpgfbs@invert@fading}
+% An |\if| to control whether to invert the fading or not.
+% \begin{macrocode}
+\newif\ifpgfbs@invert@fading
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\pgfbs@fading@count}
+% A |count| to make the names unique
+% \begin{macrocode}
+\newcount\pgfbs@fading@count
+\pgfbs@fading@count=0\relax
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{shadow blur radius}
%\begin{macro}{shadow blur extra rounding}
%\begin{macro}{shadow blur steps}
@@ -495,6 +514,7 @@ DESCRIPTION:
/tikz/shadow blur extra rounding/.default=\pgfbs@radius,
/tikz/shadow blur steps/.store in=\pgfbs@steps,
/tikz/shadow blur steps=4,
+ /tikz/shadow blur invert/.is if=pgfbs@invert@fading,
/tikz/shadow opacity/.store in=\pgfbs@opacity,
/tikz/shadow opacity=40,
% \end{macrocode}
@@ -532,14 +552,19 @@ DESCRIPTION:
% \begin{macrocode}
/tikz/render blur shadow/.code={
\pgfbs@savebb
+ \global\advance\pgfbs@fading@count by 1\relax
\pgfsyssoftpath@getcurrentpath{\pgfbs@input@path}%
\pgfbs@compute@shadow@bbox
\pgfbs@process@rounding{\pgfbs@input@path}{\pgfbs@fadepath}%
\pgfbs@apply@canvas@transform
\colorlet{pstb@shadow@color}{white!\pgfbs@opacity!black}%
- \pgfdeclarefading{shadowfading}{\pgfbs@paint@fading}%
+ \ifpgfbs@invert@fading
+ \pgfdeclarefading{shadowfading-\the\pgfbs@fading@count}{\pgfbs@paint@invert@fading}%
+ \else
+ \pgfdeclarefading{shadowfading-\the\pgfbs@fading@count}{\pgfbs@paint@fading}%
+ \fi
\pgfsetfillcolor{black}%
- \pgfsetfading{shadowfading}%
+ \pgfsetfading{shadowfading-\the\pgfbs@fading@count}%
{\pgftransformshift{\pgfpoint{\pgfbs@midx}{\pgfbs@midy}}}%
\pgfbs@usebbox{fill}%
\pgfbs@restorebb
@@ -658,7 +683,7 @@ DESCRIPTION:
%\begin{macro}{\pgfbs@shadow@bbox}
% This macro figures out the bounding box of the shadow: it's the
% same as the bounding box of the current path, but enlarged by
-% the blur radius in each direction. It also computes the
+% twice (for the inverse shadow) the blur radius in each direction. It also computes the
% coordinates of the center of the bounding box. These are
% stored in macros |\pgfbs@|\{|min|$\mid$|mid|$\mid$|max|\}\{|x|$\mid$|y|\}.
% It also creates a soft path for the bounding box which is stored in
@@ -671,10 +696,10 @@ DESCRIPTION:
\edef\pgfbs@maxy{\the\pgf@pathmaxy}%
\pgfmathsetmacro\pgfbs@midx{0.5*(\pgfbs@minx + \pgfbs@maxx)}%
\pgfmathsetmacro\pgfbs@midy{0.5*(\pgfbs@miny + \pgfbs@maxy)}%
- \pgfmathsetmacro\pgfbs@minx{\pgfbs@minx - \pgfbs@radius}%
- \pgfmathsetmacro\pgfbs@miny{\pgfbs@miny - \pgfbs@radius}%
- \pgfmathsetmacro\pgfbs@maxx{\pgfbs@maxx + \pgfbs@radius}%
- \pgfmathsetmacro\pgfbs@maxy{\pgfbs@maxy + \pgfbs@radius}%
+ \pgfmathsetmacro\pgfbs@minx{\pgfbs@minx - 2*\pgfbs@radius}%
+ \pgfmathsetmacro\pgfbs@miny{\pgfbs@miny - 2*\pgfbs@radius}%
+ \pgfmathsetmacro\pgfbs@maxx{\pgfbs@maxx + 2*\pgfbs@radius}%
+ \pgfmathsetmacro\pgfbs@maxy{\pgfbs@maxy + 2*\pgfbs@radius}%
\pgfmathsetmacro\pgfbs@wd{\pgfbs@maxx - \pgfbs@minx}%
\pgfmathsetmacro\pgfbs@ht{\pgfbs@maxy - \pgfbs@miny}%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
@@ -731,6 +756,19 @@ DESCRIPTION:
}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\pgfbs@usefadeandbbox}
+% This is similar to the previous macros, but it `uses' both the fading path and the bounding box
+% path.
+% \begin{macrocode}
+\def\pgfbs@usefadeandbbox#1{%
+ \let\pgfbs@temppath\pgfbs@fadepath
+ \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfbs@temppath\expandafter\expandafter\expandafter{\expandafter\pgfbs@temppath\pgfbs@shadow@bbox}%
+ \pgfsyssoftpath@setcurrentpath{\pgfbs@temppath}%
+ \pgfsyssoftpath@flushcurrentpath%
+ \pgfusepath{#1}%
+}
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\pgfbs@apply@canvas@transform}
% This achieves the scaling and shifting of the shadow. It is done by a
% canvas transform to avoid iterating through a soft path and transforming
@@ -760,6 +798,7 @@ DESCRIPTION:
% \begin{macrocode}
\def\pgfbs@paint@fading{
\pgfpicture
+ \pgfsetbaseline{\pgf@picminy}%
% fix bounding box.
\pgfbs@set@fading@pic@bbox
% compute increments for line width and opacity
@@ -806,6 +845,64 @@ DESCRIPTION:
\pgfbs@usefadepath{stroke}
\endpgfpicture
}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\pgfbs@paint@invert@fading}
+% This is an inverse fading.
+% \begin{macrocode}
+\def\pgfbs@paint@invert@fading{
+ \pgfpicture
+ \pgfsetbaseline{\pgf@picminy}%
+ % fix bounding box.
+ \pgfbs@set@fading@pic@bbox
+ % compute increments for line width and opacity
+ \pgfmathsetmacro\pgfbs@op@step{50/\pgfbs@steps}
+ \pgfmathsetmacro\pgfbs@wth@step{4*\pgfbs@radius/(2*\pgfbs@steps-1)}
+ % draw the outer part of the fading,
+ % starting with lightest, outermost line
+ \pgfsetroundjoin
+ \pgfmathsetmacro\pgfbs@max@i{\pgfbs@steps-2}
+ \pgfmathsetmacro\pgfbs@wth{2*\pgfbs@radius}
+ \pgfmathsetmacro\pgfbs@op{0.5*\pgfbs@op@step}
+ \foreach \pgfbs@i in {0,...,\pgfbs@max@i} {
+ \pgfsetlinewidth{\pgfbs@wth pt}
+ \pgfsetstrokecolor{black!\pgfbs@op!pstb@shadow@color}
+ \pgfbs@usefadepath{stroke}
+ \pgfmathsetmacro\pgfbs@wth{\pgfbs@wth-\pgfbs@wth@step}
+ \global\let\pgfbs@wth=\pgfbs@wth
+ \pgfmathsetmacro\pgfbs@op{\pgfbs@op+\pgfbs@op@step}
+ \global\let\pgfbs@op=\pgfbs@op
+ }
+ % clip to inside of path
+ \scope
+ \pgfseteorule
+ \pgfbs@usefadeandbbox{clip}
+ % fill inside with final darkest shadow color
+ \pgfsetfillcolor{pstb@shadow@color}
+ \pgfbs@usebbox{fill}
+ \endscope
+ \scope
+ \pgfbs@usefadepath{clip}
+ % draw the inner part of the fading,
+ % starting with the darkest, innermost line
+ \pgfmathsetmacro\pgfbs@wth{2*\pgfbs@radius}
+ \pgfmathsetmacro\pgfbs@op{100-0.5*\pgfbs@op@step}
+ \foreach \pgfbs@i in {0,...,\pgfbs@max@i} {
+ \pgfsetlinewidth{\pgfbs@wth pt}
+ \pgfsetstrokecolor{black!\pgfbs@op!pstb@shadow@color}
+ \pgfbs@usefadepath{stroke}
+ \pgfmathsetmacro\pgfbs@wth{\pgfbs@wth-\pgfbs@wth@step}
+ \global\let\pgfbs@wth=\pgfbs@wth
+ \pgfmathsetmacro\pgfbs@op{\pgfbs@op-\pgfbs@op@step}
+ \global\let\pgfbs@op=\pgfbs@op
+ }
+ \endscope
+ % a final stroke to hide clip/antialiasing artifcats
+ \pgfsetstrokecolor{black!50!pstb@shadow@color}
+ \pgfsetlinewidth{0.5*\pgfbs@wth@step}
+ \pgfbs@usefadepath{stroke}
+ \endpgfpicture
+}
%</texfile>
% \end{macrocode}
%\end{macro}
diff --git a/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins b/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins
index 68b5e92292b..d3b3b8b2c9b 100644
--- a/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins
+++ b/Master/texmf-dist/source/latex/pgf-blur/pgf-blur.ins
@@ -6,6 +6,8 @@
%%
%% pgf-blur.dtx (with options: `install')
%% Copyright 2012 Martin Giese, martingi@ifi.uio.no
+%% Copyright 2012 Andrew Stacey
+%% Copyright 2018 Norbert Preining, norbert@preining.info
%%
%% This file is under the LaTeX Project Public License
%% See CTAN archives in directory macros/latex/base/lppl.txt.
@@ -18,6 +20,8 @@
\askforoverwritefalse
\preamble
Copyright 2012 Martin Giese, martingi@ifi.uio.no
+Copyright 2012 Andrew Stacey
+Copyright 2018 Norbert Preining, norbert@preining.info
This file is under the LaTeX Project Public License
See CTAN archives in directory macros/latex/base/lppl.txt.
diff --git a/Master/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex b/Master/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex
index 08cf823c3fa..78e6d48c099 100644
--- a/Master/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex
+++ b/Master/texmf-dist/tex/latex/pgf-blur/tikzlibraryshadows.blur.code.tex
@@ -6,6 +6,8 @@
%%
%% pgf-blur.dtx (with options: `texfile')
%% Copyright 2012 Martin Giese, martingi@ifi.uio.no
+%% Copyright 2012 Andrew Stacey
+%% Copyright 2018 Norbert Preining, norbert@preining.info
%%
%% This file is under the LaTeX Project Public License
%% See CTAN archives in directory macros/latex/base/lppl.txt.
@@ -15,11 +17,14 @@
%%
-\def\fileversion{1.01}
-\def\filedate{2012/04/24}
+\def\fileversion{1.02}
+\def\filedate{2012/12/09}
\message{ v\fileversion, \filedate}
\usetikzlibrary{shadows}
\usetikzlibrary{calc}
+\newif\ifpgfbs@invert@fading
+\newcount\pgfbs@fading@count
+\pgfbs@fading@count=0\relax
\tikzset{
/tikz/shadow blur radius/.store in=\pgfbs@radius,
/tikz/shadow blur radius=.4ex,
@@ -28,6 +33,7 @@
/tikz/shadow blur extra rounding/.default=\pgfbs@radius,
/tikz/shadow blur steps/.store in=\pgfbs@steps,
/tikz/shadow blur steps=4,
+ /tikz/shadow blur invert/.is if=pgfbs@invert@fading,
/tikz/shadow opacity/.store in=\pgfbs@opacity,
/tikz/shadow opacity=40,
/tikz/blur shadow/.style={
@@ -40,14 +46,19 @@
},
/tikz/render blur shadow/.code={
\pgfbs@savebb
+ \global\advance\pgfbs@fading@count by 1\relax
\pgfsyssoftpath@getcurrentpath{\pgfbs@input@path}%
\pgfbs@compute@shadow@bbox
\pgfbs@process@rounding{\pgfbs@input@path}{\pgfbs@fadepath}%
\pgfbs@apply@canvas@transform
\colorlet{pstb@shadow@color}{white!\pgfbs@opacity!black}%
- \pgfdeclarefading{shadowfading}{\pgfbs@paint@fading}%
+ \ifpgfbs@invert@fading
+ \pgfdeclarefading{shadowfading-\the\pgfbs@fading@count}{\pgfbs@paint@invert@fading}%
+ \else
+ \pgfdeclarefading{shadowfading-\the\pgfbs@fading@count}{\pgfbs@paint@fading}%
+ \fi
\pgfsetfillcolor{black}%
- \pgfsetfading{shadowfading}%
+ \pgfsetfading{shadowfading-\the\pgfbs@fading@count}%
{\pgftransformshift{\pgfpoint{\pgfbs@midx}{\pgfbs@midy}}}%
\pgfbs@usebbox{fill}%
\pgfbs@restorebb
@@ -120,10 +131,10 @@
\edef\pgfbs@maxy{\the\pgf@pathmaxy}%
\pgfmathsetmacro\pgfbs@midx{0.5*(\pgfbs@minx + \pgfbs@maxx)}%
\pgfmathsetmacro\pgfbs@midy{0.5*(\pgfbs@miny + \pgfbs@maxy)}%
- \pgfmathsetmacro\pgfbs@minx{\pgfbs@minx - \pgfbs@radius}%
- \pgfmathsetmacro\pgfbs@miny{\pgfbs@miny - \pgfbs@radius}%
- \pgfmathsetmacro\pgfbs@maxx{\pgfbs@maxx + \pgfbs@radius}%
- \pgfmathsetmacro\pgfbs@maxy{\pgfbs@maxy + \pgfbs@radius}%
+ \pgfmathsetmacro\pgfbs@minx{\pgfbs@minx - 2*\pgfbs@radius}%
+ \pgfmathsetmacro\pgfbs@miny{\pgfbs@miny - 2*\pgfbs@radius}%
+ \pgfmathsetmacro\pgfbs@maxx{\pgfbs@maxx + 2*\pgfbs@radius}%
+ \pgfmathsetmacro\pgfbs@maxy{\pgfbs@maxy + 2*\pgfbs@radius}%
\pgfmathsetmacro\pgfbs@wd{\pgfbs@maxx - \pgfbs@minx}%
\pgfmathsetmacro\pgfbs@ht{\pgfbs@maxy - \pgfbs@miny}%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
@@ -149,6 +160,13 @@
\pgfsyssoftpath@flushcurrentpath%
\pgfusepath{#1}%
}
+\def\pgfbs@usefadeandbbox#1{%
+ \let\pgfbs@temppath\pgfbs@fadepath
+ \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfbs@temppath\expandafter\expandafter\expandafter{\expandafter\pgfbs@temppath\pgfbs@shadow@bbox}%
+ \pgfsyssoftpath@setcurrentpath{\pgfbs@temppath}%
+ \pgfsyssoftpath@flushcurrentpath%
+ \pgfusepath{#1}%
+}
\def\pgfbs@apply@canvas@transform{
\pgflowlevel{
\pgftransformshift{\pgfpoint{\pgfbs@midx}{\pgfbs@midy}}
@@ -161,6 +179,7 @@
}
\def\pgfbs@paint@fading{
\pgfpicture
+ \pgfsetbaseline{\pgf@picminy}%
% fix bounding box.
\pgfbs@set@fading@pic@bbox
% compute increments for line width and opacity
@@ -207,6 +226,59 @@
\pgfbs@usefadepath{stroke}
\endpgfpicture
}
+\def\pgfbs@paint@invert@fading{
+ \pgfpicture
+ \pgfsetbaseline{\pgf@picminy}%
+ % fix bounding box.
+ \pgfbs@set@fading@pic@bbox
+ % compute increments for line width and opacity
+ \pgfmathsetmacro\pgfbs@op@step{50/\pgfbs@steps}
+ \pgfmathsetmacro\pgfbs@wth@step{4*\pgfbs@radius/(2*\pgfbs@steps-1)}
+ % draw the outer part of the fading,
+ % starting with lightest, outermost line
+ \pgfsetroundjoin
+ \pgfmathsetmacro\pgfbs@max@i{\pgfbs@steps-2}
+ \pgfmathsetmacro\pgfbs@wth{2*\pgfbs@radius}
+ \pgfmathsetmacro\pgfbs@op{0.5*\pgfbs@op@step}
+ \foreach \pgfbs@i in {0,...,\pgfbs@max@i} {
+ \pgfsetlinewidth{\pgfbs@wth pt}
+ \pgfsetstrokecolor{black!\pgfbs@op!pstb@shadow@color}
+ \pgfbs@usefadepath{stroke}
+ \pgfmathsetmacro\pgfbs@wth{\pgfbs@wth-\pgfbs@wth@step}
+ \global\let\pgfbs@wth=\pgfbs@wth
+ \pgfmathsetmacro\pgfbs@op{\pgfbs@op+\pgfbs@op@step}
+ \global\let\pgfbs@op=\pgfbs@op
+ }
+ % clip to inside of path
+ \scope
+ \pgfseteorule
+ \pgfbs@usefadeandbbox{clip}
+ % fill inside with final darkest shadow color
+ \pgfsetfillcolor{pstb@shadow@color}
+ \pgfbs@usebbox{fill}
+ \endscope
+ \scope
+ \pgfbs@usefadepath{clip}
+ % draw the inner part of the fading,
+ % starting with the darkest, innermost line
+ \pgfmathsetmacro\pgfbs@wth{2*\pgfbs@radius}
+ \pgfmathsetmacro\pgfbs@op{100-0.5*\pgfbs@op@step}
+ \foreach \pgfbs@i in {0,...,\pgfbs@max@i} {
+ \pgfsetlinewidth{\pgfbs@wth pt}
+ \pgfsetstrokecolor{black!\pgfbs@op!pstb@shadow@color}
+ \pgfbs@usefadepath{stroke}
+ \pgfmathsetmacro\pgfbs@wth{\pgfbs@wth-\pgfbs@wth@step}
+ \global\let\pgfbs@wth=\pgfbs@wth
+ \pgfmathsetmacro\pgfbs@op{\pgfbs@op-\pgfbs@op@step}
+ \global\let\pgfbs@op=\pgfbs@op
+ }
+ \endscope
+ % a final stroke to hide clip/antialiasing artifcats
+ \pgfsetstrokecolor{black!50!pstb@shadow@color}
+ \pgfsetlinewidth{0.5*\pgfbs@wth@step}
+ \pgfbs@usefadepath{stroke}
+ \endpgfpicture
+}
\endinput
%%
%% End of file `tikzlibraryshadows.blur.code.tex'.