%% 
%% This is file `wallpaper.sty' v 1.10
%%
%% Author Michael H.F. Wilkinson 
%%   April 21, 2006
%% 
%% Create background, either centered, tiled, or in any corner   
%% relies heavily on eso-pic.sty, corrects for changes in \hoffset 
%% by classes such as sciposter.cls
%% Problems, bugs and comments to 
%%        michael@cs.rug.nl
%% version 1.10, 2006/04/21:
%%               - Commands added for corner wallpapers 
%%
%% version 1.01, 2005/01/18:
%%               - \providecommand{\LenToUnit} included to be compatible
%%                  with earlier versions of eso-pic.sty
%%
%% version 1.00, 2004/12/22:
%%               - first release
%%
%%
\ProvidesPackage{wallpaper}[2005/01/18, v1.01 easy wallpaper formatting (MHFW)]
\NeedsTeXFormat{LaTeX2e}[1995/06/01]

\RequirePackage{ifthen}
\RequirePackage{calc}
\RequirePackage{eso-pic}
\RequirePackage{graphicx}

\providecommand{\LenToUnit}[1]{#1\@gobble}


\newlength{\wpXoffset}
\setlength{\wpXoffset}{-\hoffset}
\newlength{\wpYoffset}
\setlength{\wpYoffset}{0pt}
\newlength{\tileXoffset}
\newlength{\tileYoffset}
\newlength{\tilewidth}
\newlength{\tileheight}
\newlength{\tileX}
\newlength{\tileY}

\newcommand{\LLCornerWallPaper}[2]{%
\AddToShipoutPicture{%
  \AtPageLowerLeft{%
    \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
                     keepaspectratio]{#2}%
    }
  }
}

\newcommand{\ThisLLCornerWallPaper}[2]{%
\AddToShipoutPicture*{%
  \AtPageLowerLeft{%
    \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
                     keepaspectratio]{#2}%
    }
  }
}

\newcommand{\ULCornerWallPaper}[2]{%
  \AddToShipoutPicture{%
    \AtPageLowerLeft{%
      \parbox[b][\paperheight]{#1\paperwidth}{%       
        \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
        keepaspectratio]{#2}%
        \vfill%
      }
    }
  }
}

\newcommand{\ThisULCornerWallPaper}[2]{%
  \AddToShipoutPicture*{%
    \AtPageLowerLeft{%
      \parbox[b][\paperheight]{#1\paperwidth}{%       
        \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
        keepaspectratio]{#2}%
        \vfill%
      }
    }
  }
}

\newcommand{\LRCornerWallPaper}[2]{%
  \AddToShipoutPicture{%
    \AtPageLowerLeft{%
      \parbox[b]{\paperwidth}{%       
        \hfill \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
        keepaspectratio]{#2}%
      }
    }
  }
}

\newcommand{\ThisLRCornerWallPaper}[2]{%
  \AddToShipoutPicture*{%
    \AtPageLowerLeft{%
      \parbox[b]{\paperwidth}{%       
        \hfill \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
        keepaspectratio]{#2}%
      }
    }
  }
}

\newcommand{\URCornerWallPaper}[2]{%
  \AddToShipoutPicture{%
    \AtPageLowerLeft{%
      \parbox[b][\paperheight]{\paperwidth}{%       
        \hfill \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
        keepaspectratio]{#2}%
        \vfill%
      }
    }
  }
}
\newcommand{\ThisURCornerWallPaper}[2]{%
  \AddToShipoutPicture*{%
    \AtPageLowerLeft{%
      \parbox[b][\paperheight]{\paperwidth}{%       
        \hfill \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
        keepaspectratio]{#2}%
        \vfill%
      }
    }
  }
}

\newcommand{\CenterWallPaper}[2]{%
\AddToShipoutPicture{\put(\LenToUnit{\wpXoffset},\LenToUnit{\wpYoffset}){%
     \parbox[b][\paperheight]{\paperwidth}{%       
       \vfill
       \centering
       \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
                        keepaspectratio]{#2}%
       \vfill
     }}
  }
}  

\newcommand{\ThisCenterWallPaper}[2]{%
\AddToShipoutPicture*{\put(\LenToUnit{\wpXoffset},\LenToUnit{\wpYoffset}){%
     \parbox[b][\paperheight]{\paperwidth}{%       
       \vfill
       \centering
       \includegraphics[width=#1\paperwidth,height=#1\paperheight,%
                        keepaspectratio]{#2}%
       \vfill
     }}}
}  



\newcommand{\TileSquareWallPaper}[2]{%
\AddToShipoutPicture{%
  \begingroup
    \setlength{\tileYoffset}{\wpYoffset}
    \setlength{\tilewidth}{\paperwidth/#1}%
    \setlength{\tileheight}{\tilewidth}%
    \setlength{\tileY}{0pt}%
    \whiledo{\lengthtest{\tileY < \paperheight}}{% 
      \setlength{\tileX}{0pt}%
      \setlength{\tileXoffset}{\wpXoffset}%
      \whiledo{\lengthtest{\tileX < \paperwidth}}{% 
        \put(\LenToUnit{\tileXoffset},\LenToUnit{\tileYoffset}){%
          \includegraphics[height=\tileheight,width=\tilewidth]{#2}}%
        \addtolength{\tileX}{\tilewidth}
        \addtolength{\tileXoffset}{\tilewidth}
      }%
      \addtolength{\tileY}{\tileheight}
      \addtolength{\tileYoffset}{\tileheight}
    }%
  \endgroup  
}%
}

\newcommand{\ThisTileSquareWallPaper}[2]{%
\AddToShipoutPicture*{%
  \begingroup
    \setlength{\tileYoffset}{\wpYoffset}
    \setlength{\tilewidth}{\paperwidth/#1}%
    \setlength{\tileheight}{\tilewidth}%
    \setlength{\tileY}{0pt}%
    \whiledo{\lengthtest{\tileY < \paperheight}}{% 
      \setlength{\tileX}{0pt}%
      \setlength{\tileXoffset}{\wpXoffset}%
      \whiledo{\lengthtest{\tileX < \paperwidth}}{% 
        \put(\LenToUnit{\tileXoffset},\LenToUnit{\tileYoffset}){%
          \includegraphics[height=\tileheight,width=\tilewidth]{#2}}%
        \addtolength{\tileX}{\tilewidth}
        \addtolength{\tileXoffset}{\tilewidth}
      }%
      \addtolength{\tileY}{\tileheight}
      \addtolength{\tileYoffset}{\tileheight}
    }%
  \endgroup  
}%
}


\newcommand{\TileWallPaper}[3]{%
\AddToShipoutPicture{%
  \begingroup
    \setlength{\tileYoffset}{\wpYoffset}
    \setlength{\tilewidth}{#1}%
    \setlength{\tileheight}{#2}%
    \setlength{\tileY}{0pt}%
    \whiledo{\lengthtest{\tileY < \paperheight}}{% 
      \setlength{\tileX}{0pt}%
      \setlength{\tileXoffset}{\wpXoffset}%
      \whiledo{\lengthtest{\tileX < \paperwidth}}{% 
        \put(\LenToUnit{\tileXoffset},\LenToUnit{\tileYoffset}){%
          \includegraphics[height=\tileheight,width=\tilewidth]{#3}}%
        \addtolength{\tileX}{\tilewidth}
        \addtolength{\tileXoffset}{\tilewidth}
      }%
      \addtolength{\tileY}{\tileheight}
      \addtolength{\tileYoffset}{\tileheight}
    }%
  \endgroup  
}%
}

\newcommand{\ThisTileWallPaper}[3]{%
\AddToShipoutPicture*{%
  \begingroup
    \setlength{\tileYoffset}{\wpYoffset}
    \setlength{\tilewidth}{#1}%
    \setlength{\tileheight}{#2}%
    \setlength{\tileY}{0pt}%
    \whiledo{\lengthtest{\tileY < \paperheight}}{% 
      \setlength{\tileX}{0pt}%
      \setlength{\tileXoffset}{\wpXoffset}%
      \whiledo{\lengthtest{\tileX < \paperwidth}}{% 
        \put(\LenToUnit{\tileXoffset},\LenToUnit{\tileYoffset}){%
          \includegraphics[height=\tileheight,width=\tilewidth]{#3}}%
        \addtolength{\tileX}{\tilewidth}
        \addtolength{\tileXoffset}{\tilewidth}
      }%
      \addtolength{\tileY}{\tileheight}
      \addtolength{\tileYoffset}{\tileheight}
    }%
  \endgroup  
}%
}

\newcommand{\ClearWallPaper}{\ClearShipoutPicture}