diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def | 149 |
1 files changed, 144 insertions, 5 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def index 6225c5abc21..3acef85b177 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-dvisvgm.def,v 1.3 2013/08/23 09:50:22 tantau Exp $ +\ProvidesFileRCS{pgfsys-dvisvgm.def} % Driver commands for dvisvgm @@ -17,12 +17,23 @@ % \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{\pgfsys@invoke{<g transform="translate({?x},{?y}) scale(1,-1)">}} -\def\pgfsys@endpicture{\pgfsys@invoke{</g>}} +\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{<g \ifx\pgf@sys@svg@last@stroke\relax\else + stroke="\pgf@sys@svg@last@stroke" \fi stroke-miterlimit="10" transform="translate({?x},{?y})scale(0.996264,-0.996264)">}} +\def\pgfsys@endpicture{\pgfsys@invoke{</g>}\special{color pop}} \def\pgfsys@svg@newline{{?nl}} +\let\pgf@sys@svg@last@stroke\relax% + \def\pgfsys@hbox#1{% {% @@ -30,11 +41,28 @@ \wd#1=0pt% \ht#1=0pt% \dp#1=0pt% - \pgfsetcolor{.}% - \pgfsys@invoke{<g stroke="none" transform="scale(-1,1) translate({?x},{?y}) scale(-1,-1)">}\box#1\pgfsys@invoke{</g>}% + \pgfsys@begin@idscope% + \pgfsys@invoke{<g stroke="none" transform="scale(-1.00375,1.00375)translate({?x},{?y})scale(-1,-1)">}\box#1\pgfsys@invoke{</g>}% + \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{<g stroke="none" transform="scale(-1.00375,1.00375)translate({?x},{?y})scale(-1,-1)">}\box#1\pgfsys@invoke{</g>}% + \pgfsys@endscope% + \pgfsys@end@idscope% + }% +} + + \def\pgfsys@shadingoutsidepgfpicture#1{% \begingroup% #1% @@ -70,6 +98,117 @@ \pgfsysprotocol@literal{</g>}% } + + +\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 <g fill="black">}\pgfsys@svg@set@color@orig}% + \def\reset@color{\special{dvisvgm:raw </g>}\pgfsys@svg@reset@color@orig}% +} + + + +% Fadings + +% FIXME: Correct sizes! + +% +% Opacity masks +% +% \def\pgfsys@fadingfrombox#1#2{% +% \setbox#2=\hbox{% +% \pgfsys@invoke{<mask id="pgfmask#1">}% +% \box#2% +% \pgfsys@invoke{</mask>}% +% }% +% \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 |