% 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 $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-textures.def,v 1.4 2006/10/11 15:22:26 tantau Exp $


% Driver commands for textures driver


\def\pgfsys@invoke#1{\special{rawpostscript #1}}
\def\pgf@sys@postscript@header#1{\special{prepostscript #1}}
\def\pgf@sys@postscript@object#1{\special{rawpostscript #1}}


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


%
% textures-specific stuff:
%

\def\pgfsys@beginpicture{%
  \special{rawpostscript save}%
    \special{rawpostscript save pgfgetcoords}%
    \special{postscript}% here come the coordinates
    \special{rawpostscript restore}%
      \special{rawpostscript pgfbeginpicture}}
\def\pgfsys@endpicture{\special{rawpostscript restore}}
\def\pgfsys@hbox#1{%
  \pgfsys@invoke{save pgfbeginhbox}%
    \wd#1=0pt%
    \ht#1=0pt%
    \dp#1=0pt%
    \box#1%
  \pgfsys@invoke{restore}%
}
\def\pgfsys@begininvisible{%
  \special{rawpostscript gsave nulldevice}%
}
\def\pgfsys@endinvisible{%
  \special{rawpostscript grestore}%
}
\def\pgfsys@color@unstacked#1{\special{rawpostscript \XC@usecolor{#1}}}

\def\pgfsys@imagesuffixlist{epsi:eps:ps}

\AtBeginDocument{
  % Always present specials.
  \special{prepostscript
    /pgfsc{}bind def% stroke color is empty by default
    /pgffc{}bind def% fill color is empty by default
    /pgfe{moveto dup 0 rlineto exch 0 exch rlineto neg 0 rlineto closepath}bind def% rectangle
    /pgfstr{stroke}bind def%
    /pgffill{fill}bind def%
    /pgfeofill{eofill}bind def%
    /pgfw{setlinewidth}bind def% setlinewidth
    /pgfgetcoords{/sps{globaldict begin /pgfgy exch def /pgfgx exch def
        end pop pop}def/eps{}def userdict begin}bind def
    /pgfbeginpicture{/pgfx pgfgx def /pgfy pgfgy def pgfx pgfy translate 1 1 72.27 72 div mul2 neg scale}bind def
    /pgfbeginhbox{1 1 72 72.27 div mul2 neg scale
          pgfx neg pgfy neg translate 
          pgffoa .setopacityalpha}bind def% save
    /.setopacityalpha where {pop} {/.setopacityalpha{pop}def} ifelse % install .setopacityalpha 
    /.pgfsetfillopacityalpha{/pgffoa exch def
      /pgffill{gsave pgffoa .setopacityalpha fill 1 .setopacityalpha newpath fill grestore}bind def
      /pgfeofill{gsave pgffoa .setopacityalpha eofill1 .setopacityalpha newpath eofill grestore}bind def}bind def
    /.pgfsetstrokeopacityalpha{/pgfsoa exch def
      /pgfstr{gsave pgfsoa .setopacityalpha stroke grestore}bind def}bind def
    /pgffoa 1 def
    /pgfsoa 1 def
    }
}

\endinput

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