%D \module
%D   [      file=simpleslides-t-RainbowStripe,
%D        version=2022.07.13,
%D          title=\CONTEXT\ Style File,
%D       subtitle=Presentation Module RainbowStripe,
%D         author=Aditya Mahajan and Thomas A. Schmitz,
%D           date=\currentdate,
%D      copyright={Aditya Mahajan and Thomas A. Schmitz}]
%C
%C Copyright 2007 Aditya Mahajan and Thomas A. Schmitz
%C This file may be distributed under the GNU General Public License v. 2.0.

%D This file provides the \quotation{RainbowStripe} style for the presentation
%D module. It is loaded at runtime.

\writestatus{simpleslides}{loading RainbowStripe style}

\startmodule[simpleslides-s-RainbowStripe]

\unprotect

%D First, we provide the page layout.

\setuplayout [width=fit,
              margin=1.5cm,
              height=fit,
              header=11mm,
              footer=0cm,
              topspace=15mm,
              backspace=2cm,
              location=singlesided]

\setuplayout [simpleslides:layout:horizontal][header=11mm]
\setuplayout [simpleslides:layout:vertical]  [header=0mm]
\setuplayout [simpleslides:layout:title]     [header=0mm]


%D These macros are used for placing figures/pictures:

\define\NormalHeight            {\textheight}
\define\NormalWidth             {.476\textwidth}
\define\PictureFrameHeight      {\textheight}
\define\PictureFrameWidth       {.476\textwidth}

\setuplayer
  [simpleslides:layer:slidetitle]
    [y=12mm,
     x=20mm]

%D We define our colorscheme:

\definecolor [simpleslides:backgroundcolor]	       [s=.88]
\definecolor [simpleslides:itemize:color]              [s=0]
\definecolor [simpleslides:rainbowone]                 [r=.5,g=0,b=.5]
\definecolor [simpleslides:rainbowtwo] 	               [b=1]
\definecolor [simpleslides:rainbowthree]               [g=1,b=1]
\definecolor [simpleslides:rainbowfour]                [g=1]
\definecolor [simpleslides:rainbowfive]                [r=1,g=1]
\definecolor [simpleslides:rainbowsix]                 [r=1]

%D In a first attempt to achieve the rainbow effect, I produced the rainbow
%D background with asymptote and then converted it to a pdf file which was then
%D used as a background. In that case, it was necessary to instruct \CONTEXT\
%D to look in the default \TeX\ input paths for figures. The background spans
%D the entire height of the page and the width of the text area; the gray
%D background was then calculated so that the two stripes at the top and at the
%D bottom were left unfilled so the rainbow background would then be visible.
%D Here is the code:

%\setupexternalfigures[location={global}]

%\defineoverlay[rainb][{\externalfigure[rainbow.pdf][width=1.05\textwidth,height=1.4\textheight]}]

% \startuniqueMPgraphic{gray}
% StartPage ;
% pair zf[] ;
% path gr[] ;
% numeric a; a = 2cm ;
% numeric b; b = 0.8cm ;
% z.f1 = ulcorner Page shifted (a,0) ;
% z.f2 = urcorner Page shifted (-a,0) ;
% z.f3 = lrcorner Page shifted (-a,0) ;
% z.f4 = llcorner Page shifted (a,0) ;
% z.f5 = z.f1 shifted (0,-b) ;
% z.f6 = z.f2 shifted (0,-b) ;
% z.f7 = z.f3 shifted (0,b) ;
% z.f8 = z.f4 shifted (0,b) ;
% z.f9 = z.f5 shifted (0,-b) ;
% z.f10 = z.f6 shifted (0,-b) ;
% z.f11 = z.f7 shifted (0,b) ;
% z.f12 = z.f8 shifted (0,b) ;
% gr[1] = ulcorner Page -- urcorner Page -- lrcorner Page -- llcorner Page -- z.f8 -- z.f7 -- z.f6 -- z.f5 -- z.f4 -- llcorner Page -- cycle ;
% gr[2] = z.f9 -- z.f10 -- z.f11 -- z.f12 -- cycle ;
% gr[2] := gr[2] enlarged (.5cm,0cm) ;
% fill gr[1] withcolor \MPcolor{a} ;
% fill gr[2] withcolor \MPcolor{a} ;
% StopPage ;
% \stopuniqueMPgraphic

%D However, it seemed more portable to let Metapost calculate the background.
%D The rainbow effect takes some lines of code, but it's not too bad:

