%D \module
%D   [      file=s-pre-10,
%D        version=unknown,
%D          title=\CONTEXT\ Style File,
%D       subtitle=Presentation Environment 10,
%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.

%D This style is derived from the ninth style, which was
%D used first at \EUROTEX\ 99 and later at \TUG\ 2000. This
%D alternative build up a page.

\startmode [demo]
  \disablemode[demo] \usemodule[pre-09] \enablemode[demo]
\stopmode

\startnotmode [demo]
  \usemodule[pre-09]
\stopnotmode

%D We use blue colors instead of yellow ones. Since we have
%D used symbolic names, we can easily overload the existing
%D scheme.

\definecolor[LineColor][r=.40,g=.40,b=1.00]

%D Here we don't use fixed dimensions, but fit the sample
%D windows and derive the text windows's width from this one.

\setupframedtexts
  [SampleText]
  [width=fit,height=fit,
   background={background,nextpage}]

%D The topic goes to the top right corner of the screen which
%D means that it is positioned left down to the reference
%D point. Watch how we make data on this layer (here only
%D the topic but it can be more) persistent.

\setuplayer
  [topic]
  [y=0pt,x=\makeupwidth,location=lb,state=repeat,
   hoffset=-\FrameSkip,voffset=\FrameSkip]

%D Clicking on the page brings us back.

\setupbackgrounds
  [page]
  [background={previouspage,color,topic}]

%D All layers end up on the text area. This could have been
%D the page area too since these have the same dimensions.

\setupbackgrounds
  [text]
  [background={common,sample,text}]

%D Because we build up the text window step by step, we will
%D separate the entries by white space.

\startsetups [always]
  \setupwhitespace[big]
  \setupblank[big]
\stopsetups

%D The \type {\Topic} commands can be simplified to:

\def\Topic#1%
  {\resetlayer[topic]
   \setlayer[topic]{\bfb\setstrut\color[TextColor]{#1}}}

%D We also provide a way to erase the topic.

\def\NoTopic
  {\resetlayer[topic]}

%D We have to redefine the structuring commands to support
%D the resetting of buffer counters.

\newcounter\TextN

\def\StartSample
  {\doglobal\newcounter\TextN
   \dostartbuffer[sample][StartSample][StopSample]}

\def\StartText
  {\doglobal\newcounter\TextN
   \dostartbuffer[text][StartText][StopText]}

\def\StartSubText
  {\doglobal\increment\TextN
   \dostartbuffer[text-\TextN][StartSubText][StopSubText]}

\def\StopText
  {\startstandardmakeup
     \DoSampleText{text}{common}{nextpage}
   \stopstandardmakeup}

\def\StopSubText
  {\startstandardmakeup
     \DoSampleText{text}{common}{nextpage}
   \stopstandardmakeup}

%D The \type {\DoSampleText} command is adapted to support
%D addition of subtexts (each subtext goes into its own
%D buffer).

\def\DoSampleText#1#2#3%
  {\setupframedtexts[SampleText][background={background,#3}]
   \bgroup
   \setups[#1]%
   \setups[always]%
   \setbox\nextbox=\hbox
     {\startSampleText[none]
        \getbuffer[#1]\par
        \doif{#1}{text}
          {\dorecurse{\TextN}{\getbuffer[text-\recurselevel]\par}}
      \stopSampleText}
   \xdef\SampleTextWidth{\the\wd\nextbox}
   \setlayer[#2]{\box\nextbox}%
   \egroup}

%D Since we are no longer swapping windows, we end up with a
%D much simplier \type {\Stopidea} macro. We don't reset
%D samples at the inner level.

\def\StartIdea%
  {\bgroup
   \let\StopSample \relax
   \let\StopText   \relax
   \let\StopSubText\relax
   \def\StartSample{\dostartbuffer[sample][StartSample][StopSample]}}

\def\StopIdea%
  {\startstandardmakeup
     \DoSampleText{sample}{sample}{nextpage}
     \SetTextWidth
     \DoSampleText{text}  {text}  {nextpage}
   \stopstandardmakeup
   \egroup}

%D Here we determine the width of the text window. It is
%D derived from the width of the sample and stays the same
%D within a sequence.

\def\SetTextWidth
  {\ifnum\TextN<1 % yes or no, may change
     \scratchdimen=\makeupwidth
     \advance\scratchdimen by -\SampleTextWidth
     \advance\scratchdimen by  \FrameSkip
     \xdef\SampleWidth{\the\scratchdimen}%
   \fi
   \setupframedtexts
     [SampleText]
     [width=\SampleWidth]}

%D We use the (already implemented) second alternative of
%D the titlepage graphic. Please don't change this.

\defineoverlay[joke] [\useMPgraphic{joke}{n=1}] % not to be changed !

\doifnotmode{demo}{\endinput}

%D The demo section. The original presentation uses proper
%D graphics and has better spacing.

\def\SomeSymbol#1#2{\definedfont[ContextNavigation at #1]\char#2}

\setupcombinations[distance=\FrameOffset,inbetween=\vskip\FrameOffset]

\starttext

\TitlePage{Some Famous Symbols}

\Topic{Symbols}

\StartSample
  \startcombination[2*2]
    {\SomeSymbol{5cm}{1}} {}
    {\SomeSymbol{5cm}{3}} {}
    {\SomeSymbol{5cm}{2}} {}
    {\SomeSymbol{5cm}{4}} {}
  \stopcombination
\StopSample

\Topic{Previous}

\StartIdea
  \StartSample
    \SomeSymbol{7cm}{1}
  \StopSample
  \StartText
    This symbol can be used to indicate a hyperlink to a
    previous page.
  \StopText
\StopIdea

\StartIdea
  \StartSubText
    As one can expect there is also a symbol for going to
    the next page.
  \StopSubText
\StopIdea

\Topic{Previous}

\StartIdea
  \StartSample
    \SomeSymbol{9cm}{2}
  \StopSample
  \StartText
     This symbol is actually just a mirrored version of the
     first symbol we showed.
  \StopText
\StopIdea

\NoTopic

\StartText
  Is this nice or not?
\StopText

\Topic{First and Last}

\StartSample
  \SomeSymbol{11cm}{3}
\StopSample

\StartSample
  \SomeSymbol{11cm}{4}
\StopSample

\StartIdea
  \StartSample
    \SomeSymbol{5cm}{3}
  \StopSample
  \StartText
    A few screens back, we saw this symbol.
  \StopText
\StopIdea

\StartIdea
  \StartSubText
    This symbol represents the beginning of something.
  \StopSubText
\StopIdea

\StartIdea
  \StartSample
    \SomeSymbol{5cm}{4}
  \StopSample
  \StartSubText
    Just like this one represents an end.
  \StopSubText
\StopIdea

\StartIdea
  \StartSubText
    They look just like the symbols found on audio and
    video players.
  \StopSubText
\StopIdea

\Topic{Summary}

\StartIdea
  \StartSample
    \SomeSymbol{6cm}{1}
  \StopSample
  \StartText
    So we have a symbol for previous \unknown
  \StopText
\StopIdea

\StartIdea
  \StartSample
    \SomeSymbol{6cm}{2}
  \StopSample
  \StartSubText
    \unknown\ and one for next \unknown
  \StopSubText
\StopIdea

\StartIdea
  \StartSample
    \SomeSymbol{6cm}{3}
  \StopSample
  \StartSubText
    \unknown\ and yet another for first \unknown
  \StopSubText
\StopIdea

\StartIdea
  \StartSample
    \SomeSymbol{6cm}{4}
  \StopSample
  \StartSubText
    \unknown\ and of course for last.
  \StopSubText
\StopIdea

\stoptext

