diff options
Diffstat (limited to 'graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex')
-rw-r--r-- | graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex b/graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex new file mode 100644 index 0000000000..1a42a4b40e --- /dev/null +++ b/graphics/pgf/base/tex/generic/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex @@ -0,0 +1,148 @@ +% 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{tikzlibrarybackgrounds.code.tex} + + +% Layers + +\pgfdeclarelayer{background}% +\pgfsetlayers{background,main}% + + +% Switch command +\tikzset{on background layer/.style={ + execute at begin scope={% + \pgfonlayer{background}% + \let\tikz@options=\pgfutil@empty% + \tikzset{every on background layer/.try,#1}% + \tikz@options}, + execute at end scope={\endpgfonlayer} + } +}% + + +% Main style + +\tikzset{background rectangle/.style= {draw}}% +\tikzset{background top/.style= {draw}}% +\tikzset{background bottom/.style= {draw}}% +\tikzset{background left/.style= {draw}}% +\tikzset{background right/.style= {draw}}% +\tikzset{background grid/.style= {help lines,draw}}% + +\tikzoption{inner frame sep}{\def\tikz@framexsep{#1}\def\tikz@frameysep{#1}}% +\tikzoption{inner frame xsep}{\def\tikz@framexsep{#1}}% +\tikzoption{inner frame ysep}{\def\tikz@frameysep{#1}}% +\def\tikz@framexsep{1ex}% +\def\tikz@frameysep{1ex}% + +\tikzoption{outer frame sep}{\def\tikz@outerframexsep{#1}\def\tikz@outerframeysep{#1}}% +\tikzoption{outer frame xsep}{\def\tikz@outerframexsep{#1}}% +\tikzoption{outer frame ysep}{\def\tikz@outerframeysep{#1}}% +\def\tikz@outerframexsep{0ex}% +\def\tikz@outerframeysep{0ex}% + + +% Looseness + +\tikzset{loose background/.style= {inner frame sep=2ex}}% +\tikzset{tight background/.style= {inner frame sep=0ex}}% + + + +% Showing background styles + +\tikzset{framed/.style= {style=show background rectangle}}% +\tikzset{gridded/.style= {style=show background grid}}% + +\tikzset{show background rectangle/.style={execute at end picture=\tikz@background@framed}}% +\tikzset{show background top/.style= {execute at end picture=\tikz@background@top}}% +\tikzset{show background bottom/.style= {execute at end picture=\tikz@background@bottom}}% +\tikzset{show background left/.style= {execute at end picture=\tikz@background@left}}% +\tikzset{show background right/.style= {execute at end picture=\tikz@background@right}}% +\tikzset{show background grid/.style= {execute at end picture=\tikz@background@grid}}% + + +% Implementation + +\def\tikz@background@save{% + \pgftransformreset% + \ifx\tikz@bg@minx\@undefined% + \pgf@xb=\pgf@picminx% + \pgf@yb=\pgf@picminy% + \pgf@xc=\pgf@picmaxx% + \pgf@yc=\pgf@picmaxy% + \pgfmathsetlength{\pgf@x}{\tikz@framexsep}% + \pgfmathsetlength{\pgf@y}{\tikz@frameysep}% + \advance\pgf@xb by-\pgf@x% + \advance\pgf@yb by-\pgf@y% + \advance\pgf@xc by\pgf@x% + \advance\pgf@yc by\pgf@y% + \edef\tikz@bg@minx{\the\pgf@xb}% + \edef\tikz@bg@miny{\the\pgf@yb}% + \edef\tikz@bg@maxx{\the\pgf@xc}% + \edef\tikz@bg@maxy{\the\pgf@yc}% + \pgfmathsetlength{\pgf@x}{\tikz@outerframexsep}% + \pgfmathsetlength{\pgf@y}{\tikz@outerframeysep}% + \advance\pgf@xb by-\pgf@x% + \advance\pgf@yb by-\pgf@y% + \advance\pgf@xc by\pgf@x% + \advance\pgf@yc by\pgf@y% + \edef\tikz@bg@outerminx{\the\pgf@xb}% + \edef\tikz@bg@outerminy{\the\pgf@yb}% + \edef\tikz@bg@outermaxx{\the\pgf@xc}% + \edef\tikz@bg@outermaxy{\the\pgf@yc}% + \fi% +}% + +\def\tikz@background@framed{% + \tikz@background@save% + \pgfonlayer{background} + \path[style=background rectangle] (\tikz@bg@minx,\tikz@bg@miny) rectangle (\tikz@bg@maxx,\tikz@bg@maxy); + \endpgfonlayer +}% + +\def\tikz@background@top{% + \tikz@background@save% + \pgfonlayer{background} + \path[style=background top] (\tikz@bg@outerminx,\tikz@bg@maxy) -- (\tikz@bg@outermaxx,\tikz@bg@maxy); + \endpgfonlayer +}% + +\def\tikz@background@bottom{% + \tikz@background@save% + \pgfonlayer{background} + \path[style=background bottom] (\tikz@bg@outerminx,\tikz@bg@miny) -- (\tikz@bg@outermaxx,\tikz@bg@miny); + \endpgfonlayer +}% + +\def\tikz@background@left{% + \tikz@background@save% + \pgfonlayer{background} + \path[style=background left] (\tikz@bg@minx,\tikz@bg@outerminy) -- (\tikz@bg@minx,\tikz@bg@outermaxy); + \endpgfonlayer +}% + +\def\tikz@background@right{% + \tikz@background@save% + \pgfonlayer{background} + \path[style=background right] (\tikz@bg@maxx,\tikz@bg@outerminy) -- (\tikz@bg@maxx,\tikz@bg@outermaxy); + \endpgfonlayer +}% + +\def\tikz@background@grid{% + \tikz@background@save% + \pgfonlayer{background} + \path[style=background grid] (\tikz@bg@minx,\tikz@bg@miny) grid (\tikz@bg@maxx,\tikz@bg@maxy); + \endpgfonlayer +}% + + +\endinput |