%% 
%%  This is file `beamerouterthemeUR.sty' version 2.0 (2017/04/05),
%%	it is part of
%%  urcls -- Corporate Design for the University of Regensburg
%% ----------------------------------------------------------------------------
%%
%%  Copyright (C) 2014--2017 by Marei Peischl <TeX@mareipeischl.de>
%%
%% ----------------------------------------------------------------------------
%%  License information
%% ----------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is Marei Peischl.
%%
%% ============================================================================
%%
%%  Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
%%  in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
%%  Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
%%  Version 1.3c oder neuer ist Teil aller LaTeX-Distributionen ab 2005/12/01. 
%%  Dieses Werk hat den LPPL-Verwaltungs-Status "maintained". 
%%  Die Verwaltung liegt aktuell bei der Autorin, Marei Peischl.
%%
%% ----------------------------------------------------------------------------
%%  End of license information
%% ----------------------------------------------------------------------------
%%

\NeedsTeXFormat{LaTeX2e}
\def\fileversion{2.0}
\def\filedate{2017/04/05}

\RequirePackage{expl3}
\ProvidesExplPackage{beamerouterthemeUR}{\filedate}{\fileversion}{beameroutertheme for the University of Regensburg}

\RequirePackage{URoptions}

\Define@specialopt@Module

\clist_map_inline:nn {logotext,alignwithbar,framenumber,externalize,coloredboxes,depcaps} {\UR_new@BoolOpt {#1}}

\UR@define@draftfinalkeys

\bool_new:N \g_UR@ShowHeadline_bool
\bool_new:N \g_UR@ShowHeadauthor_bool

\UR@create@ChoiceKey{headline}[true]{
	{true}{
		\bool_gset_true:N \g_UR@ShowHeadline_bool
		\bool_gset_true:N \g_UR@ShowHeadauthor_bool
		\def\UR@headline@setting{true/author}
	},
	{false}{
		\bool_gset_false:N \g_UR@ShowHeadline_bool
		\bool_gset_false:N \g_UR@ShowHeadauthor_bool
		\def\UR@headline@setting{false/empty}	
	},
	{plain}{
		\bool_gset_true:N \g_UR@ShowHeadline_bool
		\bool_gset_false:N \g_UR@ShowHeadauthor_bool
		\def\UR@headline@setting{plain/noauthor}
	},
	{default}{
		\bool_gset_true:N \g_UR@ShowHeadline_bool
		\bool_gset_true:N \g_UR@ShowHeadauthor_bool
		\def\UR@headline@setting{default (true)}
	}
}<default>

\UR_Define@Key:n {
	headline / noauthor .meta:n = {headline=plain},
	headline / empty .meta:n = {headline=false},
	headline / author .meta:n = {headline=true}
}

\UR_Define@Key:n {
	cdlayout .meta:n = {depcaps=#1,logotext=#1,alignwithbar=#1},
	cdlayout .default:n = true
}

\exp_args:Nx \ProcessKeysOptions { \@currname.\@currext }


\PassOptionsToPackage{RGB}{URcolors}
\RequirePackage{URrules}

% New Variables
%Headlineboxes
\box_new:N \g_UR@headline@author_box
\box_new:N \g_UR@headline_box
\dim_new:N \l_UR@halfradius_dim


%Additional Title Definitions

% \author command
\newcommand*{\URbeamerIgnoreMeta}[1]{\texorpdfstring{#1}{}}

\def\author{\@dblarg\UR@beamer@author}
\long\def\UR@beamer@author[#1]#2{%
	\def\insertauthor{\def\inst{\beamer@insttitle}\def\and{\beamer@andtitle}#2}%
	\def\beamer@shortauthor{#1}%
	\ifbeamer@autopdfinfo%	
	{
	\let\URbeamerIgnoreMeta\use_none:n\let\inst=\@gobble\let\thanks=\@gobble\def\and{, }
	\tl_set:Nx \l_tmpa_tl {#2}
	\tl_if_empty:NF \l_tmpa_tl  {
		\seq_set_split:NnV \l_tmpa_seq {\and} \l_tmpa_tl
		\hypersetup{pdfauthor={\seq_use:Nn \l_tmpa_seq {, }}}
		}
	}
	\fi%
}

\author{}
%end of \author command

%institude command
\def\institute{\@dblarg\beamer@institute}
\long\def\beamer@institute[#1]#2{%
	\def\beamer@temp{#2}%
	\ifx\beamer@temp\@empty
	\def\insertinstitute{}
	\else
	\def\insertinstitute{\def\inst{\beamer@instinst}\def\and{\beamer@andinst}#2}%
	\fi
	\def\beamer@shortinstitute{#1}
	\def\UR@beamer@insertinstitute{#2}}
\institute{}
%end of institute command

%\department command
\def\department{\@dblarg\UR@beamer@department}

\if_bool:N \g_UR@depcaps_bool
\RequirePackage{textcase}
\newcommand{\UR@depcaps}[1]{\MakeTextUppercase{#1}}

\long\def\UR@beamer@department[#1]#2{%
	\def\beamer@temp{#2}
	\ifx\beamer@temp\@empty
	\def\insertdepartment{}
	\else
	\def\insertdepartment{%
		\cs_set_protected:Npn \and {\newline}
		\cs_set_protected:Npn \inst ####1 {
			\beamer@instinst{####1}
		}
		\UR@depcaps{#2}
	}%
	\fi
	\def\beamer@shortdepartment{
		\let\inst\use_none:n
		\def\and{\quad}
		\UR@depcaps{#1}
	}
}

\else:
\long\def\UR@beamer@department[#1]#2{%
	\def\beamer@temp{#2}%
	\ifx\beamer@temp\@empty
	\def\insertdepartment{}
	\else
	\def\insertdepartment{\def\inst{\beamer@instinst}\def\and{\qquad}#2}%
	\fi
	\def\beamer@shortdepartment{#1}}
\fi:
\department{}

\newcommand\insertshortdepartment[1][]{%
	{%
		\let\thanks=\@gobble%
		\beamer@setupshort{#1}%
		\beamer@insertshort{\beamer@shortdepartment}%
}}
%end of \department command

% \chair command
\def\chair{\@dblarg\UR@beamer@chair}
\long\def\UR@beamer@chair[#1]#2{%
	\def\beamer@temp{#2}%
	\ifx\beamer@temp\@empty
	\def\insertchair{}
	\else
	\def\insertchair{#2}%
	\fi
	\def\beamer@shortchair{#1}}
\chair{}

\newcommand\insertshortchair[1][]{%
	{%
		\beamer@setupshort{#1}%
		\beamer@insertshort{\beamer@shortchair}%
}}
% end of \chair command

\mode<presentation>

\cs_new:Nn \UR_setup@author@headline: {
	\UR@tikzexternaldisable
	\hbox_gset:Nn \g_UR@headline@author_box {
		\begin{tikzpicture}
		\UR_beamer@headline:
		\node[anchor=north~west,inner~ysep=1.5pt, inner~xsep=0pt, outer~sep=0pt] at (grauerstreifen) {
			\parbox[t][\dimexpr3.2\UR@beamer@halfradius-3pt\relax][t]{\dimexpr\l_UR@linelength_dim-1.5pt\relax}{
				{\usebeamerfont{shortauthor}
					\insertshortauthor[width=\linewidth]\par}
				\expandafter\ifx\csname beamer@shortinstitute\endcsname\empty
				\expandafter\ifx\csname beamer@shortchair\endcsname\empty
				\else%
				{\usebeamerfont{shortchair}\insertshortchair[width=\linewidth]\par}
				\fi%
				\else%
				{\usebeamerfont{shortinstitute}\insertshortinstitute[width=\linewidth]\par}
				\fi%
				\usebeamerfont{shortdepartment}\insertshortdepartment[width=\linewidth]
			}
		};
		\useasboundingbox(0,0)rectangle(\paperwidth,-6.2\UR@beamer@halfradius);
		\end{tikzpicture}
	}
	\UR@tikzexternalenable
}



\setbeamertemplate{navigation symbols}{}

%End of additional Title definitions and adjustments


\int_while_do:nn {\l_UR@temp_int<\clist_count:N \g_UR@dep_clist} {
	\int_incr:N \l_UR@temp_int
	\bool_if:cT{g_UR@dep\int_use:N\l_UR@temp_int _bool}{\colorlet{UR@color@basic}{UR@color@\int_use:N\l_UR@temp_int}}
}

\bool_if:NTF \g_UR@coloredboxes_bool {
	\int_compare:nTF {\g_UR@dep_int =  1} {
	\int_zero:N \l_UR@temp_int
	\int_while_do:nn {\l_UR@temp_int<\clist_count:N \g_UR@dep_clist} {
		\int_incr:N \l_UR@temp_int
		\bool_if:cT{g_UR@dep\int_use:N\l_UR@temp_int _bool}{\colorlet{UR@color@basic}{UR@color@\int_use:N\l_UR@temp_int}}
		}
	}{
		\msg_new:nnn {beamerouterthemeUR}{coloredboxes_multiple}{You~ must~ not~ select~ multiple~ color~ options~ with~ coloredboxes.\\\\
			coloredboxes~ is~ only~ available~ for~ single~ color~ setup.\\\\
			Disabling~ coloredboxes.
		}
		\msg_warning:nn {beamerouterthemeUR}{coloredboxes_multiple}
		\colorlet{UR@color@basic}{UR@reingrau}
	}
	}
	{\colorlet{UR@color@basic}{UR@reingrau}}

\int_compare:nTF {\g_UR@dep_int =  1} {
\int_zero:N \l_UR@temp_int
\int_while_do:nn {\l_UR@temp_int<\clist_count:N \g_UR@dep_clist} {
	\int_incr:N \l_UR@temp_int
	\bool_if:cT{g_UR@dep\int_use:N\l_UR@temp_int _bool}{
		\colorlet{UR@color@alert}{-UR@color@\int_use:N\l_UR@temp_int}
		\colorlet{UR@color@example}{UR@color@\int_use:N\l_UR@temp_int}
	}
}
}{
\colorlet{UR@color@alert}{red}
\colorlet{UR@color@example}{green}
}

\dim_set:Nn \l_UR@halfradius_dim {.215cm}
\newlength{\UR@beamer@halfradius}
\setlength{\UR@beamer@halfradius}{\l_UR@halfradius_dim}

\UR@create@colorlinebox[3\UR@beamer@halfradius]<(\paperwidth-10\UR@beamer@halfradius)/2>{UR_beamer@headbar}

\cs_new:Nn \UR_beamer@headline:
{	
	\dim_set:Nn \l_UR@linelength_dim {(\paperwidth-10\UR@beamer@halfradius)/2}
	\fill[UR@reingrau](10\UR@beamer@halfradius,0)rectangle++(\l_UR@linelength_dim,-3\UR@beamer@halfradius);
	\coordinate(grauerstreifen) at (10\UR@beamer@halfradius+\l_UR@linelength_dim,-3\UR@beamer@halfradius);
	\node[UR@logo] at (3\UR@beamer@halfradius,-\UR@beamer@halfradius) {\UR_beamer@headlinelogo:};
	\node[anchor=south~west,inner~sep=0pt,outer~sep=0pt] at (grauerstreifen) {\box_use:N \UR_beamer@headbar};
}

%Logo Declaration
%\if option fsimphy is active use corresponding logo instead of UR


\bool_if:NTF \g_UR@draft_bool {
	\cs_new:Nn \UR_beamer@headlinelogo: {\tikz\draw(0,0)rectangle(12\UR@beamer@halfradius,4\UR@beamer@halfradius);}
	\cs_new:Nn \UR_beamer@titlelogo: {\tikz\draw(0,0)rectangle(24\UR@beamer@halfradius,8\UR@beamer@halfradius);}
}{
	\cs_new:Nn \UR_beamer@headlinelogo: {\pgfuseimage{UR@beamer@headlinelogo}}
	\cs_new:Nn \UR_beamer@titlelogo: {\pgfuseimage{UR@beamer@titlepagelogo}}
	\cs_if_exist:NTF \UR@opt@logo {
		\exp_args:Nx \tl_if_eq:nnTF {\UR@opt@logo} {fsimphy}
			{\pgfdeclareimage[width=24\UR@beamer@halfradius]{UR@beamer@titlepagelogo}{FSIlogotext}
				\bool_if:NTF \g_UR@logotext_bool
				{\pgfdeclareimage[width=12\UR@beamer@halfradius]{UR@beamer@headlinelogo}{FSIlogotext}}
				{\pgfdeclareimage[height=4\UR@beamer@halfradius]{UR@beamer@headlinelogo}{FSIlogo}}
			}{
			\pgfdeclareimage[width=24\UR@beamer@halfradius]{UR@beamer@titlepagelogo}{\UR@opt@logo}
			\pgfdeclareimage[width=12\UR@beamer@halfradius]{UR@beamer@headlinelogo}{\UR@opt@logo}
			}
	}{
		\pgfdeclareimage[width=24\UR@beamer@halfradius]{UR@beamer@titlepagelogo}{urlogotext}
		\bool_if:NTF \g_UR@logotext_bool
			{\pgfdeclareimage[width=12\UR@beamer@halfradius]{UR@beamer@headlinelogo}{urlogotext}}
			{\pgfdeclareimage[height=4\UR@beamer@halfradius]{UR@beamer@headlinelogo}{urlogo}}
	}
}


\titlegraphic{\UR_beamer@titlelogo:}

%Option für tikzexternalize
\bool_if:NTF \g_UR@externalize_bool{
	\ExplSyntaxOff
    \usetikzlibrary{external}
    \ExplSyntaxOn
    \newcommand*\UR@tikzexternalenable{\tikzexternalenable}
    \newcommand*\UR@tikzexternaldisable{\tikzexternaldisable}
}{
    \newcommand*\UR@tikzexternalenable{\relax}
    \newcommand*\UR@tikzexternaldisable{\relax}
}


\hbox_gset:Nn \g_UR@headline_box {
	\UR@tikzexternaldisable
	\begin{tikzpicture}
	\UR_beamer@headline:
	\useasboundingbox(0,0)rectangle(\paperwidth,-6.2\UR@beamer@halfradius);
	\end{tikzpicture}
	\UR@tikzexternalenable
}

\AtBeginDocument{\UR_setup@author@headline:}

\defbeamertemplate{headline}{URtheme~author}{
	\UR@tikzexternaldisable
	\box_use:N \g_UR@headline@author_box
	\bool_if:NT \g_UR@framenumber_bool {
		\par
		\usebeamercolor[fg]{headline~framenumber}\usebeamerfont{framenumber}
		\tikz{
			\useasboundingbox (0,0) -- (\paperwidth,0);
			\node[anchor=east, outer~sep=0pt,inner~ysep=0pt,inner~xsep=3pt] at 
			(\paperwidth, \dim_eval:n {\box_ht:N\g_UR@headline@author_box +\box_dp:N\g_UR@headline@author_box - 1.5\UR@beamer@halfradius})
			{\insertframenumber};
		}
	}
	\UR@tikzexternalenable
}

\defbeamertemplate{headline}{URtheme~plain}{%
	\UR@tikzexternaldisable
	\box_use:N \g_UR@headline_box
	\bool_if:NT \g_UR@framenumber_bool {
		\par
		\usebeamercolor[fg]{headline~framenumber}\usebeamerfont{framenumber}
		\tikz{
			\useasboundingbox (0,0) -- (\paperwidth,0);
			\node[anchor=east, outer~sep=0pt,inner~ysep=0pt,inner~xsep=3pt] at 
			(\paperwidth, \dim_eval:n {\box_ht:N\g_UR@headline_box +\box_dp:N\g_UR@headline_box - 1.5\UR@beamer@halfradius})
			{\insertframenumber};
		}
	}
}

%Set default headline template
\bool_if:NTF \g_UR@ShowHeadline_bool {
	\bool_if:NTF \g_UR@ShowHeadauthor_bool {
		\defbeamertemplatealias{headline}{URtheme}{URtheme~author}
	}{
		\defbeamertemplatealias{headline}{URtheme}{URtheme~plain}
	}
}{
	\defbeamertemplatealias{headline}{URtheme}{URtheme~empty}
}


\setbeamertemplate{headline}[URtheme]


% Frame title
\defbeamertemplate*{frametitle}{URtheme}[1][left]
{
\nointerlineskip
  \@tempdima=\textwidth%
  \begin{beamercolorbox}[#1,wd=\the\@tempdima]{frametitle}
    \usebeamerfont{frametitle}%
    \vbox{}\vskip-1ex%
    \if@tempswa\else\csname beamer@fte#1\endcsname\fi%
    \strut\insertframetitle\strut\par%
    {%
      \ifx\insertframesubtitle\@empty%
      \else%
      {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle\strut\par}%
      \fi
    }%
    \vskip-1ex%
    \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
  \end{beamercolorbox}%
}

\UR@create@colorlinebox[-6\UR@beamer@halfradius]<\paperwidth-20\UR@beamer@halfradius>{UR@beamer@titlecolorbox}

%Title Page
\defbeamertemplate*{title~page}{URtheme}{
	\UR_setup@author@headline:
	\begin{beamercolorbox}[wd=\paperwidth,ht=\paperheight]{title~page}
	\UR@tikzexternaldisable%
	\begin{tikzpicture}
	\useasboundingbox (0,0) rectangle (\paperwidth,-\paperheight);
	\coordinate (NWB) at (20\UR@beamer@halfradius,-2\paperheight/3); %north west corner of the bar
	\coordinate (NEB) at (\paperwidth,-2\paperheight/3);%north east corner of the bar
	\coordinate (NWL) at (6\UR@beamer@halfradius,-2\paperheight/3-2\UR@beamer@halfradius);%north west corner of the logo
	\coordinate (NWT) at (20\UR@beamer@halfradius,-\paperheight/3); %north west of the title box
	\coordinate (SWA) at (20\UR@beamer@halfradius,-2\paperheight/3); %south west of the author box
	\fill[UR@hellgrau](current~bounding~box.north~ west)rectangle(NEB);
	\node[UR@logo] at (NWL) {\inserttitlegraphic};%(6\UR@beamer@halfradius,-2\paperheight/3-\UR@beamer@halfradius)
	\node[UR@logo] at (NWB) {\usebox{\UR@beamer@titlecolorbox}};
		\node[anchor=south~west,inner~xsep=0pt, inner~ysep=.2em,outer~sep=0pt] (authordata) at (SWA)
		{\begin{minipage}[b]{.65\paperwidth}
			\usebeamerfont{author}
			{\usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate\par}%
			{\usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\par}%
			\ifx\insertdepartment\empty
				\ifx\insertchair\empty
				\else
					{\usebeamerfont{chair}\usebeamercolor[fg]{chair}\insertchair\par}%
				\fi
				\par\vspace{.2\baselineskip}
				{\usebeamerfont{department}\usebeamercolor[fg]{department}\insertinstitute\par}%
			\else%
				\ifx\insertinstitute\empty
					{\usebeamerfont{chair}\usebeamercolor[fg]{chair}\insertchair\par}%
				\else%
					{\usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute\par}%
				\fi%
			\par\vspace{.2\baselineskip}
			{\usebeamerfont{department}\usebeamercolor[fg]{department}\insertdepartment\par}
			\fi
		\end{minipage}
		};
		\node[inner~sep=0pt,outer~sep=0pt,anchor=south~west] at (authordata.north~west) {%
		\begin{minipage}[t]{.65\paperwidth}
		{\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle}
		\par
		\vspace{.2\baselineskip}
		{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle}
		\end{minipage}
	};
	\end{tikzpicture}
	\end{beamercolorbox}
\UR@tikzexternalenable
}

\bool_if:NTF \g_UR@alignwithbar_bool
	{\setbeamersize{text~ margin~ left=10\UR@beamer@halfradius,text~ margin~ right=3\UR@beamer@halfradius}}
	{\setbeamersize{text~ margin~ left=3\UR@beamer@halfradius,text~ margin~ right=3\UR@beamer@halfradius}}
	
\def\maketitle{
	\ifbeamer@inframe\titlepage\else\frame{\titlepage}\fi
}


\setbeamertemplate{navigation~symbols}{}

\mode<all>

\endinput
