diff options
Diffstat (limited to 'graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex')
-rw-r--r-- | graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex b/graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex new file mode 100644 index 0000000000..a5fea2a79b --- /dev/null +++ b/graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex @@ -0,0 +1,134 @@ +% Copyright 2019 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{tikzlibraryspy.code.tex} + + + +% Spy styles + +\tikzset{ + spy using outlines/.style={ + spy scope={ + every spy on node/.style={very thin,draw}, + every spy in node/.style={thick,draw}, + #1 + } + }, + spy using overlays/.style={ + spy scope={ + every spy on node/.style={fill,fill opacity=0.2,text opacity=1}, + every spy in node/.style={fill,fill opacity=0.2,text opacity=1}, + #1 + } + }, + connect spies/.style={ + spy connection path={\draw[thin] (tikzspyonnode) -- (tikzspyinnode);} + } +}% + +\newbox\tikz@lib@spybox + +\let\tikz@lib@spy@collection=\pgfutil@empty% + +\tikzset{spy scope/.style={ + size/.style={minimum size={##1}}, + height/.style={minimum height={##1}}, + width/.style={minimum width={##1}}, + execute at begin scope={% + \let\tikz@lib@spy@save=\tikz@lib@spy@collection% + \setbox\tikz@lib@spybox=\hbox\bgroup\bgroup% + \let\spy=\tikz@lib@spy@parse}, + execute at end scope={% + \egroup\egroup% + {% + \copy\tikz@lib@spybox% + \tikz@lib@spy@collection% + }% + \global\let\tikz@lib@spy@collection=\tikz@lib@spy@save% + },% + tikz@lib@spy@style/.style={#1}, + tikz@lib@reset@gs + }, + lens/.store in=\tikz@lib@spy@lens, + lens=, + magnification/.style={lens={scale={#1}}}, + spy connection path/.store in=\tikz@lib@spy@path, + spy connection path= +}% + +\tikzset{ + tikz@lib@reset@gs/.style={black,thin,solid,opaque,line cap=butt,line join=miter} +}% + +\def\tikz@lib@spy@parse{% + \pgfutil@ifnextchar[{\tikz@lib@spy@parse@opt}{\tikz@lib@spy@parse@opt[]}%] +}% +\def\tikz@lib@spy@parse@opt[#1]{ + \pgfutil@ifnextchar x{\tikz@lib@spy@parse@opta[#1]}{\tikz@lib@spy@parse@opta[#1]}%] +}% +\def\tikz@lib@spy@parse@opta[#1]on#2in node#3;{% + \pgfutil@g@addto@macro\tikz@lib@spy@collection{\tikz@lib@spy@do{#1}{#2}{#3}}% +}% + +\def\tikz@lib@spy@do#1#2#3{% + \scope[tikz@lib@spy@style,#1] + \node [alias=tikzspyonnode,inner sep=0pt,outer sep=0pt,every spy on node/.try, + /utils/exec={ + {% + \let\tikz@transform=\relax + \pgftransformreset% + \expandafter\tikzset\expandafter{\tikz@lib@spy@lens} + \pgftransforminvert% + \pgfgettransformentries\a\b\c\d\e\f% + \global\let\pgf@lib@svg@a=\a% + \global\let\pgf@lib@svg@b=\b% + \global\let\pgf@lib@svg@c=\c% + \global\let\pgf@lib@svg@d=\d% + }% + \tikz@addtransform{% + \tikz@scan@one@point\pgftransformshift#2% + \pgftransformcm{\pgf@lib@svg@a}{\pgf@lib@svg@b}{\pgf@lib@svg@c}{\pgf@lib@svg@d}{\pgfpointorigin}% + } + }]{}; + \expandafter\pgfutil@switch\expandafter\pgfutil@ifstrequal\expandafter{\tikz@anchor}{% + {north} {\def\tikz@spy@anchor{south}}% + {north east}{\def\tikz@spy@anchor{south west}}% + {east} {\def\tikz@spy@anchor{west}}% + {south east}{\def\tikz@spy@anchor{north west}}% + {south} {\def\tikz@spy@anchor{north}}% + {south west}{\def\tikz@spy@anchor{north east}}% + {west} {\def\tikz@spy@anchor{east}}% + {north west}{\def\tikz@spy@anchor{south east}}% + }{}{\def\tikz@spy@anchor{center}}% + \node [alias=tikzspyinnode,inner sep=0pt,outer sep=0pt,at={#2},every spy in node/.try, + path picture={\node[anchor=\tikz@spy@anchor,tikz@lib@reset@gs]{\nullfont% + \pgfpicture\relax\pgfsetbaseline{default}\pgfsettrimleft{default}\pgfsettrimright{default}% + \pgftransformreset% + \let\tikz@transform=\relax% + \expandafter\tikzset\expandafter{\tikz@lib@spy@lens}% + \pgflowlevelsynccm% + \tikz@scan@one@point\tikz@lib@spy@shift#2% + \pgflowlevelsynccm% + \copy\tikz@lib@spybox% + \endpgfpicture};}]#3{}; + \tikz@lib@spy@path + \endscope +}% + +\def\tikz@lib@spy@shift#1{% + \pgf@process{#1}% + \pgf@x=-\pgf@x% + \pgf@y=-\pgf@y% + \pgftransformshift{}% +}% + + + +\endinput |