%D \module
%D   [       file=page-spr,
%D        version=2002.11.11,
%D          title=\CONTEXT\ Page Macros,
%D       subtitle=Spreading, 
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\writestatus{loading}{Context Page Macros / Spreading} 

% This module is experimental and not yet official!

\unprotect 

\newbox\spreadbox
\newif \ifinspread

\chardef\showspreadmode=1

\def\settextpagecontent#1#2#3% #2 and #3 will disappear
  {\setbox#1\hbox
     {\vbox to \teksthoogte
        {\offinterlineskip
         \freezetextwidth
         \hsize\tekstbreedte   % local variant of \sethsize
         \boxmaxdepth\maxdepth
         \noindent             % content can be < \hsize
         \dopagecontents#2#3}}%
   \dp#1\zeropoint
   \setbox#1\hbox to \zetbreedte 
     {\ifinspread
        \ifvoid\spreadbox
          \global\setbox\spreadbox\box#1%
          \copy\spreadbox\hss % left page 
        \else
          % prevent duplicate writes in normal run 
          \ifarrangingpages \else \ifcase\showspreadmode
            \global\setbox\spreadbox\null
            \wd\spreadbox\zetbreedte
            \ht\spreadbox\teksthoogte
          \fi \fi
          \hss\box\spreadbox % right page 
        \fi
      \else
        \hss\box#1\hss % never change the \hss's
      \fi}}

\def\doflushspread
  {\ifinspread \ifvoid\spreadbox\else 
     % this page will be discarded later  
     \null \pagina 
   \fi \fi }

\def\startspread
  {\bgroup
   \ifdubbelzijdig
     \pagina[\v!links]%
    %\setsystemmode{spread}%
     \inspreadtrue
     \scratchdimen2\tekstbreedte
     \advance\scratchdimen2\rugwit
     \expanded{\setuplayout[\c!tekstbreedte=\the\scratchdimen]}%
     \def\startspread{\bgroup\let\stopspread\egroup}%
     \let\stopspread\dostopspread
   \else
     \let\stopspread\egroup
   \fi}

\let\stopspread\relax

\def\dostopspread
  {\kern\zeropoint\pagina
   \inspreadfalse
   \setuplayout[\c!tekstbreedte=\tekstbreedte]
   \pagina[\v!links]
   \egroup}

\protect \endinput 

% texexec --arr --pdf test
%
% \setuplayout[width=middle]
% \setuppapersize[A4][A3,landscape]
% \setuppagenumbering[alternative=doublesided]
% \setuparranging[2UP]
% 
% \starttext 
% 
% \dorecurse{3}{\input tufte }
% 
% \startspread 
%   \dorecurse{10}{\input tufte }
% \stopspread
% 
% \dorecurse{3}{\input tufte }
% 
% \stoptext 
