%%
%% This is file `productbox.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% productbox.dtx  (with options: `style')
%% 
%% IMPORTANT NOTICE:
%% 
%% For the copyright see the source file.
%% 
%% Any modified versions of this file must be renamed
%% with new filenames distinct from productbox.sty.
%% 
%% For distribution of the original source see the terms
%% for copying and modification in the file productbox.dtx.
%% 
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%%^^A $Id: productbox.dtx 8333 2010-12-29 19:58:06Z gene $
%%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Purpose:
%%      productbox.dtx   provides  a  style  file   for  typesetting  a
%%      three-dimensional product box. This product box can be rendered
%%      as it is standing on a surface and  some light is shed onto it.
%%      Alternatively  it can be typeset as a wireframe  to be  cut out
%%      and glued together. This will lead to a physical product box.
%%
%% Documentation:
%%      The  documentation  can  be  generated  from the  original file
%%      productbox.dtx  with  the  doc style/package.  LaTeX  the  file
%%      productbox.dtx to get the full documentation in pdf format.
%%
%% Prerequisite:
%%      This package needs TikZ to be present at least in version 2.0.
%%
%% Author: Gerd Neugebauer
%%         Im Lerchelsb\"ohl 5
%%         64521 Gro\ss-Gerau
%% Mail:   gene@gerd-neugebauer.de
%%
%% Copyright (C) 2010 Gerd Neugebauer
%%
%%      productbox.dtx is distributed in the hope that it will be useful,
%%      but  WITHOUT ANY WARRANTY.  No  author  or  distributor  accepts
%%      responsibility to anyone for the consequences of using it or for
%%      whether it serves any particular purpose or works at all, unless
%%      he says so in writing.
%%
%%      Everyone is granted permission to  copy, modify and redistribute
%%      productbox.dtx, provided this copyright notice is preserved  and
%%      any modifications are indicated.
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
\begingroup
  \def\ProductBox@VC$#1: #2 #3${#2}
  \def\ProductBox@VCdate$#1: #2-#3-#4 #5${#2/#3/#4}
  \xdef\fileversion{1.1}
  \xdef\filerevision{\ProductBox@VC$Revision: 8333 $}
  \xdef\filedate{\ProductBox@VCdate
    $Date: 2010-12-29 20:58:06 +0100 (Mi, 29 Dez 2010) $}
  \xdef\filename{productbox.dtx}
