\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfbaselayers.code.tex,v 1.2 2005/10/24 15:14:48 tantau Exp $ % Copyright 2005 by Till Tantau . % % This program can be redistributed and/or modified under the terms % of the GNU Public License, version 2. % Creates a new pgf layer % % #1 = layer name % % Declares a new layer for pgf. % % Example: % % \pgfdeclarelayer{background} \def\pgfdeclarelayer#1{% \expandafter\pgf@newbox\csname pgf@layerbox@#1\endcsname% \expandafter\pgf@newbox\csname pgf@layerboxsaved@#1\endcsname% } \let\pgf@newbox=\newbox % avoid plain TeX outer problem % Sets the layers that compose the picture % % #1 = List of layers % % Description: % % Sets the list of layers that make up the picture. The layers will be % put on top of each other in the order given. % % Example: % % \pgfsetlayers{background,main} \def\pgfsetlayers#1{\edef\pgf@layerlist{#1}} \pgfsetlayers{main} % Adds code to a layer % % #1 = layer name % % Note: % % You cannot anything to the ``main'' layer using this command. % % Example: % % \begin{pgfonlayer}{background} % \fill[red] (0,0) -- (1,1); % \end{pgfonlayer} \def\pgfonlayer#1{% \expandafter\global\expandafter% \setbox\csname pgf@layerbox@#1\endcsname=\hbox to 0pt% \bgroup% \expandafter\box\csname pgf@layerbox@#1\endcsname% \begingroup% } \def\endpgfonlayer{% \endgroup% \hss \egroup% } % Hooks into the scoping: \def\pgf@insertlayers{% \expandafter\pgf@dolayer\pgf@layerlist,,\relax% } \def\pgf@maintext{main}% \def\pgf@dolayer#1,#2,\relax{% \def\pgf@test{#1}% \ifx\pgf@test\pgf@maintext% \box\pgf@layerbox@main% \else% \pgfsys@beginscope% \expandafter\box\csname pgf@layerbox@#1\endcsname% \pgfsys@endscope% \fi% \def\pgf@test{#2}% \ifx\pgf@test\@empty% \else% \pgf@dolayer#2,\relax% \fi% } \def\pgf@savelayers{% \expandafter\pgf@dosavelayer\pgf@layerlist,,\relax% } \def\pgf@dosavelayer#1,#2,\relax{% \def\pgf@test{#1}% \ifx\pgf@test\pgf@maintext% \else% \setbox\csname pgf@layerboxsaved@#1\endcsname=\box\csname pgf@layerbox@#1\endcsname% \fi% \def\pgf@test{#2}% \ifx\pgf@test\@empty% \else% \pgf@dosavelayer#2,\relax% \fi% } \def\pgf@restorelayers{% \expandafter\pgf@dorestorelayer\pgf@layerlist,,\relax% } \def\pgf@dorestorelayer#1,#2,\relax{% \def\pgf@test{#1}% \ifx\pgf@test\pgf@maintext% \else% \global\setbox\csname pgf@layerbox@#1\endcsname=\box\csname pgf@layerboxsaved@#1\endcsname% \fi% \def\pgf@test{#2}% \ifx\pgf@test\@empty% \else% \pgf@dorestorelayer#2,\relax% \fi% } \endinput