% Copyright 2018 by Till Tantau
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.

\ProvidesFileRCS{tikzlibraryshadows.code.tex}

\usetikzlibrary{fadings}%


% General options
\tikzset{
  /tikz/shadow scale/.initial=1,
  /tikz/shadow xshift/.initial=0pt,
  /tikz/shadow yshift/.initial=0pt,
}%

% Basic shadow style
\tikzset{
  general shadow/.style={
    preaction={
      #1,
      transform canvas={
        scale around=\pgfkeysvalueof{/tikz/shadow scale}:(current path bounding box.center),
        shift={(\pgfkeysvalueof{/tikz/shadow xshift},\pgfkeysvalueof{/tikz/shadow yshift})}
      },
    }
  },
  every shadow/.style={}
}%



%
% Adds a simple drop shadow to a path
%

\tikzset{
  /tikz/drop shadow/.style={
    general shadow={%
      shadow scale=1,
      shadow xshift=.5ex,
      shadow yshift=-.5ex,
      opacity=.5,
      fill=black!50,
      every shadow,
      #1
    }
  }
}%


%
% Adds a circular drop shadow to a path
%

\tikzset{
  /tikz/circular drop shadow/.style={
    general shadow={%
      shadow scale=1.1,
      shadow xshift=.3ex,
      shadow yshift=-.3ex,
      fill=black!50,
      path fading={circle with fuzzy edge 15 percent},
      every shadow,
      #1
    }
  }
}%



%
% Adds a circular glow to a path
%

\tikzset{
  /tikz/circular glow/.style={
    general shadow={%
      shadow scale=1.25,
      shadow xshift=0pt,
      shadow yshift=0pt,
      fill=black!50,
      path fading={circle with fuzzy edge 15 percent},
      every shadow,
      #1,
    }
  }
}%





%
% Adds a "copy" version of the path behind it.
%

\tikzset{
  /tikz/copy shadow/.style={
    general shadow={%
      /utils/exec={\let\tikz@lib@shadow@fill=\tikz@fillcolor\let\tikz@lib@shadow@draw=\tikz@strokecolor},
      shadow scale=1,
      shadow xshift=.5ex,
      shadow yshift=.5ex,
      fill=\tikz@lib@shadow@fill,
      draw=\tikz@lib@shadow@draw,
      every shadow,
      #1
    }
  }
}%


%
% Adds two "copies" of the path behind it.
%

\tikzset{
  /tikz/double copy shadow/.style={
    general shadow={%
      /utils/exec={\let\tikz@lib@shadow@fill=\tikz@fillcolor\let\tikz@lib@shadow@draw=\tikz@strokecolor},
      shadow scale=1,
      shadow xshift=.5ex,
      shadow yshift=.5ex,
      fill=\tikz@lib@shadow@fill,
      draw=\tikz@lib@shadow@draw,
      #1,
      shadow xshift/.expanded=2*\pgfkeysvalueof{/tikz/shadow xshift},
      shadow yshift/.expanded=2*\pgfkeysvalueof{/tikz/shadow yshift},
    },
    general shadow={%
      /utils/exec={\let\tikz@lib@shadow@fill=\tikz@fillcolor\let\tikz@lib@shadow@draw=\tikz@strokecolor},
      shadow scale=1,
      shadow xshift=.5ex,
      shadow yshift=.5ex,
      fill=\tikz@lib@shadow@fill,
      draw=\tikz@lib@shadow@draw,
      #1,
    },
  }
}%