\startuniqueMPgraphic{simpleslides:MP:horizontal}
StartPage ;
pair zf[] ;
fill Page withcolor \MPcolor{simpleslides:backgroundcolor} ;
path gr[] ;
numeric a; a = 2cm ;
numeric b; b = 0.4cm ;
numeric c; c = 0.7cm ;
z.f1 = ulcorner Page shifted (a,-c) ;
z.f2 = urcorner Page shifted (-a,-c) ;
z.f3 = z.f2 shifted (0,-b) ;
z.f4 = z.f1 shifted (0,-b) ;
gr[1] = z.f1 -- z.f2 ;
gr[2] = z.f4 -- z.f3 ;
z.f5 = point .2 along gr[1] ;
z.f6 = point .2 along gr[2] ;
z.f7 = point .4 along gr[1] ;
z.f8 = point .4 along gr[2] ;
z.f9 = point .6 along gr[1] ;
z.f10 = point .6 along gr[2] ;
z.f11 = point .8 along gr[1] ;
z.f12 = point .8 along gr[2] ;
gr[3] = z.f1 -- z.f5 -- z.f6 -- z.f4 -- cycle ;
gr[4] = z.f7 -- z.f5 -- z.f6 -- z.f8 -- cycle ;
gr[4] := gr[4] enlarged (.02cm,0) ;
gr[5] = z.f9 -- z.f7 -- z.f8 -- z.f10 -- cycle ;
gr[5] := gr[5] enlarged (.02cm,0) ;
gr[6] = z.f11 -- z.f9 -- z.f10 -- z.f12 -- cycle ;
gr[6] := gr[6] enlarged (.02cm,0) ;
gr[7] = z.f11 -- z.f2 -- z.f3 -- z.f12 -- cycle ;
linear_shade(gr[3],0,\MPcolor{simpleslides:rainbowone},\MPcolor{simpleslides:rainbowtwo}) ;
linear_shade(gr[4],0,\MPcolor{simpleslides:rainbowtwo},\MPcolor{simpleslides:rainbowthree}) ;
linear_shade(gr[5],0,\MPcolor{simpleslides:rainbowthree},\MPcolor{simpleslides:rainbowfour}) ;
linear_shade(gr[6],0,\MPcolor{simpleslides:rainbowfour},\MPcolor{simpleslides:rainbowfive}) ;
linear_shade(gr[7],0,\MPcolor{simpleslides:rainbowfive},\MPcolor{simpleslides:rainbowsix}) ;
z.f21 = llcorner Page shifted (a,c) ;
z.f22 = lrcorner Page shifted (-a,c) ;
z.f23 = z.f22 shifted (0,b) ;
z.f24 = z.f21 shifted (0,b) ;
gr[21] = z.f21 -- z.f22 ;
gr[22] = z.f24 -- z.f23 ;
z.f25 = point .2 along gr[21] ;
z.f26 = point .2 along gr[22] ;
z.f27 = point .4 along gr[21] ;
z.f28 = point .4 along gr[22] ;
z.f29 = point .6 along gr[21] ;
z.f30 = point .6 along gr[22] ;
z.f31 = point .8 along gr[21] ;
z.f32 = point .8 along gr[22] ;
gr[23] = z.f21 -- z.f25 -- z.f26 -- z.f24 -- cycle ;
gr[24] = z.f27 -- z.f25 -- z.f26 -- z.f28 -- cycle ;
gr[24] := gr[24] enlarged (.02cm,0) ;
gr[25] = z.f29 -- z.f27 -- z.f28 -- z.f30 -- cycle ;
gr[25] := gr[25] enlarged (.02cm,0) ;
gr[26] = z.f31 -- z.f29 -- z.f30 -- z.f32 -- cycle ;
gr[26] := gr[26] enlarged (.02cm,0) ;
gr[27] = z.f31 -- z.f22 -- z.f23 -- z.f32 -- cycle ;
linear_shade(gr[23],0,\MPcolor{simpleslides:rainbowone},\MPcolor{simpleslides:rainbowtwo}) ;
linear_shade(gr[24],0,\MPcolor{simpleslides:rainbowtwo},\MPcolor{simpleslides:rainbowthree}) ;
linear_shade(gr[25],0,\MPcolor{simpleslides:rainbowthree},\MPcolor{simpleslides:rainbowfour}) ;
linear_shade(gr[26],0,\MPcolor{simpleslides:rainbowfour},\MPcolor{simpleslides:rainbowfive}) ;
linear_shade(gr[27],0,\MPcolor{simpleslides:rainbowfive},\MPcolor{simpleslides:rainbowsix}) ;
StopPage ;
\stopuniqueMPgraphic

\startuseMPgraphic{simpleslides:MP:ornament}
StartPage
path p[] ;
p[1] := unitsquare xyscaled(MakeupWidth,.4cm) shifted (2cm,0.7cm) ;
numeric i;
if NOfPages <= 1 :
  i = (RealPageNumber - 1) ;
else :
  i = (RealPageNumber - 1)/(NOfPages - 1) ;
fi ;
p[2] = ulcorner p[1] -- urcorner p[1] ;
p[3] = llcorner p[1] -- lrcorner p[1] ;
pair o[] ;
o[1] := point i along p[2] ;
o[2] := point i along p[3] ;
p[4] = o[1] -- o[2] ;
p[4] := p[4] enlarged (0,-1pt) ;
pickup pensquare scaled 2pt ;
draw p[4] ;
StopPage
\stopuseMPgraphic

%D We define these backgrounds as overlays:

\defineoverlay
  [simpleslides:background:horizontal]
  [\useMPgraphic{simpleslides:MP:horizontal}]

\defineoverlay
  [simpleslides:background:vertical]
  [\useMPgraphic{simpleslides:MP:horizontal}]

\defineoverlay
  [simpleslides:background:title]
  [\useMPgraphic{simpleslides:MP:horizontal}]

\defineoverlay
  [simpleslides:background:ornament]
  [\useMPgraphic{simpleslides:MP:ornament}]

%D We set up our SlideTitles:

\setupSlideTitle
   [\c!after=,
    \c!alternative=layer,
    \c!width=\textwidth,
    \c!align=\v!center,
    \c!height=1.5cm]

%D The symbol for the first level of itemizations.

\definesymbol[1][\useMPgraphic{simpleslides:itemize:square}]
\setupitemize[1][inmargin]

\protect
\stopmodule

\endinput
