%D \module
%D   [      file=s-pre-03,
%D        version=1998.09.06,
%D          title=\CONTEXT\ Style File,
%D       subtitle=Presentation Environment 3,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%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 is the third environment for typesetting interactive
%D presentations. I used this style for a talk on \TEX\ and
%D \JAVASCRIPT\ at \TUG98, mainly because I didn't want to
%D use the same style three times. Therefore this is a rather
%D simple, silly style.

\usemodule[pre-general]

%D \macros
%D  {setupbodyfont}
%D
%D We use a large bodyfont. Combined with the fancy
%D background, this does not leave that much room for text, but
%D presentations should use much text anyway.

\startmode[asintended] \setupbodyfont[lbr] \stopmode

\setupbodyfont[14.4pt]

%D \macros
%D   {setuppapersize,setuplayout,setupinteractionscreen}
%D
%D The page dimensions are set to size \type {S6}, being
%D 600pt by 450pt. We use wide margins and discard headers
%D and footers. We also launch the document full screen.

\setuppapersize
  [S6][S6]

\setuplayout
  [width=middle,
   height=middle,
   topspace=75pt,
   backspace=100pt,
   header=0pt,
   footer=0pt]

\setupinteractionscreen
  [option=max]

%D \macros
%D   {setupcolors,definecolor}
%D
%D Next, color support is turned on and a dark red color is
%D defined. Other red shades will be derived from this one
%D color.

\setupcolors
  [state=start]

\definecolor [PageColor]       [black]
\definecolor [BackgroundColor] [s=.85]
\definecolor [OrnamentColor]   [r=.75]

%D \macros
%D   {setupinteraction}
%D
%D We turn on interaction mode and use the same color for
%D hyperlinks and redundant hyperlinks (the ones that point
%D to the current page).

\setupinteraction
  [state=start,
   contrastcolor=OrnamentColor,
   color=OrnamentColor]

%D \macros
%D   {defineoverlay, setupbackgrounds}
%D
%D The joke in this presentation is the elliptical shape of
%D which the bottom part includes a page indication.

\defineoverlay
  [PageShape][\useMPgraphic{PageShape}]

% \startuseMPgraphic{PageShape}
%   lin := 20pt ; off := .75lin ;
%   wid := \overlaywidth ; hei := \overlayheight ;
%   pos := \currentpage ; tot := \lastpage ;
%   path bb; bb := unitsquare xscaled wid yscaled hei ;
%   filldraw bb withcolor \MPcolor{PageColor} ;
%   pickup pencircle xscaled .5lin yscaled lin rotated 45 ;
%   pair r, t, l, b ;
%   r := (wid-off,.5hei) ; t := (.5wid,hei-off) ;
%   l := (off,.5hei) ; b := (.5wid,off) ;
%   path p; p := superellipse(r,t,l,b,.8) ;
%   fill p withcolor \MPcolor{Backgroundcolor} ;
%   draw p withcolor \MPcolor{OrnamentColor} ;
%   color contrastcolor ; contrastcolor = 2/3 * \MPcolor{OrnamentColor} ;
%   if (pos>0) and (tot>0):
%     pair pa ; pa := point 5 of p ;
%     pair pb ; pb := point 7 of p ;
%     draw pa withcolor contrastcolor ;
%     draw pb withcolor contrastcolor ;
%     len := 2/tot ;
%     pair pa ; pa := point (5+len*pos) of p ;
%     pair pb ; pb := point (5+len*(pos-1)) of p ;
%     p := p cutafter pa ;
%     p := p cutbefore pb ;
%     draw p withcolor contrastcolor ;
%   fi ;
%   setbounds currentpicture to bb ;
% \stopuseMPgraphic

\startuseMPgraphic{PageShape}
  StartPage ;
    path p ; pair pa, pb ; numeric len ; color contrastcolor ;
    fill Page withcolor \MPcolor {PageColor} ;
    pickup pencircle rotated 45 xscaled 10pt yscaled 20pt ;
    p := Page enlarged (-10pt,-15pt) superellipsed .8 ;
    p := p shifted (-1.5pt,0) ; % looks better
    fill p withcolor \MPcolor{BackgroundColor} ;
    draw p withcolor \MPcolor{OrnamentColor} ;
    contrastcolor = 2/3 * \MPcolor{OrnamentColor} ;
    if (PageNumber>0) and (NOfPages>0):
      draw point 5 of p withcolor contrastcolor ;
      draw point 7 of p withcolor contrastcolor ;
      len := 2/NOfPages ;
      pa := point (5+len*PageNumber) of p ;
      pb := point (5+len*(PageNumber-1)) of p ;
      draw (p cutafter pa) cutbefore pb
        withcolor contrastcolor ;
    fi ;
  StopPage ;
\stopuseMPgraphic

%D We use the viewer provided feature to go to the previous or
%D next page.

\defineoverlay[PrevButton][\overlaybutton{PreviousPage}]
\defineoverlay[NextButton][\overlaybutton{NextPage}]

\setupbackgrounds
  [page]
  [background={PageShape,PrevButton}]

\setupbackgrounds
  [text][text]
  [background=NextButton]

% or using hard coded next/prev pages:
%
% \defineoverlay[PrevButton][\overlaybutton{previouspage}]
% \defineoverlay[NextButton][\overlaybutton{nextpage}]
%
% \setupbackgrounds[state=repeat]
% \setupbackground[text][text][background=NextButton]
%
% or simply (using an repeated layer):
%
% \setupbackground[text][background=NextButton]

%D \macros
%D   {definehead, setuphead}
%D
%D Like the other presentation styles, we use \type {\Topic}
%D instead of \type {\chapters}. This time we don't provide
%D an additional sectioning. So we have:
%D
%D \starttyping
%D \TitlePage{How nice}
%D
%D \Topics{This is about ...}
%D
%D \Topic{The first one}
%D
%D \Topic{Another one}
%D \stoptyping

\definehead [Topic] [chapter]
\definehead [Nopic] [title]

\setuphead
  [Topic,Nopic]
  [after={\blank[3*medium]},
   number=no,
   style=\tfb,
   page=yes,
   alternative=middle]

\setuplist
  [Topic]
  [alternative=g,
   interaction=all,
   before=,
   after=]

\def\Subject
  {\Topic}

%D The tables of contents is associated with \type
%D {\Topics}.

\def\Topics#1%
  {\Nopic[Topics]{#1}
   \placelist[Topic][criterium=all]}

\def\Subjects
  {}

%D Instead of \type {\TitlePage}, one can use the pair
%D \type {\StartTitlePage} -- \type {\StopTitlePage}:
%D
%D \starttyping
%D \StartTitlePage
%D A Self Made Title
%D \StopTitlePage
%D \stoptyping

\def\StartTitlePage%
  {\startstandardmakeup
   \bfd\setupinterlinespace
   \setupalign[middle]
   \vfil
   \def\\{\vfil\bfb\setupinterlinespace}}

\def\StopTitlePage%
  {\vfil\vfil\vfil
   \stopstandardmakeup}

\def\TitlePage#1%
  {\StartTitlePage#1\StopTitlePage}

\doifnotmode{demo}{\endinput}

%D The (rather silly) demo section.

\starttext

\TitlePage{Title Page\\pre-funny}

\Topics{Some Nice Quotes}

\Topic{A Few}

\Subject{Knuth} \input knuth
\Subject{Tufte} \input tufte

\Topic{Some More}

\Subject{Zapf}   \input zapf
\Subject{Bryson} \input bryson

\stoptext