% Copyright 2006 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/generic/pgf/licenses/LICENSE for more details.
\ProvidesFileRCS{pgfsys-dvisvgm.def}
% Driver commands for dvisvgm
%
% Load common pdf commands:
%
\input pgfsys-common-svg.def
\newif\ifpgf@sys@svg@inpicture
\def\pgf@sys@svg@make@defs#1#2{{\let\#\pgf@sys@svg@hash\special{dvisvgm:rawset #1}\special{dvisvgm:rawdef #2}\special{dvisvgm:endrawset}}}
\def\pgf@sys@svg@ref@defs#1{\special{dvisvgm:rawput #1}}
\def\pgfsys@invoke#1{{\let\#\pgf@sys@svg@hash\special{dvisvgm:raw #1}}}
\def\pgfsys@beginpicture{%
\special{color push gray 0}% make dvisvgm *not* add anything to text
\pgf@sys@svg@inpicturetrue% in a picture
\pgfsys@svg@boxmodefalse%
\pgfsys@invoke{}}
\def\pgfsys@endpicture{\pgfsys@invoke{}\special{color pop}}
\def\pgfsys@svg@newline{{?nl}}
\let\pgf@sys@svg@last@stroke\relax%
\def\pgfsys@hbox#1{%
{%
\setbox#1=\hbox{\box#1}%
\wd#1=0pt%
\ht#1=0pt%
\dp#1=0pt%
\pgfsys@begin@idscope%
\pgfsys@invoke{}\box#1\pgfsys@invoke{}%
\pgfsys@end@idscope%
}%
}
\def\pgfsys@hboxsynced#1{%
{%
\setbox#1=\hbox{\box#1}%
\wd#1=0pt%
\ht#1=0pt%
\dp#1=0pt%
\pgfsys@begin@idscope%
\pgfsys@beginscope%
\pgflowlevelsynccm%
\pgfsys@invoke{}\box#1\pgfsys@invoke{}%
\pgfsys@endscope%
\pgfsys@end@idscope%
}%
}
\def\pgfsys@shadingoutsidepgfpicture#1{%
\begingroup%
#1%
\setbox\pgfpic=\hbox to0pt{%
\pgfsys@beginpicture%
\pgfsys@beginscope%
\pgf@sys@svg@sh@defs%
\pgf@sys@svg@sh%
\pgfsys@endscope%
\pgfsys@endpicture%
\hss%
}%
\pgf@process{\pgf@sys@svg@pos}%
\pgf@picminx=0pt%
\pgf@picminy=0pt%
\pgf@picmaxx=\pgf@x%
\pgf@picmaxy=\pgf@y%
\def\pgf@trimleft@final{0pt}%
\def\pgf@trimright@final{0pt}%
\def\pgf@shift@baseline{0pt}%
\pgfsys@typesetpicturebox\pgfpic%
\endgroup%
}
\def\pgfsys@shadinginsidepgfpicture#1{%
#1%
\pgf@sys@svg@sh@defs% hmmm....
\pgf@process{\pgf@sys@svg@pos}
\pgf@xa=-.5\pgf@x%
\pgf@ya=-.5\pgf@y%
\pgfsysprotocol@literal{}%
\pgf@sys@svg@sh%
\pgfsysprotocol@literal{}%
}
\def\pgfsys@papersize#1#2{%
{%
\pgf@x#1\relax%
\pgf@y#2\relax%
\pgf@xa-1in\relax%
\special{dvisvgm:bbox fix \pgf@sys@tonumber\pgf@xa\space \pgf@sys@tonumber\pgf@xa\space \pgf@sys@tonumber\pgf@x\space \pgf@sys@tonumber\pgf@y}%
}%
}
\def\pgfsys@prepare@papersize#1#2{%
\expandafter\gdef\expandafter\pgfsys@atbegindocument\expandafter{\pgfsys@atbegindocument\pgfsys@papersize{#1}{#2}}%
}
\def\pgfsys@typesetpicturebox#1{%
\pgf@ya=\pgf@shift@baseline\relax%
\advance\pgf@ya by-\pgf@picminy\relax%
%
%
\advance\pgf@picmaxy by-\pgf@picminy\relax% maxy is now the height
\advance\pgf@picmaxx by-\pgf@picminx\relax% maxx is now the width
\setbox#1=\hbox{\hskip-\pgf@picminx\lower\pgf@picminy\box#1}%
\ht#1=\pgf@picmaxy%
\wd#1=\pgf@picmaxx%
\dp#1=0pt%
\leavevmode%
\pgf@xa=\pgf@trimleft@final\relax \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi%
\raise-\pgf@ya\hbox{\ifpgf@sys@svg@inpicture\else\special{dvisvgm:bbox \pgf@sys@tonumber\pgf@picmaxx\space\pgf@sys@tonumber\pgf@picmaxy}\fi\box#1}%
\pgf@xa=\pgf@trimright@final\relax \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi%
}
\def\pgfsys@text@to@black@hook{%
\let\pgfsys@svg@set@color@orig\set@color%
\let\pgfsys@svg@reset@color@orig\reset@color%
\def\set@color{\special{dvisvgm:raw }\pgfsys@svg@set@color@orig}%
\def\reset@color{\special{dvisvgm:raw }\pgfsys@svg@reset@color@orig}%
}
% Fadings
% FIXME: Correct sizes!
%
% Opacity masks
%
% \def\pgfsys@fadingfrombox#1#2{%
% \setbox#2=\hbox{%
% \pgfsys@invoke{}%
% \box#2%
% \pgfsys@invoke{}%
% }%
% \wd#2=0pt%
% \ht#2=0pt%
% \dp#2=0pt%
% \unskip\box#2%
% }
% \def\pgfsys@usefading#1#2#3#4#5#6#7{%
% \pgf@sys@svg@gs@color{mask="url(\#pgfmask#1)"}%
% }
%
% Position tracking (needs pdftex or luatex in dvi mode)
%
\ifx\savepos\@undefined
\ifx\pdfsavepos\@undefined
\else
\let\pgf@savepos\pdfsavepos
\let\pgf@lastxpos\pdflastxpos
\let\pgf@lastypos\pdflastypos
\fi
\else
\let\pgf@savepos\savepos
\let\pgf@lastxpos\lastxpos
\let\pgf@lastypos\lastypos
\fi
\ifx\pgf@savepos\@undefined
\else
\def\pgfsys@markposition#1{%
\pgf@savepos%
\edef\pgf@temp{#1}%
\expandafter\pgfutil@writetoaux\expandafter{%
\expandafter\noexpand\expandafter\pgfsyspdfmark\expandafter{\pgf@temp}{\the\pgf@lastxpos}{\the\pgf@lastypos}}%
}
\def\pgfsyspdfmark#1#2#3{%
\expandafter\gdef\csname pgf@sys@pdf@mark@pos@#1\endcsname{\pgfqpoint{#2sp}{#3sp}}%
\pgfutil@check@rerun{#1}{{#2}{#3}}%
}
\def\pgfsys@getposition#1#2{%
\edef\pgf@marshal{\let\noexpand#2=\expandafter\noexpand\csname pgf@sys@pdf@mark@pos@#1\endcsname}%
\pgf@marshal%
}
\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfpointorigin}
\fi
\endinput
%%% Local Variables:
%%% mode: latex
%%% End: