% \iffalse
%<*color>
% \fi\file{theme/bs/beamercolorthemefibeamer-bs.sty}
% This is the base color theme for presentations written at the
% Masaryk University in Brno.
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fibeamer/theme/bs/%
  beamercolorthemefibeamer-bs}[2016/05/06]
%    \end{macrocode}
% \begin{macro}{\darkframes}
% The |darkframes| environment switches the color definitions to
% render the enclosed frames in dark colors. This is a dummy
% definition, which will be overridden by the subsequently loaded
% color theme in the presentation mode.
%    \begin{macrocode}
\newenvironment{darkframes}{}{}
%    \end{macrocode}
% \end{macro}
% The rest of the theme will be ignored outside the presentation
% mode.
%    \begin{macrocode}
\mode<presentation>
%    \end{macrocode}
% The theme loads the following packages, which will be used by the
% subsequently loaded color theme specific to a faculty:
% \begin{itemize}
%   \item\textsf{listings} -- This package is used for code
%     listings. The subsequently loaded color theme will specify
%     source code coloring for the package.
%   \item\textsf{ifthen} -- This package is used to construct
%     compound conditionals.
%   \item\textsf{tikz} -- This package is used to create gradient
%     background for dark slides.
% \end{itemize}
%    \begin{macrocode}
  \RequirePackage{listings}
  \RequirePackage{ifthen}
  \RequirePackage{tikz}
%    \end{macrocode}
% \begin{macro}{\iffibeamer@dark}
% The |\iffibeamer@dark| conditional will be switched on and off by
% the subsequently loaded color theme based on whether or not the
% given frame is being typeset in light or dark colors. This
% information will be used by outer themes to insert the correct
% logo into each frame.
%    \begin{macrocode}
  \newif\iffibeamer@dark\fibeamer@darkfalse
%    \end{macrocode}
% \end{macro}
% A frame that is either title or dark, as specified by the value
% of the |\iffibeamer@dark| conditional, will have a gradient
% background as specified by the |fibeamer@dark@backgroundInner|
% and |fibeamer@light@backgroundOuter| colors that shall be defined
% by the subsequently loaded color theme.
%
% A frame that is neither title nor dark, as specified by the value
% of the |\iffibeamer@dark| conditional, will have a gradient
% background as specified by the |fibeamer@light@backgroundInner|
% and |fibeamer@light@backgroundOuter| colors that shall be defined
% by the subsequently loaded color theme.
%    \begin{macrocode}
  \defbeamertemplate*{background canvas}{fibeamer}{%
    \ifthenelse{%
      \boolean{fibeamer@dark} \OR \c@framenumber=0
    }{%
      \begin{tikzpicture}
        \clip (0,\fibeamer@lengths@clipbottom) rectangle
          (\paperwidth,\fibeamer@lengths@cliptop);
        \path [inner color = fibeamer@dark@backgroundInner,
               outer color = fibeamer@dark@backgroundOuter]
          (0,0) rectangle (\paperwidth,\paperwidth);
      \end{tikzpicture}
    }{%
      \begin{tikzpicture}
        \clip (0,\fibeamer@lengths@clipbottom) rectangle
          (\paperwidth,\fibeamer@lengths@cliptop);
        \path [inner color = fibeamer@light@backgroundInner,
               outer color = fibeamer@light@backgroundOuter]
          (0,0) rectangle (\paperwidth,\paperwidth);
      \end{tikzpicture}
    }}
%    \end{macrocode}
% The |\qed| symbol inserted at the end of proofs will have the
% same color as the rest of the proof.
%    \begin{macrocode}
  \setbeamercolor{qed symbol}{%
    use=block body,
    fg=block body.fg,
    bg=block body.bg}
%    \end{macrocode}
% The links can be colored by the subsequently loaded color themes.
%    \begin{macrocode}
  \hypersetup{colorlinks,linkcolor=}
\mode
<all>
%    \end{macrocode}
% \iffalse
%</color>
%<*font>
% \fi\file{theme/bs/beamerfontthemefibeamer-bs.sty}
% This is the base font theme for presentations written at the
% Masaryk University in Brno. The theme has no effect outside the
% presentation mode.
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fibeamer/theme/bs/%
  beamerfontthemefibeamer-bs}[2016/01/12]
\mode<presentation>
  \setbeamerfont{normal text}{size=\normalsize}
  \setbeamerfont{title}{size=\LARGE, series=\bfseries}
  \setbeamerfont{subtitle}{parent=normal text, size=\Large}
  \setbeamerfont{frametitle}{size=\Large}
  \setbeamerfont{framesubtitle}{size=\large, shape=\itshape}
  \setbeamerfont{description item}{series=\bfseries}
  \setbeamerfont{author}{size=\large}
