\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-pdftex.def,v 1.4 2005/10/06 13:16:09 tantau Exp $

% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>.
%
% This program can be redistributed and/or modified under the terms
% of the GNU Public License, version 2.




% Driver commands for pdf

%
% Load common pdf commands:
%
\input pgfsys-common-pdf.def

%
% pdftex-specific stuff:
%
\def\pgfsys@invoke#1{\pdfliteral{#1}}

\def\pgfsys@hboxsynced#1{%
  {%
    \pgfsys@beginscope%
    \setbox\pgf@hbox=\hbox{%
      \hskip\pgf@pt@x%
      \raise\pgf@pt@y\hbox{%
        \pgf@pt@x=0pt%
        \pgf@pt@y=0pt%
        \pgflowlevelsynccm% 
        \pgfsys@hbox#1}%
      \hss%
    }%
    \wd\pgf@hbox=0pt%
    \ht\pgf@hbox=0pt%
    \dp\pgf@hbox=0pt%
    \box\pgf@hbox%
    \pgfsys@endscope%
  }%
}

\let\pgf@sys@pgf@resource@list=\@empty%
\def\pgf@sys@pdf@addtopageresources#1{%
  \xdef\pgf@sys@pgf@resource@list{\pgf@sys@pgf@resource@list\space#1}%
  \edef\pgf@temp{{<<\pgf@sys@pgf@resource@list>>}}%
  \expandafter\immediate\expandafter\pdfobj\pgf@temp%
  \edef\pgf@temp{{/ExtGState \the\pdflastobj\space 0 R}}
  \expandafter\global\expandafter\pdfpageresources\pgf@temp%
}


