% Copyright 2015 by Till Tantau
% Copyright 2016 by Till Tantau and LaTeX3 Project
%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% 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.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is the LaTeX3 Project.
%%
%% https://github.com/latex3/graphics-def/issues
%
\ProvidesFile{dvisvgm.def}[2017/06/01 v1.0a dvisvgm graphics driver for latex]
% The following is copied from dvips.def:
\def\c@lor@arg#1{%
  \dimen@#1\p@
  \ifdim\dimen@<\z@\dimen@\maxdimen\fi
  \ifdim\dimen@>\p@
    \PackageError{color}{Argument `#1' not in range [0,1]}\@ehd
  \fi}
\def\color@gray#1#2{%
  \c@lor@arg{#2}%
  \edef#1{gray #2}%
  }
\def\color@cmyk#1#2{\c@lor@@cmyk#2\@@#1}
\def\c@lor@@cmyk#1,#2,#3,#4\@@#5{%
  \c@lor@arg{#4}%
  \c@lor@arg{#1}%
  \c@lor@arg{#2}%
  \c@lor@arg{#3}%
  \edef#5{cmyk #1 #2 #3 #4}%
  }
\def\color@rgb#1#2{\c@lor@@rgb#2\@@#1}
\def\c@lor@@rgb#1,#2,#3\@@#4{%
  \c@lor@arg{#1}%
  \c@lor@arg{#2}%
  \c@lor@arg{#3}%
  \edef#4{rgb #1 #2 #3}%
  }
\def\color@RGB#1#2{\c@lor@@RGB#2\@@#1}
\def\c@lor@@RGB#1,#2,#3\@@#4{%
 \c@lor@RGB@rgb{#1}\@tempa
 \c@lor@RGB@rgb{#2}\@tempb
 \c@lor@RGB@rgb{#3}\@tempc
 \c@lor@@rgb\@tempa,\@tempb,\@tempc\@@#4%
  }
\def\c@lor@RGB@rgb#1#2{%
  \dimen@#1\p@
  \divide\dimen@\@cclv
  \edef#2{\strip@pt\dimen@}}
\def\color@hsb#1#2{\c@lor@@hsb#2\@@#1}
\def\c@lor@@hsb#1,#2,#3\@@#4{%
  \c@lor@arg{#1}%
  \c@lor@arg{#2}%
  \c@lor@arg{#3}%
  \edef#4{hsb #1 #2 #3}%
  }
\def\color@named#1#2{\c@lor@@named#2,,\@@#1}
\def\c@lor@@named#1,#2,#3\@@#4{%
  \@ifundefined{col@#1}%
    {\PackageError{color}{Undefined color `#1'}\@ehd}%
  {\edef#4{ #1}}%
  }
\def\current@color{ Black}
\def\set@color{\special{color push  \current@color}\aftergroup\reset@color}
\def\reset@color{\special{color pop}}
\def\set@page@color{\special{bgcolor \current@color}}
\def\define@color@named#1#2{\expandafter\let\csname col@#1\endcsname\@nnil}
\def\Grot@start{\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(1,-1)rotate(\Grot@angle)scale(-1,1)translate({?x},{?y})scale(-1)">}}
\def\Grot@end{\special{dvisvgm:raw </g>}}
\def\Gscale@start{\special{dvisvgm:raw <g transform="translate({?x},{?y})scale(\Gscale@x,\Gscale@y)scale(-1)translate({?x},{?y})scale(-1)">}}
\def\Gscale@end{\special{dvisvgm:raw </g>}}
\def\Gin@extensions{.png,.jpg,.jpeg,.svg}
\def\Ginclude@bitmap#1{%
  \dimen@\Gin@urx pt%
  \advance\dimen@ by-\Gin@llx pt%
  \edef\Gin@svg@view@width{\strip@pt\dimen@}%
  \dimen@\Gin@ury pt%
  \advance\dimen@ by-\Gin@lly pt%
  \edef\Gin@svg@view@height{\strip@pt\dimen@}%
  \dimen@\Gin@svg@real@height@bp pt%
  \advance\dimen@ by-\Gin@ury pt%
  \edef\Gin@svg@view@base{\strip@pt\dimen@}%
%  \kern-\Gin@llx bp%
  \raise\Gin@req@height\hbox{%
    \special{dvisvgm: raw
      <g transform="translate({?x},{?y})">
        <svg overflow="\ifGin@clip hidden\else visible\fi" width="\strip@pt\Gin@req@width" height="\strip@pt\Gin@req@height"
             viewBox="\Gin@llx\space\Gin@svg@view@base\space\Gin@svg@view@width\space\Gin@svg@view@height">
          <image width="\Gin@svg@real@width@bp" height="\Gin@svg@real@height@bp" 
                 xlink:href="#1"/>
        </svg>
      </g>}%
%    \special{dvisvgm: img \strip@pt\Gin@req@width\space \strip@pt\Gin@req@height\space #1}
  }%
}

\@namedef{Gin@rule@.svg}#1{{svg}{.svg}{#1}}
\let\Ginclude@svg\Ginclude@bitmap
\def\Gread@svg#1{%
  \begingroup
  \catcode`\"12\relax%
  \immediate\openin\@inputcheck#1 %
  \ifeof\@inputcheck
    \@latex@error{File `#1' not found}\@ehc
  \else
     \let\Gin@urx\relax
     \let\Gin@ury\relax
     \Gread@true
     \let\@tempb\Gread@false
     \loop
       \read\@inputcheck to\@tempa
       \ifeof\@inputcheck
         \Gread@false
       \else
         \ifx\@tempa\Gin@partext\else
           \ifx\Gin@ury\relax\expandafter\Gread@svg@height\@tempa height=\relax\fi%
           \ifx\Gin@urx\relax\expandafter\Gread@svg@width\@tempa width=\relax\fi%
         \fi%
       \fi
       \ifx\Gin@urx\relax\else\ifx\Gin@ury\relax\else\Gread@false\fi\fi%
     \ifGread@
     \repeat
     \immediate\closein\@inputcheck
     \ifx\Gin@urx\relax
       \@latex@error{Cannot determine width of graphic in #1 (no BoundingBox)}\@ehc
       \def\Gin@urx{72}%
     \fi
     \ifx\Gin@ury\relax
       \@latex@error{Cannot determine height of graphic in #1 (no BoundingBox)}\@ehc
       \def\Gin@ury{72}%
     \fi
  \fi
  \edef\Gin@setter{\def\noexpand\Gin@urx{\Gin@urx}\def\noexpand\Gin@ury{\Gin@ury}}%
  \expandafter\endgroup\Gin@setter%
  \def\Gin@llx{0}% 
  \def\Gin@lly{0}%
  \edef\Gin@svg@real@width@bp{\Gin@urx}%
  \edef\Gin@svg@real@height@bp{\Gin@ury}%  
}
\def\Gin@partext{\par}
\def\Gread@svg@height#1height={\@ifnextchar\relax{}{\@ifnextchar'\Gread@svg@height@apo\Gread@svg@height@double}}
\def\Gread@svg@height@apo'#1'#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\dimen@0.99626\dimen@\edef\Gin@ury{\strip@pt\dimen@}}
\def\Gread@svg@height@double"#1"#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\dimen@0.99626\dimen@\edef\Gin@ury{\strip@pt\dimen@}}
\def\Gread@svg@width#1width={\@ifnextchar\relax{}{\@ifnextchar'\Gread@svg@width@apo\Gread@svg@width@double}}
\def\Gread@svg@width@apo'#1'#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\dimen@0.99626\dimen@\edef\Gin@urx{\strip@pt\dimen@}}
\def\Gread@svg@width@double"#1"#2\relax{\afterassignment\Gin@gobble@till@relax\dimen@#1pt\relax\dimen@0.99626\dimen@\edef\Gin@urx{\strip@pt\dimen@}}
\def\Gin@gobble@till@relax#1\relax{}

\@namedef{Gin@rule@.jpg}#1{{bitmap}{.xbb}{#1}}
\@namedef{Gin@rule@.jpeg}#1{{bitmap}{.xbb}{#1}}
\@namedef{Gin@rule@.png}#1{{bitmap}{.xbb}{#1}}

% Replace 
\def\Gread@bitmap#1{%
  \Gread@eps{#1}%
  \dimen@\Gin@urx bp%
  \advance\dimen@ by-\Gin@llx bp%
  \edef\Gin@svg@real@width@bp{\strip@pt\dimen@}%
  \dimen@\Gin@ury bp%
  \advance\dimen@ by-\Gin@lly bp%
  \edef\Gin@svg@real@height@bp{\strip@pt\dimen@}%
}

\endinput
%%
%% End of file `dvisvgm.def'.

