|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
[Patch] Real transparency for shadowsHello!
I've implemented "real" transparency for Beamer box shadows. It allows to position boxes on top of existing content, with the pleasing visual effect of fuzzy shadow. The implementation is based on fadings, that is transparency gradients. That's somewhat advanced feature, but it seems to work Ok in recent versions of all major viewers (tested on xpdf and acroread; others report it also works in okular and evince). This version enhances transparency for boxes *and headline shadows*. Also, box shadows produced by this version are rendered better (at least by xpdf and acroread) compared to the version I've posted to the list before. Initially, I wanted to do a more major refactoring to actually typeset box shadows *under* the boxes. But I'm no TeX guru, so I gave up :-( Hope you'll find my code useful, Andrey Paramonov [beamerbaseboxes.sty] % 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. \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 \newdimen\bmb@boxwidth \newdimen\bmb@boxheight \newdimen\bmb@prevheight \newdimen\bmb@temp \newdimen\bmb@dima \newdimen\bmb@dimb \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% \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% \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@boxwidth=\bmb@width% \bmb@boxheight=\ht\bmb@box% \advance\bmb@boxheight by4bp% \advance\bmb@boxheight by\bmb@prevheight% \ifbmb@shadow% \pgfdeclareradialshading{bmb@shadowball}{\pgfpointorigin} {% color(0bp)=(pgftransparent!50); color(4bp)=(pgftransparent!100) }% \pgfdeclareradialshading{bmb@shadowballlarge}{\pgfpointorigin} {% color(0bp)=(pgftransparent!0); color(8bp)=(pgftransparent!100) }% \pgfdeclarehorizontalshading{bmb@shadowhorz}{\bmb@boxheight-6bp} {% color(0bp)=(pgftransparent!0); color(8bp)=(pgftransparent!100) }% \pgfdeclareverticalshading{bmb@shadowvert}{\bmb@boxwidth-4bp} {% color(0bp)=(pgftransparent!100); color(8bp)=(pgftransparent!0) }% \pgfdeclarefading{bmb@shadowmask} {% \begin{pgfpicture} \pgftext[at=\pgfpoint{4bp}{4bp}]{\pgfuseshading{bmb@shadowball}} \pgftext[at=\pgfpoint{\bmb@boxwidth}{8bp}]{\pgfuseshading{bmb@shadowballlarge}} \pgftext[at=\pgfpoint{\bmb@boxwidth+4bp}{\bmb@boxheight+2bp}]{\pgfuseshading{bmb@shadowball}} \pgftext[left, at=\pgfpoint{4bp}{4bp}]{\pgfuseshading{bmb@shadowvert}} \pgftext[base, at=\pgfpoint{\bmb@boxwidth+4bp}{8bp}]{\pgfuseshading{bmb@shadowhorz}} % % clipping is needed because shadow is typeset on top of box \begin{pgfscope} \pgfsetcolor{black} \pgfpathrectangle{\pgfpoint{4bp}{8bp}}{\pgfpoint{\bmb@...}{\bmb@boxheight-2bp}} \pgfusepath{fill} \end{pgfscope} \end{pgfpicture} }% \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}{0bp}{0bp}{0bp} \ifbmb@shadow% \begin{pgfscope} \pgfpathrectangle{\pgfpoint{0bp}{-7bp}} {\pgfpoint{\bmb@boxwidth+8bp}{\bmb@boxheight+6bp}} \pgfsetfading{bmb@shadowmask}{% \pgftransformshift{\pgfpoint{0.5\bmb@boxwidth+6bp}{0.5\bmb@boxheight-4bp}}} \pgfusepath{fill} \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} } \end{pgfpicture}% \box\bmb@box% }% \ifbmb@shadow% \vskip4bp minus 2bp% \else% \vskip2bp% \fi% \egroup% of \vbox\bgroup } % Shadings % Transition line \pgfdeclareverticalshading[lower.bg,upper.bg]{bmb@transition}{200cm}% {% color(0pt)=(lower.bg); color(2pt)=(lower.bg); color(4pt)=(upper.bg) } [beamerouterthemeshadow.sty] % 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. \mode<presentation> \useoutertheme{split} \setbeamercolor{frametitle}{parent=subsection in head/foot} \setbeamercolor{frametitle right}{parent=section in head/foot} \pgfdeclarehorizontalshading[frametitle.bg,frametitle right.bg]% {beamer@frametitleshade}{\paperheight} {% color(0pt)=(frametitle.bg); color(\paperwidth)=(frametitle right.bg) } \pgfdeclareverticalshading{beamer@topshade}{200cm} {% color(0pt)=(pgftransparent!100); color(8pt)=(pgftransparent!0) } \pgfdeclarefading{beamer@topshadowmask}{\pgfuseshading{beamer@topshade}} \addtobeamertemplate{headline} {} {% \vskip0pt \begin{pgfpicture} \pgfpathrectangle{\pgfpoint{0pt}{-4pt}}{\pgfpoint{\paperwidth}{4pt}}% \pgfsetfading{beamer@topshadowmask}{}% \pgfusepath{fill}% \end{pgfpicture} \vskip-2pt } \defbeamertemplate*{frametitle}{shadow theme} {% \nointerlineskip% \vskip-2pt% \hbox{\leavevmode \advance\beamer@leftmargin by -12bp% \advance\beamer@rightmargin by -12bp% \beamer@tempdim=\textwidth% \advance\beamer@tempdim by \beamer@leftmargin% \advance\beamer@tempdim by \beamer@rightmargin% \hskip-\Gm@lmargin\hbox{% \setbox\beamer@tempbox=\hbox{% \begin{minipage}[b]{\paperwidth}% \vbox{}\vskip-.75ex% \leftskip0.3cm% \rightskip0.3cm plus1fil\leavevmode \insertframetitle% \ifx\insertframesubtitle\@empty% \strut\par% \else \par{% \usebeamerfont*{framesubtitle}{% \usebeamercolor[fg]{framesubtitle}% \insertframesubtitle}% \strut\par% }% \fi% \nointerlineskip \vbox{}% \end{minipage}% }% \beamer@tempdim=\ht\beamer@tempbox% \advance\beamer@tempdim by 2pt% \begin{pgfpicture}{0pt}{0pt}{\paperwidth}{\beamer@tempdim} \begin{pgfscope} \pgfsetfillcolor{black}% \pgfpathrectangle{\pgfpoint{0pt}{-4pt}}{\pgfpoint{\paperwidth}{8pt}}% \pgfsetfading{beamer@topshadowmask}{}% \pgfusepath{fill}% \end{pgfscope} \begin{pgfscope} \usebeamercolor{frametitle right}% \pgfpathrectangle{\pgfpointorigin}{\pgfpoint{\paperwidth}{\beamer@tempdim}}% \pgfusepath{clip}% \pgftext[left,base]{\pgfuseshading{beamer@frametitleshade}}% \end{pgfscope} \end{pgfpicture} \hskip-\paperwidth% \box\beamer@tempbox% }% \hskip-\Gm@rmargin% }% \vskip-2pt } \mode <all> ------------------------------------------------------------------------------ Come build with us! The BlackBerry® Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9-12, 2009. Register now! http://p.sf.net/sfu/devconf _______________________________________________ Latex-beamer-users mailing list Latex-beamer-users@... https://lists.sourceforge.net/lists/listinfo/latex-beamer-users |
| Free embeddable forum powered by Nabble | Forum Help |