%%
%% This is file `blowup.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% blowup.dtx  (with options: `package')
%% 
%%    Copyright (C) 2007
%%    Rolf Niepraschk, Rolf.Niepraschk@gmx.de
%% 
%%    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 2003/12/01 or later.
%% 
%%    This work has the LPPL maintenance status "author-maintained".
%% 
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{blowup}
    [2008/07/13 v0.1i Document Scaling (RN)]
\RequirePackage{everyshi,graphics,keyval}
\@ifpackageloaded{typearea}{}{%
  \newcommand*\BL@save@dimen[1]{%
    \@ifundefined{BL@#1}{%
      \expandafter\newlength\csname BL@#1\endcsname}{}%
    \csname BL@#1\endcsname\csname #1\endcsname
    \g@addto@macro\BL@restore@dimens{%
      \csname #1\endcsname\csname BL@#1\endcsname}%
  }%
  \newcommand*\BL@restore@dimens{}%
  \BL@save@dimen{textwidth}%
  \BL@save@dimen{textheight}%
  \BL@save@dimen{evensidemargin}%
  \BL@save@dimen{oddsidemargin}%
  \BL@save@dimen{topmargin}%
  \BL@save@dimen{headheight}%
  \BL@save@dimen{headsep}%
  \BL@save@dimen{topskip}%
  \BL@save@dimen{footskip}%
  \BL@save@dimen{baselineskip}%
  \RequirePackage{typearea}%
  \BL@restore@dimens
  \let\BL@save@dimen=\relax
  \let\BL@restore@dimens=\relax
}
\providecommand*\vb@xt@{\vbox to}
\newlength\sPaperWidth  \sPaperWidth=\paperwidth
\newlength\sPaperHeight \sPaperHeight=\paperheight
\newcommand*\BL@@resize{}
\newcommand*\BL@scalePage{%
  \setbox\@cclv=\vbox{\vskip1in\unvbox\@cclv}%
  \setbox\@cclv=\vbox{\moveright1in\box\@cclv}%
  \setbox\@cclv=\hb@xt@\paperwidth{\box\@cclv\hss}%
  \setbox\@cclv=\vb@xt@\paperheight{\box\@cclv\vss}%
  \let\BL@@resize=\@firstofone
  \ifBL@noscale\else
    \def\BL@@resize##1{\resizebox{\sPaperWidth}{!}{##1}}%
    \setbox\@tempboxa=\hbox{\set@typeset@protect
      \BL@@resize{\copy\@cclv}}%
    \ifdim\ht\@tempboxa>\sPaperHeight
      \def\BL@@resize##1{\resizebox{!}{\sPaperHeight}{##1}}%
    \fi
  \fi
  \setbox\@tempboxa=\vb@xt@\sPaperHeight{\set@typeset@protect
    \kern\z@\BL@t
    \hb@xt@\sPaperWidth{\BL@l\BL@@resize{\box\@cclv}\BL@r}%
    \BL@b\kern\z@
  }%
  \setbox\@cclv=\vbox{\box\@tempboxa}%
  \setbox\@cclv=\vbox{\vskip-1in\unvbox\@cclv}%
  \setbox\@cclv=\vbox{\moveright-1in\box\@cclv}%
}
\newcommand\BL@tempa{}
\newcommand\BL@tempb{}
\newcommand*\BL@strip@comma{}
\def\BL@strip@comma#1,{#1}
\newcommand*\BL@if@dimen@pair[1]{%
  \expandafter\BL@@if@dimen@pair#1,\@nil
}
\newcommand*\BL@@if@dimen@pair{}
\def\BL@@if@dimen@pair#1,#2\@nil{%
  \edef\BL@tempa{#1}\edef\BL@tempb{#2}%
  \@tempswafalse
  \ifx\BL@tempb\@empty\else
    \edef\BL@tempb{\expandafter\BL@strip@comma\BL@tempb}%
    \ifdimen{\BL@tempa}{\@tempswatrue}{}%
    \if@tempswa
      \ifdimen{\BL@tempb}{}{\@tempswafalse}%
    \fi
  \fi
  \if@tempswa
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\newcommand*\BL@strip@x{}
\def\BL@strip@x#1x{#1}
\newcommand*\BL@if@factor[1]{%
  \expandafter\BL@@if@factor#1x\@nil
}
\newcommand*\BL@@if@factor{}
\def\BL@@if@factor#1x#2\@nil{%
  \edef\BL@tempa{#2}%
  \ifx\BL@tempa\@empty
    \expandafter\@secondoftwo
  \else
    \edef\BL@tempa{\expandafter\BL@strip@x\BL@tempa}%
    \expandafter\@firstoftwo
  \fi
}
\define@key{BL@}{paper}{%
  \BL@if@dimen@pair{#1}{%
    \global\sPaperWidth=\BL@tempa\relax
    \global\sPaperHeight=\BL@tempb\relax
  }{%
    \BL@if@factor{#1}{%
      \global\sPaperWidth=\BL@tempa\paperwidth
      \global\sPaperHeight=\BL@tempa\paperheight
    }{%
      \begingroup
        \KOMAoptions{paper=portrait,paper=#1}%
        \global\sPaperWidth=\paperwidth
        \global\sPaperHeight=\paperheight
      \endgroup
    }%
  }%
}%
\newif\ifBL@noscale \BL@noscalefalse
\define@key{BL@}{noscale}[true]{%
  \csname BL@noscale#1\endcsname
}
\newcommand*\BL@l{\hss}
\newcommand*\BL@r{\hss}
\newcommand*\BL@i{}
\newcommand*\BL@o{}
\newcommand*\BL@t{\vss}
\newcommand*\BL@b{\vss}
\newcommand\BL@setPos[1]{%
  \def\BL@l{\hss}\def\BL@r{\hss}%
  \def\BL@t{\vss}\def\BL@b{\vss}%
  \def\BL@i{}\def\BL@o{}%
  \BL@if@dimen@pair{#1}{%
    \edef\BL@b{\vskip\BL@tempb}%
    \if@twoside
      \edef\BL@l{\noexpand\ifodd\value{page}%
        \hskip\BL@tempa\noexpand\else\hss\noexpand\fi}%
      \edef\BL@r{\noexpand\ifodd\value{page}%
        \hss\noexpand\else\hskip\BL@tempa\noexpand\fi}%
    \else
      \edef\BL@l{\hskip\BL@tempa}%
    \if
  }{%
    \@for\BL@tempa:=#1\do{%
      \edef\BL@tempb{\expandafter\@car\BL@tempa\@nil}%
      \expandafter\let\csname BL@\BL@tempb \endcsname\relax
      \if@twoside
        \ifx\BL@i\relax
          \def\BL@r{\ifodd\value{page}\hss\else\relax\fi}%
          \def\BL@l{\ifodd\value{page}\relax\else\hss\fi}%
        \fi
        \ifx\BL@o\relax
          \def\BL@l{\ifodd\value{page}\hss\else\relax\fi}%
          \def\BL@r{\ifodd\value{page}\relax\else\hss\fi}%
        \fi
      \fi
    }%
  }%
}
\define@key{BL@}{pos}{%
  \BL@setPos{#1}%
}
\newif\ifBL@landscape \BL@landscapefalse
\define@key{BL@}{landscape}[true]{%
  \csname BL@landscape#1\endcsname
}
\newcommand*\BL@pageInit{}
\define@key{BL@}{onepage}[true]{%
  \csname if#1\endcsname
    \def\BL@pageInit{\gdef\shipout{\setbox\@tempboxa=}}%
  \fi
}
\newcommand*\blowUp[1]{%
  \setkeys{BL@}{#1}%
  \ifBL@landscape
    \@tempdima=\sPaperWidth
    \global\sPaperWidth=\sPaperHeight
    \global\sPaperHeight=\@tempdima
  \fi
  \EveryShipout{\BL@scalePage}%
  \gdef\blowUp##1{%
    \PackageWarning{blowup}{%
      Only the first call of `\string\blowUp' \MessageBreak is effective}}%
}
\EveryShipout{\BL@pageInit}
\@onlypreamble\blowUp
\AtBeginDocument{%
  \let\Gm@checkdrivers=\relax
  \BL@pagesize@specials{\sPaperWidth}{\sPaperHeight}%
}
\newcommand*\BL@pagesize@specials[2]{}
\@ifundefined{Gin@driver}{}{%
  \ifx\Gin@driver\@empty\else
    \filename@parse{\Gin@driver}\@tempswafalse
    \def\reserved@a{dvips}%
    \ifx\filename@base\reserved@a\@tempswatrue\fi
    \def\reserved@a{dvipdfm}%
    \ifx\filename@base\reserved@a\@tempswatrue\fi
    \if@tempswa
      \PackageInfo{blowup}{Generating code for dvips}%
      \def\BL@pagesize@specials#1#2{%
        \@tempdima=#1\@tempdimb=#2%
        \AtBeginDvi{\special{papersize=\the\@tempdima,\the\@tempdimb}}}%
    \fi
    \def\reserved@a{pdftex}%
    \ifx\filename@base\reserved@a
      \PackageInfo{blowup}{Generating code for pdfTeX}%
      \def\BL@pagesize@specials#1#2{%
        \pdfpagewidth=#1\relax\pdfpageheight=#2\relax}%
    \fi
    \def\reserved@a{vtex}%
    \ifx\filename@base\reserved@a
      \PackageInfo{blowup}{Generating code for VTeX}%
      \def\BL@pagesize@specials#1#2{%
        \mediawidth=#1\relax\mediaheight=#2\relax}%
    \fi
  \fi
}
\endinput
%%
%% End of file `blowup.sty'.
