%D \module
%D   [      file=s-present-original, % was s-pre-01
%D        version=1997.07.22,
%D          title=\CONTEXT\ Style File,
%D       subtitle=Presentation Environment Original,
%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 environment can be used to typeset interactive presentations. This module
%D was first used at the 1997 \TUG\ meeting. The \MKIV\ variant is mostly the same
%D but we adapted the colors a bit.

\usemodule[present-general]

\startmodule[present-original]

%D \macros
%D   {language}
%D
%D Because this module is defined in english, we default to the english hyphenation
%D patterns and labels too. This is default anyway.

\mainlanguage
  [en]

%D \macros
%D   {setupbodyfont,setuplayout}
%D
%D For screen reading, a Lucida Bright font looks nice. We use a 14.4 point bodyfont
%D for the main text, but switch back to 12 points for ornaments.

\doifelsemode {asintended} {
    \setupbodyfont[ludicaot,14.4pt]
} {
    \setupbodyfont[pagella,14.4pt]
}

\setuplayout
  [style=smallbodyfont]

\setupalign
  [tolerant,stretch]

%D \macros
%D   {definecolor}
%D
%D Screen presentations without color just look dull, so we enable color support. We
%D define ourselves a yellowish backgroundcolor and a not too dark blue
%D interactioncolor.

% \definecolor [BackgroundColor]  [r=1,  g=1,  b=.7]
% \definecolor [InteractionColor] [r=.1, g=.5, b=.8]
% \definecolor [ContrastColor]    [r=.9, g=.5, b=.2]

\definecolor [BackgroundColor]  [r=.7, g=.7, b=.3]
\definecolor [InteractionColor] [r=.1, g=.5, b=.8]
\definecolor [ContrastColor]    [r=.9, g=.5, b=.2]

%D \macros
%D   {setuppapersize,setuplayout,setupinteractionscreen}
%D
%D We use a nice large screen, and dedicate the right edge and bottom part to
%D navigational tools. We automatically set the width and height of the page and
%D start up full screen.

\setuppapersize
  [S6][S6]

\setuplayout
  [topspace=12pt,
   header=0pt,
   footer=0pt,
   height=402pt, % 450 - 12 - 15 - 12 - 12 + 3
   bottomdistance=15pt,
   bottom=12pt,
   backspace=12pt,
   margin=0pt,
   width=fit,
   edgedistance=12pt,
   rightedge=96pt]

\setupinteractionscreen
  [option=max]

%D \macros
%D   {setupbackgrounds}
%D
%D We set the pagecolor to yellow except the part of the screen that is used to
%D display the running text. By seting the offset to 3pt the text will not touch the
%D yellow parts. We do not set the depth.

\setupbackgrounds
  [page]
  [background=color,
   backgroundcolor=BackgroundColor]

\setupbackgrounds
  [text][text]
  [background=color,
   backgroundcolor=white,
   backgroundoffset=3pt]

%D I considered the next setup too, but finaly decided to
%D comment it out.
%D
%D \starttyping
%D \setupbackgrounds
%D   [bottom][text]
%D   [frame=on,
%D    framecolor=white]
%D \stoptyping

%D \macros
%D   {setupinteraction}
%D
%D We did not enable interactive text support yet, so let's do that now. We force
%D page reference to circumvent problems with named destinations in buggy viewers.

\setupinteraction
  [page=yes,
   color=InteractionColor,
   contrastcolor=ContrastColor,
   menu=on,
   state=start]

%D \macros
%D   {setupinteractionmenu,startinteractionmenu}
%D
%D At the bottom of the screen we show two navigational bars. At the left we show
%D the subpage bar, at the right we use a non default backward|/|forward bar.

\setupinteractionmenu
  [bottom]
  [leftoffset=3pt,
   rightoffset=3pt]

\startinteractionmenu[bottom]
    \startcom \InteractionBar     \stopcom
    \hfill
    \startcom \InteractionButtons \stopcom
\stopinteractionmenu

%D \macros
%D   {interactionbar}
%D
%D The left bar gets a white border (on the yellow background). Because we don't
%D want to typeset an empty frame when no subpage bar is shown, we check for the
%D number of subpages.

\unexpanded\def\InteractionBar
  {\ifnum\nofsubpages>\plusone
     \framed
       [framecolor=white,
        rulethickness=1pt,
        height=\bottomheight,
        strut=no]
       {\interactionbar[alternative=f,width=.5\makeupwidth,height=1ex]}
   \fi}

%D \macros
%D   {setupinteractionbar, interactionbuttons}
%D
%D The right hand buttons enable us to jump backward and forward, as well as to the
%D previous and next jump. We also enable to close the presentation.

\setupinteractionbar
  [framecolor=white,
   rulethickness=1pt,
   height=\bottomheight,
   strut=no]

\unexpanded\def\InteractionButtons
  {\interactionbuttons
     [width=15em,
      framecolor=white,
      rulethickness=1pt,
      height=\bottomheight,
      strut=no,
      distance=.5em]
     [PreviousJump,NextJump,
      firstpage,
      firstsubpage,previouspage,nextpage,lastsubpage,
      lastpage,
      CloseDocument]}

%D \macros
%D  {StartTitlePage, TitlePage}
%D
%D The titlepage is rather simple and can be typeset in two ways:
%D
%D \starttyping
%D \StartTitlePage
%D text \\ text \\ text
%D \StopTitlepage
%D \stoptyping
%D
%D or more straightforward:
%D
%D \starttyping
%D \TitlePage{text\\text\\text}
%D \stoptyping
%D
%D The first alternative can be used for more complicated title pages.

\unexpanded\def\StartTitlePage
  {\startstandardmakeup
   \bfd
   \setupinterlinespace
   \setupalign[middle]
   \vfil
   \enforced\let\\\vfil}

\unexpanded\def\StopTitlePage
  {\vfil\vfil\vfil
   \stopstandardmakeup}

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

%D \macros
%D   {TitlePage, Topics, Topic, Subject}
%D
%D A presentation after loading this module looks like:
%D
%D \starttyping
%D \TitlePage {About Whatever\\Topics}
%D
%D \Topics {Todays Talk}
%D
%D \Topic {Some topic}
%D
%D \Subject {Alfa}
%D
%D .....
%D
%D \Subject {Beta}
%D
%D .....
%D \stoptyping

%D \macros
%D   {definehead}
%D
%D The commands \type{\Topic} and \type{\Subject} are defined as copies of head. We
%D use \type{\Nopic} for internal purposes.

\definehead [Topic]   [chapter]
\definehead [Subject] [section]

\definehead [Nopic]   [title]

%D \macros
%D   {setuphead}
%D
%D Because chapters and sections do not make sense in presentations, we use our own
%D command for typesetting the titles. Sectionnumbers are of course hidden from
%D viewing. Each topic is followed by a list of subjects that belong to the topic.

\setuphead
  [Topic,Nopic,Subject]
  [command=\HeadLine,
   page=yes,
   style=\bfb,
   after=\blank,
   sectionnumber=no]

\setuphead
  [Topic]
  [after=\PlaceSubjectList]

\setuphead
  [Subject]
  [continue=no]

%D \macros
%D   {framed, midalined}
%D
%D The command used to typeset the head lines is rather simple. We just center the
%D framed title. The frame macro optimizes the alignment and at the same time
%D enables us to typeset a nice colored rule.

\unexpanded\def\HeadLine#1#2%
  {\midaligned
     {\framed
        [framecolor=BackgroundColor,
         rulethickness=1pt,
         width=.8\hsize,
         align=middle,
         strut=no]
        {#2}}}

%D \macros
%D   {setuplist}
%D
%D The subject list is automatically placed. We center each subject line by using
%D one of the default alternatives (g). We could have said:
%D
%D \starttyping
%D \setuplist
%D   [Subject]
%D   [alternative=none,
%D    command=\SubjectListLine,
%D    interaction=all]
%D
%D \def\SubjectListLine#1#2#3%
%D   {\midaligned{#2}}
%D \stoptyping
%D
%D But why should we complicate things when we can use alternative~\type{g}. The
%D test is only needed if one does not automatically goes a new page with each
%D subject.

\unexpanded\def\PlaceSubjectList
  {\blank
   \determinelistcharacteristics[Subject]
   \doifmode{*list}{\placelist[Subject]}}

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

% %D \macros
% %D   {setuptexttexts}
% %D
% %D The topics will be listed in the right edge, using:
%
% \setuptexttexts
%   [edge]
%   [][\TopicList]

%D \macros
%D   {setuplist, placelist,startinteractionmenu}
%D
%D The actual topic list is typeset using a \type{\vbox}. We have to specify
%D \type{criteriumcriterium=all} because otherwise no list will be typeset. (By
%D default lists are typeset locally.)

\startinteractionmenu[right]
  \placelist
    [Topic]
    [alternative=f, % command, % none,
     maxwidth=\hsize,
     width=\hsize,
     offset=0pt,
     criterium=all,
     align=left,
     style=\smallbodyfont\bfx]
\stopinteractionmenu

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

\unexpanded\def\Subjects
  {}

%D \macros
%D   {setupbackgrounds, overlaybutton}
%D
%D During a presentation, we want to use the cursor to point to parts of the text.
%D Furthermore we want to be able to jump to the next page, without the need to move
%D the cursor on buttons. Therefore we make the text part of the screen into an
%D invisible button.
%D
%D In \MKII\ we put a button in he texttextsm here we just use an extra background.

\defineoverlay[nextpage][\overlaybutton{nextpage}]

\setupbackgrounds
  [text][text]
  [background={color,nextpage}]

%D \macros
%D   {setupsubpagenumber}
%D
%D The left bottom navigation bar shows the subpages, which will be counted by text.
%D One can change this in the preentation itself by saying \type {[way=byTopic]}.

\setupsubpagenumber
  [way=bytext, % byTopic,
   state=start]

\stopmodule

\continueifinputfile{s-present-original.mkiv}

\usemodule[present-common]

\inputpresentationfile{examples/present-original-001.tex}
