1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfbaselayers.code.tex,v 1.1 2005/08/13 18:59:56 tantau Exp $
% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>.
%
% 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\newbox\csname pgf@layerbox@#1\endcsname%
\expandafter\newbox\csname pgf@layerboxsaved@#1\endcsname%
}
% 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
|