%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% $Id$
% 
% a beamer style for i4
%
% Copyright 2009 by Daniel Lohmann (dl@cs.fau.de)
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\mode<presentation>

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% color setup 
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \definecolor{i4red}{rgb}{0.69,0.11,0.18}
  \definecolor{i4blue}{rgb}{0.0,0.4,0.62}
  \definecolor{i4gray}{rgb}{0.827,0.827,0.827}
  \definecolor{darkred}{rgb}{0.8,0,0}
  
  % the "example green" beamer defines in the default colortheme
  \colorlet{beamergreen}{green!50!black}

  \setbeamercolor{structure}{fg=i4blue,bg={}}
  \setbeamercolor{section in toc}{fg=black,bg={}}
  \setbeamercolor{subsection in toc}{fg=black,bg={}}
  \setbeamercolor{alerted text}{fg=i4red}
  \setbeamercolor*{palette primary}{fg=black,bg=white}
  \setbeamercolor*{palette secondary}{fg=i4blue,bg=white}
  \setbeamercolor*{palette tertiary}{fg=i4red,bg=white}
  \setbeamercolor*{palette quaternary}{fg=darkred,bg=gray!5!white}
  \setbeamercolor{titlelike}{parent=structure}
  \setbeamercolor{itemize subitem}{fg=i4red}
  \setbeamercolor{page number in head/foot}{fg=i4red}
  \setbeamercolor{sidebar left}{bg={}}
  \setbeamercolor{footline}{parent=structure}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% background image setup
%
% This is the real trick :-) All graphical elements of the i4-layout are just
% in the background image. To support the "plain"-option for frames, we actually
% need two different background images (and probably a third one for the title
% slide, don't know yet)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \usebackgroundtemplate{
    \ifbeamer@plainframe%
      \includegraphics[width=\paperwidth]{beamerthemei4_bgplain}%
    \else %
      \includegraphics[width=\paperwidth]{beamerthemei4_bg}
    \fi%
  }


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% enumeration style and borders setup
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \setbeamersize{sidebar width left=1.07cm}
  \setbeamersize{text margin left=0.5em}
  \setbeamersize{text margin right=3.5mm}

	% the top-level item symbol is rendered into the sidebar 
  \setbeamertemplate{itemize item}{\raise.5pt\hbox{\vrule width 1ex height 1ex}\hspace{0.5em}}
  \setbeamertemplate{itemize subitem}{\raise.5pt\hbox{\vrule width 0.8ex height 0.8ex}}
  \setbeamertemplate{itemize subsubitem}{\raise.5ex\hbox{\vrule width 1ex height 0.2ex}}
  \setbeamertemplate{headline}[default]
 
  \setlength{\labelwidth}{2em}
  \setlength{\labelsep}{0.5em}
  \setlength{\leftmargini}{0em}
  \setlength{\leftmarginii}{1em}
  \setlength{\leftmarginiii}{1em}

% the above looks nice on slides, but bad in block environments; hence we override
% beamers original block envs to modify them

  % command to be installed at the begin of every block environment
  \newcommand{\beamerblock}{
    \setbeamertemplate{itemize item}{\raise.5pt\hbox{\vrule width 0.8ex height 0.8ex}}
    \setbeamertemplate{itemize subitem}{\raise.5pt\hbox{\vrule width 0.6ex height 0.6ex}}
		\setlength{\leftmargini}{1.5em}
    \setlength{\labelsep}{0.5em}
	}

  \renewenvironment{block}[1]{%
    \begin{actionenv}%
			\beamerblock%
      \def\insertblocktitle{#1}%
      \par%
      \usebeamertemplate{block begin}}
    {\par%
      \usebeamertemplate{block end}%
    \end{actionenv}
  }
  \renewenvironment{alertblock}[1]{%
    \begin{actionenv}%
			\beamerblock%
      \def\insertblocktitle{#1}%
      \par%
      \mode<presentation>{%\usebeamerfont{block}%
        \setbeamercolor{local structure}{parent=alerted text}}%
      \usebeamertemplate{block alerted begin}}
    {\par%
      \usebeamertemplate{block alerted end}%
    \end{actionenv}
  }
  \renewenvironment{exampleblock}[1]{%
    \begin{actionenv}%
			\beamerblock%
      \def\insertblocktitle{#1}%
      \par%
      \mode<presentation>{%\usebeamerfont{block}%
        \setbeamercolor{local structure}{parent=example text}}%
      \usebeamertemplate{block example begin}}
    {\par%
      \usebeamertemplate{block example end}%
    \end{actionenv}
  }

  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% footline definitions
% 
% The footline is one of the things that are heavily customizable in beamer using
% outer themes. However, we skip (and do not support) all those fancy beamer 
% themes here and just let beamer it render as text line. This gives us full 
% control and easy adaptation, but some things (especially the vertical layout)
% remain a bit hacky :-)
%
% To provide for more easy customization within presentations, the framenumbering
% can be customized (and also locally surpressed) by overwriting the 
% macro \InsertFrameNumber
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  % default style for frame numbers 
  \def\InsertFrameNumber{\insertframenumber\,--\,\inserttotalframenumber}
  \setbeamertemplate{footline}[text line]{
    % beamer has already set footline color/font here
    %
    % use raisebox to align footline with i4logo
    \raisebox{2.5mm}{\vbox{
      % insert a strut (invisible vertical line) to prevent line breaks
      \rule{0mm}{3mm}
      % here the real content starts
      % print author and title
      \insertshortauthor
      \hspace{2em}
      \insertshorttitle
      % if a shortdate is given, print it in brackets after the title 
      \ifx\insertshortdate\@empty
      \else
        ~(\insertshortdate)
      \fi
      \hspace{2em}
      % if section/subsection are defined, print them (seperated by an em-dash)
      \ifx\insertsection\@empty%
      \else%
        \insertsection%
          \ifx\insertsubsection\@empty%
          \else%
            \,--\,\insertsubsection%
          \fi
        \fi
      % print the remaining stuff right-aligned
      \hfill
      % print page number
      {
        \usebeamercolor[fg]{page number in head/foot}\usebeamerfont{page number in head/foot}    
        \parbox[t]{0.7cm}{\centering{\InsertFrameNumber}}
      }%
    }}
  }


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% frametitle setup 
% 
% This is probably the most hacky part of i4beamer We completely overwrite the  
% code beamer uses to render the frame title, especially to get the vertical
% spacing and alignment right, so it fits with the "background".
%
% The i4-Layout does not really offer space for subtitles. We support them 
% anyway by printing them right-aligned.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  \setbeamertemplate{frametitle}{
    \usebeamerfont{frametitle}\usebeamercolor[fg]{frametitle}
    \insertframetitle\strut
    \ifx\insertframesubtitle\@empty
    \else {%
      \usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}
      \hfill\insertframesubtitle\strut
    }%
    \fi
    \par\vskip2pt
  }

\mode
<all>