\mode
<all>
%    \end{macrocode}
% \iffalse
%</font>
%<*inner>
% \fi\file{theme/bs/beamerinnerthemefibeamer-bs.sty}
% This is the base inner theme for presentations written at the
% Masaryk University in Brno. The theme has no effect outside the
% presentation mode.
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fibeamer/theme/bs/%
  beamerinnerthemefibeamer-bs}[2016/01/14]
\mode<presentation>
%    \end{macrocode}
% This part of the inner theme defines the design of lists.
%    \begin{macrocode}
\defbeamertemplate*{itemize item}{fibeamer}{$\bullet$}
\defbeamertemplate*{itemize subitem}{fibeamer}{\---}
\defbeamertemplate*{itemize subsubitem}{fibeamer}{\guillemotright}
%    \end{macrocode}
% This part of the inner theme defines the design of bibliography
% items and citations.^^A
%    \begin{macrocode}
\defbeamertemplate*{bibliography item}{fibeamer}{\insertbiblabel}
\AtBeginDocument{%
  \let\fibeamer@oldcite\cite
  \def\cite#1{{%
    \usebeamercolor[fg]{item}%
    \fibeamer@oldcite{#1}}}}
%    \end{macrocode}
% This part of the inner theme defines the design of the table of
% contents.
%    \begin{macrocode}
\defbeamertemplate*{section in toc}{fibeamer}{%
  \usebeamercolor[fg]{item}%
    \inserttocsectionnumber.%
  \usebeamercolor[fg]{structure}%
  \kern1.25ex\inserttocsection\par}
\defbeamertemplate*{subsection in toc}{fibeamer}{%
  \hspace\leftmargini
  \usebeamercolor[fg]{item}%
    \inserttocsectionnumber.\inserttocsubsectionnumber%
  \usebeamercolor[fg]{structure}%
  \kern1.25ex\inserttocsubsection\par}
\defbeamertemplate*{subsubsection in toc}{fibeamer}{%
  \hspace\leftmargini
  \hspace\leftmarginii
  \usebeamercolor[fg]{item}%
    \inserttocsectionnumber.\inserttocsubsectionnumber.%
    \inserttocsubsubsectionnumber%
  \usebeamercolor[fg]{structure}%
  \kern1.25ex\inserttocsubsubsection\par}
\mode
<all>
%    \end{macrocode}
% \iffalse
%</inner>
%<*outer>
% \fi\file{theme/bs/beamerouterthemefibeamer-bs.sty}
% This is the base outer theme for presentations written at the
% Masaryk University in Brno. The theme has no effect outside the
% presentation mode.
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fibeamer/theme/bs/%
  beamerouterthemefibeamer-bs}[2016/01/12]
\mode<presentation>
%    \end{macrocode}
% The theme uses the following packages:
% \begin{itemize}
%   \item\textsf{ifthen} -- This package is used to construct
%     compound conditionals.
%   \item\textsf{ifpdf} -- This package is used to check, whether
%     the document is being typeset in DVI mode. If it is, then
%     the |\pdfpagewidth| and |\pdfpageheight| dimensions are
%     defined, so that positioning in TikZ works correctly.
%     \changes{v1.0.1}{2015/10/03}{Added DVI output support. [VN]}
%     ^^A <http://tex.stackexchange.com/a/246631/70941>
%   \item\textsf{tikz} -- This package is used to position the
%     logo and the frame number on a frame.
%   \item\textsf{pgfcore} -- This package is used to draw the
%     dashed line at the title frame.
% \end{itemize}
%    \begin{macrocode}
  \RequirePackage{ifthen}
  \RequirePackage{ifpdf}
  \ifpdf\else
    \@ifundefined{pdfpagewidth}{\newdimen\pdfpagewidth}{}
    \@ifundefined{pdfpageheight}{\newdimen\pdfpageheight}{}
    \pdfpagewidth=\paperwidth
    \pdfpageheight=\paperheight
  \fi
  \RequirePackage{tikz}
  \RequirePackage{pgfcore}
%    \end{macrocode}
% This part of the outer theme defines the geometry of the frames
% along with other dimensions.
%    \begin{macrocode}
  \newlength\fibeamer@lengths@baseunit
  \fibeamer@lengths@baseunit=3.75mm
  % The footer padding
  \newlength\fibeamer@lengths@footerpad
  \setlength\fibeamer@lengths@footerpad{%
    \fibeamer@lengths@baseunit}
  % The side margins
  \newlength\fibeamer@lengths@margin
  \setlength\fibeamer@lengths@margin{%
    3\fibeamer@lengths@baseunit}
  \setbeamersize{
    text margin left=\fibeamer@lengths@margin,
    text margin right=\fibeamer@lengths@margin}
  % The upper margin
  \newlength\fibeamer@lengths@titleline
  \setlength\fibeamer@lengths@titleline{%
    3\fibeamer@lengths@baseunit}
  % The background clipping
  \newlength\fibeamer@lengths@clipbottom
  \setlength\fibeamer@lengths@clipbottom\paperwidth
  \addtolength\fibeamer@lengths@clipbottom{-\paperheight}
  \setlength\fibeamer@lengths@clipbottom{%
    0.5\fibeamer@lengths@clipbottom}
  \newlength\fibeamer@lengths@cliptop
  \setlength\fibeamer@lengths@cliptop\paperwidth
  \addtolength\fibeamer@lengths@cliptop{%
    -\fibeamer@lengths@clipbottom}

  % The logo size
  \newlength\fibeamer@lengths@logowidth
  \setlength\fibeamer@lengths@logowidth{%
    10.5\fibeamer@lengths@baseunit}
  \newlength\fibeamer@lengths@logoheight
  \setlength\fibeamer@lengths@logoheight{%
    4,37\fibeamer@lengths@baseunit}
%    \end{macrocode}
% The outer theme completely culls the bottom navigation.
%    \begin{macrocode}
  \defbeamertemplate*{navigation symbols}{fibeamer}{}
%    \end{macrocode}
% The outer theme also culls the headline.
%    \begin{macrocode}
  \defbeamertemplate*{headline}{fibeamer}{}
%    \end{macrocode}
% The frame title.
%    \begin{macrocode}
  \defbeamertemplate*{frametitle}{fibeamer}{%
    \vskip-1em % Align the text with the top border
    \vskip\fibeamer@lengths@titleline
    \usebeamercolor[fg]{frametitle}%
    \usebeamerfont{frametitle}%
      \insertframetitle\par%
    \usebeamercolor[fg]{framesubtitle}%
    \usebeamerfont{framesubtitle}%
      \insertframesubtitle}
%    \end{macrocode}
% The footline contains the frame number. It is flushed right.
%    \begin{macrocode}
  \defbeamertemplate*{footline}{fibeamer}{%
    \ifnum\c@framenumber=0\else%
      \begin{tikzpicture}[overlay]
        \node[anchor=south east,
          yshift=\fibeamer@lengths@footerpad,
          xshift=-\fibeamer@lengths@footerpad] at
          (current page.south east) {
            \usebeamercolor[fg]{framenumber}%
            \usebeamerfont{framenumber}%
            \insertframenumber/\inserttotalframenumber};
      \end{tikzpicture}
    \fi}
%    \end{macrocode}
% The title frame contains the main logo, the |\title|, the
% |\subtitle|, and the |\author|.
%    \begin{macrocode}
  \defbeamertemplate*{title page}{fibeamer}{%

    \begin{darkframes}

    % This is slide 0
    \setcounter{framenumber}{0}

    % Input the university logo
    \begin{tikzpicture}[
      remember picture,
      overlay,
      xshift=0.5\fibeamer@lengths@logowidth,
      yshift=0.5\fibeamer@lengths@logoheight
    ]
      \node at (0,0) {
        \fibeamer@includeLogo[
          width=\fibeamer@lengths@logowidth,
          height=\fibeamer@lengths@logoheight
        ]};
    \end{tikzpicture}

    % Input the title
    \usebeamerfont{title}%
    \usebeamercolor[fg]{title}%
    \begin{minipage}[b][2\baselineskip][b]{\textwidth}%
      \raggedright\inserttitle
    \end{minipage}
    \vskip-.5\baselineskip

    % Input the dashed line
    \begin{pgfpicture}
      \pgfsetlinewidth{2pt}
      \pgfsetroundcap
      \pgfsetdash{{0pt}{4pt}}{0cm}

      \pgfpathmoveto{\pgfpoint{0mm}{0mm}}
      \pgfpathlineto{\pgfpoint{\textwidth}{0mm}}

      \pgfusepath{stroke}
    \end{pgfpicture}
    \vfill

    % Input the subtitle
    \usebeamerfont{subtitle}%
    \usebeamercolor[fg]{subtitle}%
    \begin{minipage}{\textwidth}
      \raggedright%
      \insertsubtitle%
    \end{minipage}\vskip.25\baselineskip

    % Input the author's name
    \usebeamerfont{author}%
    \usebeamercolor[fg]{author}%
    \begin{minipage}{\textwidth}
      \raggedright%
      \insertauthor%
    \end{minipage}
    \end{darkframes}}

\mode
<all>
%    \end{macrocode}
% \iffalse
%</outer>
% \fi
