%D \module
%D   [      file=s-present-green, % was s-pre-02
%D        version=1998.04.21,
%D          title=\CONTEXT\ Style File,
%D       subtitle=Presentation Environment Green,
%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.

\startmodule[present-green]

%D Here is another original presentation style, actually the second one we made.
%D Not much adaption was needed for \MKIV.

\usemodule[pre-general]

%D \macros
%D   {setupbodyfont, switchtobodyfont, setuplayout}
%D
%D At \PRAGMA\ we prefer using the Lucida Bright fonts, but one can of course load
%D another typeface.

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

\setuplayout
  [style=smallbodyfont]

%D \macros
%D   {setuppapersize, setuplayout}
%D
%D The papersize suits the screen dimensions. The layout is rather simple. We use
%D the whole width of the screen and only have navigational tools at the bottom of
%D the screen.

\setuppapersize
  [S6][S6]

\setuplayout
  [backspace=1cm,
   topspace=1cm,
   margin=0pt,
   header=0pt,
   footer=0pt,
   bottomdistance=.875cm,
   bottom=1cm,
   width=fit,
   height=fit]

%D \macros
%D   {setupwhitespace, setuptyping}
%D
%D We don't have much height, so we use a more cramped spacing. Verbatim text looks
%D better when indented.

\setupwhitespace
  [medium]

\setuptyping
  [margin=standard]

%D \macros
%D   {definecolor}
%D
%D Of course we enable color. We define some logical colors, of which most default
%D to the same green shade.

\definecolor [BackgroundColor] [r=.8, g=.8, b=.8]
\definecolor [OrnamentColor]   [r= 0, g=.7, b=.4]

%D \macros
%D   {setupinteraction, setupinteractionscreen}
%D
%D We still have to enable interaction mode. We go full screen!

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

\setupinteractionscreen
  [option=max,
   width=fit,
   height=fit]

%D \macros
%D   {setupitemize}
%D
%D And why not bring some color in itemizations too?

\setupitemize
  [color=OrnamentColor]

%D \macros
%D   {defineoverlay, setupbackgrounds}
%D
%D The navigational elements and the backgrounds are provided by \METAPOST.

\startuniqueMPgraphic{PageBackground}
    fill unitsquare
        xyscaled(OverlayWidth,OverlayHeight)
        withcolor OverlayColor ;
    draw unitsquare
        xyscaled(OverlayWidth,OverlayHeight)
        enlarged (-2*OverlayLineWidth)
        withpen pencircle scaled OverlayLineWidth
        withcolor OverlayLineColor ;
\stopuniqueMPgraphic

\defineoverlay
  [PageBackground]
  [\uniqueMPgraphic{PageBackground}]

\setupbackgrounds
  [page]
  [background=PageBackground,
   backgroundcolor=BackgroundColor,
   rulethickness=.125cm,
   framecolor=OrnamentColor]

%D \macros
%D   {setuptexttexts}
%D
%D By clicking on the text area, one goes to the next page. We hook this feature
%D into the text backgrounds.

\startuniqueMPgraphic{TextBackground}
    draw unitsquare
        xyscaled(OverlayWidth,OverlayHeight)
        enlarged (4*OverlayLineWidth)
        withpen pencircle scaled OverlayLineWidth
        withcolor OverlayLineColor ;
\stopuniqueMPgraphic

\defineoverlay
  [TextBackground]
  [\uniqueMPgraphic{TextBackground}]

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

\setupbackgrounds
  [text]
  [background={TextBackground,NextPage},
   backgroundcolor=BackgroundColor,
   rulethickness=.0625cm,
   framecolor=OrnamentColor]

%D \macros
%D   {setupinteractionmenu,startinteractionmenu}
%D
%D At the bottom of the screen, we show three buttons. These direct us to the
%D previous or next jump or exit the document.

\setupMPvariables[RightArrow][height=\bottomheight]
\setupMPvariables[LeftArrow] [height=\bottomheight]
\setupMPvariables[Circle]    [height=\bottomheight]
\setupMPvariables[UpArrow]   [height=\bottomheight]

\startuniqueMPgraphic{RightArrow}{height}
    fill righttriangle xysized(\MPvar{height},\MPvar{height})
        withpen pencircle scaled (\MPvar{height}/5)
        withcolor "OrnamentColor" ;
\stopuniqueMPgraphic

\startuniqueMPgraphic{LeftArrow}{height}
    fill lefttriangle xysized(\MPvar{height},\MPvar{height})
        withpen pencircle scaled (\MPvar{height}/5)
        withcolor "OrnamentColor" ;
\stopuniqueMPgraphic

\startuniqueMPgraphic{Circle}{height}
    fill fullcircle sized \MPvar{height}
        withpen pencircle scaled (\MPvar{height}/5)
        withcolor "OrnamentColor" ;
\stopuniqueMPgraphic

\startuniqueMPgraphic{UpArrow}{height}
    fill uptriangle xysized(\MPvar{height},\MPvar{height})
        withpen pencircle scaled (\MPvar{height}/5)
        withcolor "OrnamentColor" ;
\stopuniqueMPgraphic

\setupinteractionmenu
  [bottom]
  [state=start,
   frame=off,
   width=.3\textwidth,
   height=\bottomheight]

\setupinteraction
  [menu=on]

\def\WhateverButton
  {\doifreferencefoundelse{Whatever}
     {\raw [Whatever] \uniqueMPgraphic{UpArrow} \\}
     {}}

\startinteractionmenu[bottom]
  \but [Topics]                                     \\ % secret button
  \hfill
  \WhateverButton                                      % user specific
  \kern2\bottomheight
  \raw [previouspage]  \uniqueMPgraphic{LeftArrow}  \\
  \kern.5\bottomheight
  \raw [CloseDocument] \uniqueMPgraphic{Circle}     \\
  \kern.5\bottomheight
  \raw [nextpage]      \uniqueMPgraphic{RightArrow} \\
  \kern.5\bottomheight
\stopinteractionmenu

%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 .....
%D
%D \Topic {Next Topic}
%D
%D .....
%D \stoptyping

%D \macros
%D  {StartTitlePage, TitlePage}
%D
%D The titlepage is rather simple and can be typeset in two
%D ways:
%D
%D \starttyping
%D \StartTitlePage
%D text \\ text \\ text
%D \StopTitlepage
%D \stoptyping
%D
%D or as one||liner:
%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   {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 We use our own command for typesetting the titles. We hide sectionnumbers from
%D viewing. Each topic is followed by a list of subjects that belong to the topic.

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

\setuphead
  [Subject]
  [after=\blank,
   number=no,
   page=yes,
   continue=no,
   style=\tfa]

%D \macros
%D   {setuplist}
%D
%D When found, the subject list is automatically placed after the topic head.

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

\setuplist
  [Topic]
  [criterium=all]

\unexpanded\def\Topics#1%
  {\determinelistcharacteristics[Topic]
   \doifmode{*list}
     {\Nopic[Topics]{#1}
      \startcolumns
      \placelist[Topic]
      \stopcolumns}}

\setuplist
  [Subject]
  [criterium=Topic]

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

\setuphead
  [Topic]
  [after={\blank[3*medium]\Subjects}]

\stopmodule

\continueifinputfile{s-present-green.mkiv}

\usemodule[present-common]

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