\def\pgfsys@imagesuffixlist{pdf:jpg:jpeg:png}
\def\pgfsys@defineimage{% width, height, page number
  \ifx\pgf@imagewidth\@empty\else\edef\pgf@imagewidth{ width \pgf@imagewidth }\fi%
  \ifx\pgf@imageheight\@empty\else\edef\pgf@imageheight{ height \pgf@imageheight }\fi%
  \ifx\pgf@imagepage\@empty\else\edef\pgf@imagepage{ page \pgf@imagepage }\fi%
  \ifx\pdfximage\@undefined% old version of pdflatex
    \ifx\pgf@imagepage\@empty\else%
      \PackageWarning{pgf}{Page selection not supported. Ignoring
        page selection}%
    \fi%
    \setbox\@tempboxa=\hbox{%
      \pdfimage \pgf@imageheight \pgf@imagewidth {\pgf@filename}}%
    \pdfform\@tempboxa%
    \edef\pgf@image{\noexpand\pdfrefform\the\pdflastform}%
  \else% new version
    {\pdfximage \pgf@imageheight \pgf@imagewidth attr
      {\pgf@imageinterpolate\space\pgf@imagemask} \pgf@imagepage
      {\pgf@filename}}%
    \edef\pgf@image{\noexpand\pdfrefximage\the\pdflastximage}%
  \fi
}%
\def\pgfsys@definemask{%
  \ifx\pgf@maskmatte\@empty%
  \else%
    \edef\pgf@maskmatte{/Matte [\pgf@maskmatte]}%
  \fi%
  \edef\pgf@attr{{\pgf@maskmatte\space /Decode [1 0]}}%
  \immediate\pdfximage attr \pgf@attr {\pgf@filename}%
  \edef\pgf@mask{\the\pdflastximage}%
}
\def\pgfsys@horishading#1#2#3{%
  {%
    \pgf@parsefunc{#3}%
    \setbox\@tempboxa=\hbox to\pgf@max{\vbox to#2{\vfil\pdfliteral{/Sh sh}}\hfil}%
    \pgf@process{\pgfpoint{\pgf@max}{#2}}%
    \pdfxform resources {%
      /Shading << /Sh << /ShadingType 2
      /ColorSpace /DeviceRGB
      /Domain [\pgf@pdfparseddomain]
      /Coords [\pgf@doma\space0 \pgf@domb\space0]
      /Function \pgf@pdfparsedfunction
      /Extend [false false] >> >>}\@tempboxa%
    \expandafter\xdef\csname @pgfshading#1!\endcsname{\leavevmode\noexpand\pdfrefxform\the\pdflastxform}% 
  }%
}
\def\pgfsys@vertshading#1#2#3{%
  {%
    \pgf@parsefunc{#3}%
    \setbox\@tempboxa=\hbox to#2{\vbox to\pgf@max{\vfil\pdfliteral{/Sh sh}}\hfil}%
    \pgf@process{\pgfpoint{#2}{\pgf@max}}%
    \pdfxform resources {%
      /Shading << /Sh << /ShadingType 2
      /ColorSpace /DeviceRGB
      /Domain [\pgf@pdfparseddomain]
      /Coords [0 \pgf@doma\space0 \pgf@domb]
      /Function \pgf@pdfparsedfunction
      /Extend [false false] >> >>}\@tempboxa%
    \expandafter\xdef\csname @pgfshading#1!\endcsname{\leavevmode\noexpand\pdfrefxform\the\pdflastxform}%
  }%
}
\def\pgfsys@radialshading#1#2#3{%
  {%
    \pgf@parsefunc{#3}%
    \setbox\@tempboxa=\hbox to2\pgf@max{\vbox to2\pgf@max{\vfil\pdfliteral{/Sh sh}}\hfil}%
    \pgf@process{#2}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpoint{\pgf@max}{\pgf@max}}%
    \advance\pgf@xa by \pgf@x%
    \advance\pgf@ya by \pgf@y%
    \pdfxform resources {%
      /Shading << /Sh << /ShadingType 3
      /ColorSpace /DeviceRGB
      /Domain [\pgf@pdfparseddomain]
      /Coords [\pgf@sys@tonumber{\pgf@xa} \pgf@sys@tonumber{\pgf@ya} \pgf@doma\space \pgf@sys@tonumber{\pgf@x} \pgf@sys@tonumber{\pgf@y} \pgf@domb]
      /Function \pgf@pdfparsedfunction
      /Extend [true false] >> >>}\@tempboxa%
    \expandafter\xdef\csname @pgfshading#1!\endcsname{\leavevmode\noexpand\pdfrefxform\the\pdflastxform}%
  }%
}%

  % XForm version, crashes ghostview.
  %\def\pgfsys@defobject#1#2#3#4{%
  %  \pgf@process{#2}
  %  \setbox\pgfobjectbox\hbox{\raise-\pgf@y\hbox{\hskip-\pgf@x\relax#4}}
  %  \pgf@process{#3}
  %  \pgf@xa=\pgf@x
  %  \pgf@ya=\pgf@y
  %  \pgf@process{#2}
  %  \advance\pgf@xa by-\pgf@x
  %  \advance\pgf@ya by-\pgf@y  
  %  \wd\pgfobjectbox=\pgf@xa
  %  \dp\pgfobjectbox=0pt
  %  \ht\pgfobjectbox=\pgf@ya
  %  \pdfxform\pgfobjectbox
  %  \expandafter\xdef\csname#1\endcsname{\the\pdflastxform}
  %  \expandafter\xdef\csname pgf@trans#1\endcsname
  %  {{\pgfget x}{\pgfget y}}}
  %\def\pgfsys@useobject#1#2{%
  %  \setbox\pgfobjectbox\hbox{\pdfrefxform \csname#1\endcsname}%
  %  \dp\pgfobjectbox=0pt%
  %  \ht\pgfobjectbox=0pt%
  %  \wd\pgfobjectbox=0pt%
  %  \pgfsys@discardpath%
  %  \pgfsys@beginscope%
  %  #2%
  %  \edef\pgf@temp{{1}{0}{0}{1}\csname pgf@trans#1\endcsname}%
  %  \expandafter\pgfsys@transform\pgf@temp%
  %  \box\pgfobjectbox%
  %  \pgfsys@endscope}

\endinput


%%% Local Variables: 
%%% mode: latex
%%% End: 
