% Copyright 2007 by Till Tantau % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. % % See the file doc/licenses/LICENSE for more details. \ProvidesPackageRCS $Header: /cvsroot/latex-beamer/latex-beamer/base/beamerbaseboxes.sty,v 1.32 2007/03/11 19:12:06 tantau Exp $ \RequirePackage{keyval} \def\beamerboxesdeclarecolorscheme#1#2#3{% scheme name, upper color, lower color \setbeamercolor{@scheme upper #1}{fg=white,bg=#2} \setbeamercolor{@scheme lower #1}{bg=#3} } \define@key{beamerboxes}{scheme}{\def\bmb@upper{@scheme upper #1}\def\bmb@lower{@scheme lower #1}} \define@key{beamerboxes}{upper}{\def\bmb@upper{#1}} \define@key{beamerboxes}{lower}{\def\bmb@lower{#1}} \define@key{beamerboxes}{width}{\edef\bmb@width{#1}} \define@key{beamerboxes}{shadow}[true]{\csname bmb@shadow#1\endcsname} \newif\ifbmb@shadow \newbox\bmb@box \newbox\bmb@colorbox \newbox\bmb@boxshadow \newbox\bmb@boxshadowball \newbox\bmb@boxshadowballlarge \newdimen\bmb@temp \newdimen\bmb@dima \newdimen\bmb@dimb \newdimen\bmb@prevheight \newcommand\beamerboxesrounded[2][]{% \global\let\beamer@firstlineitemizeunskip=\relax% \vbox\bgroup% \setkeys{beamerboxes}{upper=block title,lower=block body,width=\textwidth,shadow=false}% \setkeys{beamerboxes}{#1}% {% \usebeamercolor{\bmb@lower}% \globalcolorstrue% \colorlet{lower.bg}{bg}% }% {% \usebeamercolor{\bmb@upper}% \globalcolorstrue% \colorlet{upper.bg}{bg}% }% % % Typeset head % \vskip4bp \setbox\bmb@box=\hbox{% \begin{minipage}[b]{\bmb@width}% \usebeamercolor[fg]{\bmb@upper}% #2% \end{minipage}}% \ifdim\wd\bmb@box=0pt% \setbox\bmb@box=\hbox{}% \ht\bmb@box=1.5pt% \bmb@prevheight=-4.5pt% \else% \wd\bmb@box=\bmb@width% \bmb@temp=\dp\bmb@box% \ifdim\bmb@temp<1.5pt% \bmb@temp=1.5pt% \fi% \setbox\bmb@box=\hbox{\raise\bmb@temp\hbox{\box\bmb@box}}% \dp\bmb@box=0pt% \bmb@prevheight=\ht\bmb@box% \fi% \bmb@temp=\bmb@width% \bmb@dima=\bmb@temp\advance\bmb@dima by2.2bp% \bmb@dimb=\bmb@temp\advance\bmb@dimb by4bp% \hbox{% \begin{pgfpicture}{0bp}{+-\ht\bmb@box}{0bp}{+-\ht\bmb@box} \ifdim\wd\bmb@box=0pt% \color{lower.bg}% \else% \color{upper.bg}% \fi% \pgfpathqmoveto{-4bp}{-1bp} \pgfpathqcurveto{-4bp}{1.2bp}{-2.2bp}{3bp}{0bp}{3bp} \pgfpathlineto{\pgfpoint{\bmb@temp}{3bp}} \pgfpathcurveto% {\pgfpoint{\bmb@dima}{3bp}}% {\pgfpoint{\bmb@dimb}{1.2bp}}% {\pgfpoint{\bmb@dimb}{-1bp}}% \bmb@dima=-\ht\bmb@box% \advance\bmb@dima by-2pt% \pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}} \pgfpathlineto{\pgfpoint{-4bp}{\bmb@dima}} \pgfusepath{fill} \end{pgfpicture}% \copy\bmb@box% }% \nointerlineskip% \vskip-1pt% \ifdim\wd\bmb@box=0pt% \else% \hbox{% \begin{pgfpicture}{0pt}{0pt}{\bmb@width}{6pt} \bmb@dima=\bmb@width% \advance\bmb@dima by8bp% \pgfpathrectangle{\pgfpoint{-4bp}{-1bp}}{\pgfpoint{\bmb@dima}{8bp}} \pgfusepath{clip} {\pgftransformshift{\pgfpoint{-4bp}{0bp}}\pgftext[left,base]{\pgfuseshading{bmb@transition}}}% \end{pgfpicture}% }% \nointerlineskip% \vskip-0.5pt% \fi% \ifbmb@shadow% \setbox\bmb@boxshadow=\hbox{\pgfuseshading{bmb@shadow}}% \setbox\bmb@boxshadowball=\hbox{\pgfuseshading{bmb@shadowball}}% \setbox\bmb@boxshadowballlarge=\hbox{\pgfuseshading{bmb@shadowballlarge}}% \fi% \setbox\bmb@colorbox=\hbox{{\pgfpicturetrue\pgfsetcolor{lower.bg}}}% \setbox\bmb@box=\hbox\bgroup\begin{minipage}[b]{\bmb@width}% \vskip2pt% \usebeamercolor[fg]{\bmb@lower}% \colorlet{beamerstructure}{upper.bg}% \colorlet{structure}{upper.bg}% %\color{.}% } \def\endbeamerboxesrounded{% \end{minipage}\egroup% \wd\bmb@box=\bmb@width% \bmb@temp=\dp\bmb@box% \advance\bmb@temp by.5pt% \setbox\bmb@box=\hbox{\raise\bmb@temp\hbox{\box\bmb@box}}% \dp\bmb@box=0pt% \bmb@temp=\wd\bmb@box% \bmb@dima=\bmb@temp\advance\bmb@dima by2.2bp% \bmb@dimb=\bmb@temp\advance\bmb@dimb by4bp% \hbox{% \begin{pgfpicture}{0bp}{0bp}{0bp}{0bp} \ifbmb@shadow% {\pgftransformshift{\pgfpoint{4bp}{-3bp}}\pgftext{\copy\bmb@boxshadowball}} \begin{pgfscope} {% \advance\bmb@temp by-1bp% \pgfpathrectangle{\pgfpoint{\bmb@temp}{-7bp}}{\pgfpoint{9bp}{9bp}}% \pgfusepath{clip} }% {\pgftransformshift{\pgfpoint{\bmb@temp}{1bp}}\pgftext{\box\bmb@boxshadowballlarge}} \end{pgfscope} \begin{pgfscope} \advance\bmb@temp by-4bp% \pgfpathrectangle{\pgfpoint{4bp}{-7bp}}{\pgfpoint{\bmb@temp}{5bp}} \pgfusepath{clip} {\pgftransformshift{\pgfpoint{4bp}{-7bp}}\pgftext[left,base]{\copy\bmb@boxshadow}}% \end{pgfscope} \begin{pgfscope} \advance\bmb@temp by 4bp% \bmb@dima=\ht\bmb@box% \advance\bmb@dima by\bmb@prevheight% \advance\bmb@dima by 4bp% \pgfpathrectangle{\pgfpoint{\bmb@temp}{1bp}}{\pgfpoint{4bp}{\bmb@dima}} \pgfusepath{clip} \advance\bmb@dima by-4bp% {\pgftransformshift{\pgfpoint{\bmb@temp}{\bmb@dima}}\pgftext{\box\bmb@boxshadowball}} \advance\bmb@dima by-1bp% \pgfpathrectangle{\pgfpoint{\bmb@temp}{1bp}}{\pgfpoint{4bp}{\bmb@dima}} \pgfusepath{clip} \advance\bmb@temp by4bp% {\pgftransformshift{\pgfpoint{\bmb@temp}{-3bp}}% \pgftransformrotate{90}% \pgftext[left,base]{\box\bmb@boxshadow}}% \end{pgfscope} \fi% \unhbox\bmb@colorbox% \pgfpathqmoveto{-4bp}{1bp} \pgfpathqcurveto{-4bp}{-1.2bp}{-2.2bp}{-3bp}{0bp}{-3bp} \pgfpathlineto{\pgfpoint{\the\bmb@temp}{-3bp}} \pgfpathcurveto% {\pgfpoint{\the\bmb@dima}{-3bp}}% {\pgfpoint{\the\bmb@dimb}{-1.2bp}}% {\pgfpoint{\the\bmb@dimb}{1bp}}% { \bmb@dima=\ht\bmb@box% \pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}} \pgfpathlineto{\pgfpoint{-4bp}{\bmb@dima}} \pgfusepath{fill} } \ifbmb@shadow% { \color{black!50!bg} \pgfsetlinewidth{0pt} \pgfpathmoveto{\pgfpoint{\bmb@dimb}{-.5bp}} \bmb@dima=\ht\bmb@box% \advance\bmb@dima by\bmb@prevheight% \advance\bmb@dima by 1bp% \pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}} \pgfusepath{stroke} \bmb@temp=\bmb@dima \advance\bmb@dima by 1bp% \color{black!31!bg} \pgfpathmoveto{\pgfpoint{\bmb@dimb}{\bmb@temp}} \pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}} \pgfusepath{stroke} \advance\bmb@dima by 1bp% \advance\bmb@temp by 1bp% \color{black!19!bg} \pgfpathmoveto{\pgfpoint{\bmb@dimb}{\bmb@temp}} \pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}} \pgfusepath{stroke} \advance\bmb@dima by 1bp% \advance\bmb@temp by 1bp% \color{black!6!bg} \pgfpathmoveto{\pgfpoint{\bmb@dimb}{\bmb@temp}} \pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}} \pgfusepath{stroke} \advance\bmb@dima by 1.5bp% \advance\bmb@temp by 1bp% \color{bg} \pgfpathmoveto{\pgfpoint{\bmb@dimb}{\bmb@temp}} \pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}} \pgfusepath{stroke} } \fi \end{pgfpicture}% \box\bmb@box% }% \ifbmb@shadow% \vskip4bp minus 2bp% \else% \vskip2bp% \fi% \egroup% of \vbox\bgroup } % % Shadings % % Shadows \pgfdeclareradialshading[black,bg]{bmb@shadowball}{\pgfpointorigin}{% color(0bp)=(black!50!bg); color(4bp)=(bg)} \pgfdeclareradialshading[black,bg]{bmb@shadowballlarge}{\pgfpointorigin}{% color(0bp)=(black!50!bg); color(4bp)=(black!50!bg); color(8bp)=(bg)} \pgfdeclareverticalshading[black,bg]{bmb@shadow}{200cm}{% color(0bp)=(bg); color(4bp)=(black!50!bg); color(8bp)=(black!50!bg)} % Transition line \pgfdeclareverticalshading[lower.bg,upper.bg]{bmb@transition}{200cm}{% color(0pt)=(lower.bg); color(2pt)=(lower.bg); color(4pt)=(upper.bg)}