\endgroup
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{productbox}[\filedate Another type of boxes...]
\RequirePackage{keyval}
\RequirePackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{fadings}
\define@key{ProductBox}{scale}{%
  \def\ProductBox@scale{#1}}
\define@key{ProductBox}{width}{%
  \def\ProductBox@x{#1}}
\define@key{ProductBox}{height}{%
  \def\ProductBox@y{#1}}
\define@key{ProductBox}{depth}{%
  \def\ProductBox@z{#1}}
\define@key{ProductBox}{clean}[true]{%
  \csname ProductBox@clean#1\endcsname}
\define@key{ProductBox}{flat}[true]{%
  \def\ProductBox@style{flat}}
\define@key{ProductBox}{fold}[true]{%
  \def\ProductBox@style{fold}}
\define@key{ProductBox}{3d}[true]{%
  \def\ProductBox@style{threeD}}
\define@key{ProductBox}{3D}[true]{%
  \def\ProductBox@style{threeD}}
\define@key{ProductBox}{threeD}[true]{%
  \def\ProductBox@style{threeD}}
\define@key{ProductBox}{top}[true]{%
  \def\ProductBox@style{top}}
\define@key{ProductBox}{bottom}[true]{%
  \def\ProductBox@style{bottom}}
\define@key{ProductBox}{front}[true]{%
  \def\ProductBox@style{front}}
\define@key{ProductBox}{back}[true]{%
  \def\ProductBox@style{back}}
\define@key{ProductBox}{left}[true]{%
  \def\ProductBox@style{left}}
\define@key{ProductBox}{right}[true]{%
  \def\ProductBox@style{right}}
\define@key{ProductBox}{empty}[true]{%
  \def\ProductBox@style{empty}}
\define@key{ProductBox}{style}{%
  \def\ProductBox@style{#1}}
\define@key{ProductBox}{shadow}[true]{%
  \csname ProductBox@shadow#1\endcsname}
\define@key{ProductBox}{mirror}[true]{%
  \csname ProductBox@mirror#1\endcsname}
\define@key{ProductBox}{flare}[true]{%
  \csname ProductBox@flare#1\endcsname}
\define@key{ProductBox}{flareDiameter}{%
  \def\ProductBox@flareDiameter{#1}}
\define@key{ProductBox}{edgeColor}{%
  \def\productBox@edgeColor{#1}}
\define@key{ProductBox}{view}{%
  \@nameuse{ProductBox@View@#1}}
\define@key{ProductBox}{earSize}{%
  \def\ProductBox@earSize{#1}}
\define@key{ProductBox}{foldLine}{%
  \def\ProductBox@foldLine{#1}}
\define@key{ProductBox}{foldOpacity}{%
  \def\ProductBox@foldOpacity{#1}}
\define@key{ProductBox}{faceSep}{%
  \def\ProductBox@FaceSep{#1}}
\newbox\ProductBox@Front
\newbox\ProductBox@Left
\newbox\ProductBox@Top
\newbox\ProductBox@Right
\newbox\ProductBox@Bottom
\newbox\ProductBox@Back
\newcommand\ProductBoxSet[1]{\setkeys{ProductBox}{#1}}
\newcommand\ProductBox@style{threeD}
\newcommand\ProductBox@x{88mm}
\newcommand\ProductBox@y{100mm}
\newcommand\ProductBox@z{30mm}
\newif\ifProductBox@clean
\newif\ifProductBox@active
\newif\ifProductBox@clip \ProductBox@cliptrue
\newcommand\ProductBox@FaceSep{1em}
\newenvironment{ProductBox}[1][]{%
  \setkeys{ProductBox}{#1}%
  \ifProductBox@clean
    \global\setbox\ProductBox@Front\hbox{}%
    \global\setbox\ProductBox@Back\hbox{}%
    \global\setbox\ProductBox@Left\hbox{}%
    \global\setbox\ProductBox@Right\hbox{}%
    \global\setbox\ProductBox@Top\hbox{}%
    \global\setbox\ProductBox@Bottom\hbox{}%
  \fi
  \ifProductBox@active
    \errmessage{Trying to use an environment ProductBox inside the
      environment ProductBox. This is not allowed.}%
  \else
    \ProductBox@activetrue
  \fi
  \let\Front\undefined            \let\endFront\undefined
  \let\Back\undefined             \let\endBack\undefined
  \let\Left\undefined             \let\endLeft\undefined
  \let\Right\undefined            \let\endRight\undefined
  \let\Top\undefined              \let\endTop\undefined
  \let\Bottom\undefined           \let\endBottom\undefined
  \let\FrontFace\undefined        \let\endFrontFace\undefined
  \let\BackFace\undefined         \let\endBackFace\undefined
  \let\LeftFace\undefined         \let\endLeftFace\undefined
  \let\RightFace\undefined        \let\endRightFace\undefined
  \let\TopFace\undefined          \let\endTopFace\undefined
  \let\BottomFace\undefined       \let\endBottomFace\undefined
  \newenvironment{Front}{\ProductBox@Start\ProductBox@Front
    (\ProductBox@x,\ProductBox@y)}{\ProductBox@End}%
  \newenvironment{Back}{\ProductBox@Start\ProductBox@Back
    (\ProductBox@x,\ProductBox@y)}{\ProductBox@End}%
  \newenvironment{Left}{\ProductBox@Start\ProductBox@Left
    (\ProductBox@z,\ProductBox@y)}{\ProductBox@End}%
  \newenvironment{Right}{\ProductBox@Start\ProductBox@Right
    (\ProductBox@z,\ProductBox@y)}{\ProductBox@End}%
  \newenvironment{Top}{\ProductBox@Start\ProductBox@Top
    (\ProductBox@x,\ProductBox@z)}{\ProductBox@End}%
  \newenvironment{Bottom}{\ProductBox@Start\ProductBox@Bottom(
    \ProductBox@x,\ProductBox@z)}{\ProductBox@End}%
  \newenvironment{FrontFace}[1][white]{\ProductBox@StartFace\ProductBox@Front
    {\ProductBox@x}{\ProductBox@y}{##1}}{\ProductBox@EndFace}%
  \newenvironment{BackFace}[1][white]{\ProductBox@StartFace\ProductBox@Back
    {\ProductBox@x}{\ProductBox@y}{##1}}{\ProductBox@EndFace}%
  \newenvironment{LeftFace}[1][white]{\ProductBox@StartFace\ProductBox@Left
    {\ProductBox@z}{\ProductBox@y}{##1}}{\ProductBox@EndFace}%
  \newenvironment{RightFace}[1][white]{\ProductBox@StartFace\ProductBox@Right
    {\ProductBox@z}{\ProductBox@y}{##1}}{\ProductBox@EndFace}%
  \newenvironment{TopFace}[1][white]{\ProductBox@StartFace\ProductBox@Top
    {\ProductBox@x}{\ProductBox@z}{##1}}{\ProductBox@EndFace}%
  \newenvironment{BottomFace}[1][white]{\ProductBox@StartFace\ProductBox@Bottom
    {\ProductBox@x}{\ProductBox@z}{##1}}{\ProductBox@EndFace}%
  \ignorespacesafterend
}{%
  \@ifundefined{ProductBox@style@\ProductBox@style}{%
    \errmessage{Box style '\ProductBox@style' for ProductBox is unknown}%
  }{%
    \@ifundefined{ProductBox@scale}{%
      \@nameuse{ProductBox@style@\ProductBox@style}}{%
      \scalebox{\ProductBox@scale}%
               {\@nameuse{ProductBox@style@\ProductBox@style}}
    }}%
  \ProductBox@activefalse
  \ignorespacesafterend
}
\def\ProductBox@Start#1(#2){%
  \global\setbox#1\hbox\bgroup\begin{tikzpicture}%
    \ifProductBox@clip \clip rectangle (#2); \fi
  }%
\newcommand\ProductBox@End{\end{tikzpicture}\egroup\ignorespacesafterend}
\newcommand\ProductBox@StartFace[4]{%
  \let\ProductBox@@box#1%
  \def\ProductBox@@w{#2}%
  \def\ProductBox@@h{#3}%
  \def\ProductBox@@args{[#4]}%
  \@tempdima=#2
  \advance\@tempdima-\ProductBox@FaceSep
  \advance\@tempdima-\ProductBox@FaceSep
  \setbox#1\hbox\bgroup\begin{minipage}{\the\@tempdima}%
    \ignorespaces
}
\newcommand\ProductBox@EndFace{\end{minipage}\egroup
    \global\setbox\ProductBox@@box=\hbox{\begin{tikzpicture}
    \ifProductBox@clip \clip rectangle (\ProductBox@@w,\ProductBox@@h); \fi
    \expandafter\fill \ProductBox@@args rectangle(\ProductBox@@w,\ProductBox@@h);
    \draw (.5*\ProductBox@@w,.5*\ProductBox@@h)
      node[inner sep=0pt] {\box\ProductBox@@box};
    \end{tikzpicture}}\ignorespacesafterend}
\newcommand\ProductBox@style@empty{}
\newcommand\ProductBox@style@flat{%
  \par\noindent
  \hspace*{\ProductBox@z}\kern1mm \copy\ProductBox@Top\\[1ex]
  \copy\ProductBox@Left\kern1mm \copy\ProductBox@Front\kern1mm
  \copy\ProductBox@Right\kern1mm \copy\ProductBox@Back\\[1ex]
  \hspace*{\ProductBox@z}\kern1mm \copy\ProductBox@Bottom\par
}
\newcommand\ProductBox@style@front{%
  \copy\ProductBox@Front
}
\newcommand\ProductBox@style@back{%class
  \copy\ProductBox@Back
}
\newcommand\ProductBox@style@left{%
  \copy\ProductBox@Left
}
\newcommand\ProductBox@style@right{%
  \copy\ProductBox@Right
}
\newcommand\ProductBox@style@top{%
  \copy\ProductBox@Top
}
\newcommand\ProductBox@style@bottom{%
  \copy\ProductBox@Bottom
}
\newcommand\ProductBox@earSize{12mm}
\newcommand\ProductBox@foldLine{white!80!black}
\newcommand\ProductBox@foldOpacity{.5}
\newcommand\ProductBox@style@fold{%
  \begin{tikzpicture}[sw/.style={anchor=south west,
                                 inner sep=0pt},
                      se/.style={anchor=south east,
                                 inner sep=0pt},
                      nw/.style={anchor=north west,
                                 inner sep=0pt},
                      num/.style={circle,
                                  fill=white!90!black,
                                  fill opacity=.5,
                                  font=\tiny\bfseries\sffamily}]
    \begin{scope}
      \clip rectangle (\ProductBox@z,\ProductBox@y);
      \draw node[sw]{\copy\ProductBox@Left};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        rectangle (\ProductBox@z,\ProductBox@y);
    \end{scope}
    \begin{scope}[xshift=\ProductBox@z]
      \clip rectangle (\ProductBox@x,\ProductBox@y);
      \draw node[sw]{\copy\ProductBox@Front};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        rectangle (\ProductBox@x,\ProductBox@y);
    \end{scope}
    \begin{scope}[xshift=\ProductBox@z+\ProductBox@x]
      \clip rectangle (\ProductBox@z,\ProductBox@y);
      \draw node[sw]{\copy\ProductBox@Right};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        rectangle (\ProductBox@z,\ProductBox@y);
    \end{scope}
    \begin{scope}[xshift=\ProductBox@x+2*\ProductBox@z]
      \clip rectangle (\ProductBox@x,\ProductBox@y);
      \draw node[sw]{\copy\ProductBox@Back};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
         rectangle (\ProductBox@x,\ProductBox@y);
    \end{scope}
    \begin{scope}[xshift=\ProductBox@z,yshift=\ProductBox@y]
      \clip rectangle (\ProductBox@x,\ProductBox@z);
      \draw node[sw]{\copy\ProductBox@Top};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        rectangle (\ProductBox@x,\ProductBox@z);
    \end{scope}
    \begin{scope}[xshift=\ProductBox@z]
      \clip
        (0mm,0mm) -- (.5*\ProductBox@z,-.5*\ProductBox@z) --
        (.5*\ProductBox@z,-\ProductBox@z) --
        (\ProductBox@x-.5*\ProductBox@z,-\ProductBox@z) --
        (\ProductBox@x-.5*\ProductBox@z,-.5*\ProductBox@z) --
        (\ProductBox@x,0mm) -- cycle;
      \draw (\ProductBox@x,-\ProductBox@z)
        node[se]{\copy\ProductBox@Bottom};
      \draw [thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        (0mm,0mm) -- (.5*\ProductBox@z,-.5*\ProductBox@z) --
        (.5*\ProductBox@z,-\ProductBox@z) --
        (\ProductBox@x-.5*\ProductBox@z,-\ProductBox@z) --
        (\ProductBox@x-.5*\ProductBox@z,-.5*\ProductBox@z) --
        (\ProductBox@x,0mm) -- cycle;
      \draw (.5*\ProductBox@x,-.75*\ProductBox@z) node[num]{3};
    \end{scope}
    \begin{scope}[xshift=\ProductBox@x+2*\ProductBox@z]
      \clip
        (0mm,0mm) -- (0mm,-\ProductBox@z) --
        (.5*\ProductBox@z,-\ProductBox@z) --
        (.5*\ProductBox@z,-.5*\ProductBox@z) --
        (\ProductBox@x-.5*\ProductBox@z,-.5*\ProductBox@z) --
        (\ProductBox@x-.5*\ProductBox@z,-\ProductBox@z) --
        (\ProductBox@x,-\ProductBox@z) -- (\ProductBox@x,0mm) --
        cycle;
      \draw node[se,rotate=180]{\copy\ProductBox@Bottom};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        (0mm,0mm) -- (0mm,-\ProductBox@z) --
        (.5*\ProductBox@z,-\ProductBox@z) --
        (.5*\ProductBox@z,-.5*\ProductBox@z) --
        (\ProductBox@x-.5*\ProductBox@z,-.5*\ProductBox@z) --
        (\ProductBox@x-.5*\ProductBox@z,-\ProductBox@z) --
        (\ProductBox@x,-\ProductBox@z) -- (\ProductBox@x,0mm) --
        cycle;
      \draw (.25*\ProductBox@z,-.75*\ProductBox@z) node[num]{1};
      \draw (\ProductBox@x-.25*\ProductBox@z,-.75*\ProductBox@z)
        node[num]{1};
    \end{scope}
    \begin{scope}[xshift=\ProductBox@z+\ProductBox@x]
      \clip
        (0mm,0mm) -- (\ProductBox@z,0mm) --
        (.5*\ProductBox@z,-.5*\ProductBox@z) --
        (.5*\ProductBox@z,-\ProductBox@z) -- (0mm,-\ProductBox@z) --
        cycle;
      \draw (\ProductBox@z,0mm)
        node[se,rotate=90]{\copy\ProductBox@Bottom};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        (0mm,0mm) -- (\ProductBox@z,0mm) --
        (.5*\ProductBox@z,-.5*\ProductBox@z) --
        (.5*\ProductBox@z,-\ProductBox@z) -- (0mm,-\ProductBox@z) --
        cycle;
      \draw (.25*\ProductBox@z,-.75*\ProductBox@z) node[num]{2};
    \end{scope}
    \begin{scope}
      \clip
        (0mm,0mm) -- (\ProductBox@z,0mm) --
        (\ProductBox@z,-\ProductBox@z) --
        (.5*\ProductBox@z,-\ProductBox@z) --
        (.5*\ProductBox@z,-.5*\ProductBox@z) -- cycle;
      \draw
        node[sw,rotate=270]{\copy\ProductBox@Bottom};
      \draw [thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        (0mm,0mm) -- (\ProductBox@z,0mm) --
        (\ProductBox@z,-\ProductBox@z) --
        (.5*\ProductBox@z,-\ProductBox@z) --
        (.5*\ProductBox@z,-.5*\ProductBox@z) -- cycle;
      \draw (.75*\ProductBox@z,-.75*\ProductBox@z) node[num]{2};
    \end{scope}
    \begin{scope}[xshift=2*\ProductBox@x+2*\ProductBox@z]
      \clip
        (0mm,0mm) -- (\ProductBox@earSize/2,\ProductBox@earSize/4) --
        (\ProductBox@earSize/2,\ProductBox@y-\ProductBox@earSize/4) --
        (0mm,\ProductBox@y) -- cycle;
      \draw node[sw]{\copy\ProductBox@Left};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        (0mm,0mm) -- (\ProductBox@earSize/2,\ProductBox@earSize/4) --
        (\ProductBox@earSize/2,\ProductBox@y-\ProductBox@earSize/4) --
        (0mm,\ProductBox@y) -- cycle;
    \end{scope}
    \begin{scope}[yshift=\ProductBox@y]
      \clip
        (0mm,0mm) -- (\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@z-\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@z,0mm) -- cycle;
      \draw node[nw,rotate=90]{\copy\ProductBox@Top};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        (0mm,0mm) -- (\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@z-\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@z,0mm) -- cycle;
    \end{scope}
    \begin{scope}[xshift=\ProductBox@x+\ProductBox@z,
                  yshift=\ProductBox@y]
      \clip
        (0mm,0mm) -- (\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@z-\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@z,0mm) -- cycle;
      \draw node[se,rotate=270]{\copy\ProductBox@Top};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        (0mm,0mm) -- (\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@z-\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@z,0mm) -- cycle;
    \end{scope}
    \begin{scope}[xshift=\ProductBox@z,
                  yshift=\ProductBox@y+\ProductBox@z]
      \clip
        (0mm,0mm) -- (\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@x-\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@x,0mm) -- cycle;
      \draw (0mm,\ProductBox@y)
        node[se,rotate=180]{\copy\ProductBox@Back};
      \draw[thin,opacity=\ProductBox@foldOpacity,\ProductBox@foldLine]
        (0mm,0mm) -- (\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@x-\ProductBox@earSize/2,\ProductBox@earSize) --
        (\ProductBox@x,0mm) -- cycle;
    \end{scope}
  \end{tikzpicture}}
\newcommand\ProductBoxThreeDStartHook{}
\newcommand\ProductBoxThreeDEndHook{}
\newif\ifProductBox@shadow \ProductBox@shadowtrue
\newif\ifProductBox@mirror
\newif\ifProductBox@flare
\newcommand\ProductBox@edgeColor{white}
\newcommand\ProductBox@flareDiameter{24mm}
\newcommand\ProductBox@angleZ{8}
\newcommand\ProductBox@angleX{10}
\newcommand\ProductBox@style@threeD{
  \begin{tikzpicture}[sw/.style={anchor=south west,
                                 inner sep=0pt}]
    \ProductBoxThreeDStartHook
    \ifProductBox@mirror \ProductBox@threeD@mirror \fi
    \ifProductBox@shadow \ProductBox@threeD@shadow \fi

    \begin{scope}
      \fill[white,
            yslant=\ProductBox@p@front@yslant,
            xscale=\ProductBox@p@front@xscale,
            yscale=\ProductBox@p@front@yscale,
            anchor=south west]
        rectangle (\ProductBox@x,\ProductBox@y);
      \draw
        node[sw,
             yslant=\ProductBox@p@front@yslant,
             xscale=\ProductBox@p@front@xscale,
             yscale=\ProductBox@p@front@yscale]
            {\copy\ProductBox@Front};
      \fill[black,
            fill opacity=.025,
            yslant=\ProductBox@p@front@yslant,
            xscale=\ProductBox@p@front@xscale,
            yscale=\ProductBox@p@front@yscale,
            anchor=south west]
        rectangle (\ProductBox@x,\ProductBox@y);
      \ifProductBox@flare
        \begin{scope}[
            yslant=\ProductBox@p@front@yslant,
            xscale=\ProductBox@p@front@xscale,
            yscale=\ProductBox@p@front@yscale]
          \clip rectangle(\ProductBox@x,\ProductBox@y);
          \ProductBox@threeD@flare
        \end{scope}
      \fi
    \end{scope}
    \begin{scope}[shift={(-\ProductBox@p@left@xscale*\ProductBox@z,
                          \ProductBox@p@left@yslant
                             *\ProductBox@p@left@xscale
                             *\ProductBox@z)}]
      \fill[white,
            yslant=-\ProductBox@p@left@yslant,
            xscale=\ProductBox@p@left@xscale,
            yscale=\ProductBox@p@left@yscale,
            anchor=south west]
        rectangle (\ProductBox@z,\ProductBox@y);
      \draw
        node[sw,
             yslant=-\ProductBox@p@left@yslant,
             xscale=\ProductBox@p@left@xscale,
             yscale=\ProductBox@p@left@yscale]
            {\copy\ProductBox@Left};
      \fill[black,
            fill opacity=.25,
            yslant=-\ProductBox@p@left@yslant,
            xscale=\ProductBox@p@left@xscale,
            yscale=\ProductBox@p@left@yscale,
            anchor=south west]
        rectangle (\ProductBox@z,\ProductBox@y);
    \end{scope}
    \begin{scope}[yshift=\ProductBox@y]
      \fill [white,
             anchor=south west,
             xslant=-\ProductBox@p@top@xslant,
             xscale=\ProductBox@p@top@xscale,
             yslant=\ProductBox@p@top@yslant,
             yscale=\ProductBox@p@top@yscale]
        rectangle (\ProductBox@x,\ProductBox@z);
      \draw
        node[sw,
             xslant=-\ProductBox@p@top@xslant,
             xscale=\ProductBox@p@top@xscale,
             yslant=\ProductBox@p@top@yslant,
             yscale=\ProductBox@p@top@yscale]
            {\copy\ProductBox@Top};
      \fill [black,
             fill opacity=.0025,
             anchor=south west,
             xslant=-\ProductBox@p@top@xslant,
             xscale=\ProductBox@p@top@xscale,
             yslant=\ProductBox@p@top@yslant,
             yscale=\ProductBox@p@top@yscale]
         rectangle (\ProductBox@x,\ProductBox@z);
    \end{scope}
    \begin{scope}[shift={(-\ProductBox@p@left@xscale*\ProductBox@z,
        \ProductBox@p@left@yslant*\ProductBox@p@left@xscale*\ProductBox@z)}]
      \draw [\ProductBox@edgeColor,
             line width=.5mm,
             draw opacity=.25,
             yslant=-\ProductBox@p@left@yslant,
             xscale=\ProductBox@p@left@xscale]
        (\ProductBox@z,0mm) --
        (\ProductBox@z,\ProductBox@y) --
        (0mm,\ProductBox@y);
    \end{scope}
    \draw [\ProductBox@edgeColor,
           line width=.5mm,
           draw opacity=.25,
           yslant=\ProductBox@p@front@yslant,
           xscale=\ProductBox@p@front@xscale,
           anchor=south west]
      (0mm,\ProductBox@y) -- (\ProductBox@x,\ProductBox@y);
    \ProductBoxThreeDEndHook
  \end{tikzpicture}}
\newcommand\ProductBox@setFrontParams[3]{%
  \def\ProductBox@p@front@yslant{#1}%
  \def\ProductBox@p@front@xscale{#2}%
  \def\ProductBox@p@front@yscale{#3}%
}
\newcommand\ProductBox@setLeftParams[3]{%
  \def\ProductBox@p@left@yslant{#1}%
  \def\ProductBox@p@left@xscale{#2}%
  \def\ProductBox@p@left@yscale{#3}%
}
\newcommand\ProductBox@setTopParams[4]{%
  \def\ProductBox@p@top@xslant{#1}%
  \def\ProductBox@p@top@yslant{#2}%
  \def\ProductBox@p@top@xscale{#3}%
  \def\ProductBox@p@top@yscale{#4}%
}
\newcommand\ProductBox@setMirrorParams[1]{%
  \def\ProductBox@p@mirror@yscale{#1}%
}
\@namedef{ProductBox@View@1}{%
  \ProductBox@setFrontParams{.25}{.9090909}{1}%
  \ProductBox@setLeftParams{.5}{.6666666}{1}%
  \ProductBox@setTopParams{2}{.2265}{1.363}{.3333333}%
  \ProductBox@setMirrorParams{.4}}
\@namedef{ProductBox@View@2}{%
  \ProductBox@setFrontParams{.15}{.9090909}{1}%
  \ProductBox@setLeftParams{.6666666}{.5}{1}%
  \ProductBox@setTopParams{1.5}{.12}{1.11}{.333333}%
  \ProductBox@setMirrorParams{.4}}
\@namedef{ProductBox@View@3}{%
  \ProductBox@setFrontParams{.05}{.95}{1}%
  \ProductBox@setLeftParams{.25}{.4}{1}%
  \ProductBox@setTopParams{4}{.04}{1.133333}{.1}%
  \ProductBox@setMirrorParams{.4}}
\@nameuse{ProductBox@View@1}
\newcommand\ProductBox@threeD@shadow{
    \begin{scope}
      \foreach \x in {.5,1,1.5,2,2.5,3,4,5,6,8,10} {
        \filldraw [black,
                   line width=\x mm,
                   rounded corners=2mm,
                   opacity=.01,
                   shift={(-1mm,1mm)}]
          (0mm,0mm) --
          (-\ProductBox@p@top@xslant
           *\ProductBox@p@left@xscale
           *\ProductBox@z,
           \ProductBox@p@top@yscale
           *\ProductBox@z) --
          (0mm,
           \ProductBox@p@top@yscale*\ProductBox@z +
           \ProductBox@p@top@xslant
           *\ProductBox@p@left@xscale
           *\ProductBox@p@top@yslant
           *\ProductBox@z) --
          cycle;
      }
    \end{scope}
}
\tikzfading[name=ProductBoxFade,
            top color=transparent!100,
            bottom color=transparent!50,
            middle color=transparent!100]
\newcommand\ProductBox@threeD@mirror{%
  \fill
    node[anchor=south west,
         inner sep=0pt,
         yslant=\ProductBox@p@front@yslant,
         xscale=\ProductBox@p@front@xscale,
         yscale=-\ProductBox@p@mirror@yscale]
      {\begin{tikzpicture}
            \clip rectangle (\ProductBox@x,
                             \ProductBox@y*\ProductBox@p@mirror@yscale);
            \fill node [scope fading=ProductBoxFade,
                        yscale=\ProductBox@p@mirror@yscale,
                        inner sep=0pt]{\copy\ProductBox@Front};
          \end{tikzpicture}};
  \fill[xshift=-\ProductBox@p@left@xscale*\ProductBox@z,
        yshift=\ProductBox@p@top@yscale*\ProductBox@z]
    node[anchor=south west,
         inner sep=0pt,
         yslant=-\ProductBox@p@left@yslant,
         xscale=\ProductBox@p@left@xscale,
         yscale=-\ProductBox@p@mirror@yscale]
      {\begin{tikzpicture}
         \clip rectangle (\ProductBox@z,
                          \ProductBox@y*\ProductBox@p@mirror@yscale);
         \fill node [scope fading=ProductBoxFade,
                     yscale=\ProductBox@p@mirror@yscale,
                     inner sep=0pt]{\copy\ProductBox@Left};

       \end{tikzpicture}};
}
\newcommand\ProductBox@threeD@flare{
  \fill [white,path fading=ProductBoxFlare]
    (.8*\ProductBox@x,.9*\ProductBox@y)
    circle(\ProductBox@flareDiameter);
}
\tikzfading[name=ProductBoxFlare,
            inner color=transparent!60,
            outer color=transparent!100]
\@namedef{ProductBox@style@3D}{\ProductBox@style@threeD}
\@namedef{ProductBox@style@3d}{\ProductBox@style@threeD}
\endinput
%%
%% End of file `productbox.sty'.
