summaryrefslogtreecommitdiff
path: root/tex/context/base/page-lyr.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/page-lyr.tex')
-rw-r--r--tex/context/base/page-lyr.tex48
1 files changed, 28 insertions, 20 deletions
diff --git a/tex/context/base/page-lyr.tex b/tex/context/base/page-lyr.tex
index bdd08eaed..7bc27b31f 100644
--- a/tex/context/base/page-lyr.tex
+++ b/tex/context/base/page-lyr.tex
@@ -66,7 +66,7 @@
{\ifundefined{\@@layerbox#1}%
\expandafter\newbox\csname\@@layerbox#1\endcsname
\else
- \setbox\csname\@@layerbox#1\endcsname=\voidb@x
+ \resetlayer[#1]%
\fi
\defineoverlay
[#1][\composedlayer{#1}]%
@@ -87,13 +87,14 @@
\def\setuplayer%
{\dodoubleargument\dosetuplayer}
-\def\dosetuplayer[#1]%
- {\getparameters[\??ll#1]}
+\def\dosetuplayer[#1][#2]%
+ {\def\docommando##1{\getparameters[\??ll##1][#2]}%
+ \processcommalist[#1]\docommando}
%D \macros
%D {setlayer}
%D
-%D Data is moved intoa layer with the following macro. When
+%D Data is moved into a layer with the following macro. When
%D \type {position} is set, relative positioning is used, with
%D the current point as reference point. Otherwise the topleft
%D corner is used as reference point.
@@ -148,7 +149,7 @@
{\hbox to \getvalue{\??ll#1\c!breedte} % \wd\nextbox
{\xypos{lyr:\currentlayerdata}\hss}%
\vss}}
- {\setbox\layerbox=\box\voidb@x
+ {\setbox\layerbox=\emptybox
\edef\layerpage{\getvalue{\??ll#1\c!pagina}}}%
\doifsomething{\layerpage}
{\edef\layerpage{:\layerpage}%
@@ -157,9 +158,9 @@
\global\setbox\csname\@@layerbox#1\layerpage\endcsname=\vbox
{\offinterlineskip
\ifvoid\csname\@@layerbox#1\layerpage\endcsname\else
- \ht \csname\@@layerbox#1\layerpage\endcsname\!!zeropoint
- \dp \csname\@@layerbox#1\layerpage\endcsname\!!zeropoint
- \wd \csname\@@layerbox#1\layerpage\endcsname\!!zeropoint
+ \ht\csname\@@layerbox#1\layerpage\endcsname\zeropoint
+ \dp\csname\@@layerbox#1\layerpage\endcsname\zeropoint
+ \wd\csname\@@layerbox#1\layerpage\endcsname\zeropoint
\doifnotvalue{\??ll#1\c!richting}{\v!omgekeerd}
{\box\csname\@@layerbox#1\layerpage\endcsname}%
\fi
@@ -196,23 +197,30 @@
%D macro does not takes hash space.
\def\flushlayer[#1]%
- {\doifvalue{\??ll#1\c!status}{\v!start}
+ {\doifnotvalue{\??ll#1\c!status}{\v!stop}
{\startoverlay
- {\doflushlayer1{#1}}
- {\doflushlayer0{#1:\realfolio}}
+ {\doflushlayer1{#1}{#1}}
+ {\doflushlayer0{#1}{#1:\realfolio}}
\stopoverlay}}
-\def\doflushlayer#1#2%
- {\ifundefined{\@@layerbox#2}%
- \ifcase#1\else\writestatus{layer}{unknown layer #2}\fi
+\def\doflushlayer#1#2#3%
+ {\ifundefined{\@@layerbox#3}%
+ \ifcase#1\else\writestatus{layer}{unknown layer #3}\fi
\else
- \doifvalue{\??ll#1\c!optie}{\v!test}\tracelayerstrue
+ \doifvalue{\??ll#2\c!optie}{\v!test}\tracelayerstrue
\iftracelayers \ruledvbox \else \vbox \fi to \overlayheight
{\forgetall
\hbox to \overlaywidth
- {\doifvalue{\??ll#2\realfolio\c!positie}{\v!ja}
- {\xypos{lyr:#2:\realfolio}}%
- \box\csname\@@layerbox#2\endcsname\hss}%
+ {\doifvalue{\??ll#3\realfolio\c!positie}{\v!ja}
+ {\xypos{lyr:#3:\realfolio}}%
+ \let\next\box
+ \ifcase#1\else
+ \doifnotvalue{\??ll#2\c!positie}{\v!ja}
+ {\doifvalue{\??ll#2\c!status}{\v!herhaal}
+ {\let\next\copy}}%
+ \fi
+ \next\csname\@@layerbox#3\endcsname
+ \hss}%
\vss}%
\fi}
@@ -232,8 +240,8 @@
%D needed as well).
\def\doresetlayer#1%
- {\ifundefined{\@@layerbox#1}\else
- \global\setbox\csname\@@layerbox#1\endcsname\voidb@x
+ {\ifundefined{\@@layerbox#1}\else
+ \global\@EA\setbox\csname\@@layerbox#1\endcsname\emptybox
\fi}
\def\resetlayer[#1]%