%% BEGIN pst-char.tex
%%
%% For stroking and filling characters with PSTricks' line and fill styles.
%%
\def\fileversion{0.93a-97}
\def\filedate{1997/03/25}
%%
%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
%% See pstricks.tex or pstricks.doc for copying restrictions.
%%
%% See the PSTricks User's Guide for description.
%% See chartest.tex for sample input.
%% See chartest.ps for sample output.
%%

\message{ v\fileversion, \filedate}

\csname PSTcharpathLoaded\endcsname
\let\PSTcharpathLoaded\endinput

\ifx\PSTricksLoaded\endinput\else
  \def\next{\input pstricks.tex}
  \expandafter\next
\fi

\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11

\def\tx@CharPathShow{%
  /tx@CharPathSavedShow /show load def
  /show {
    % These 3 lines check whether charpath yields anything interesting.
    dup gsave newpath 0 0 moveto
    true charpath pathbbox grestore
    3 -1 roll eq 3 1 roll eq and
    % If not, just use show.
    { tx@CharPathSavedShow }
    % Otherwise, use charpath.
    { true charpath }
    ifelse }
  def }

\def\pscharpath{\def\pst@par{}\pst@object{pscharpath}}
\def\pscharpath@i{\pst@makebox\pscharpath@ii}
\def\pscharpath@ii{%
  \leavevmode\hbox{%
    \pstVerb{\tx@CharPathShow}%
    \box\pst@hbox
    \pstVerb{/show /tx@CharPathSavedShow load def}%
    \begin@ClosedObj
      \def\pst@linetype{1}%
      \psdashadjustfalse
      \showpointsfalse
      \let\pst@newpath\@empty
      \def\use@pscode{%
        \pst@Verb{%
          gsave
            \tx@STV
            \pst@code
          grestore
          \if@star\else CP newpath moveto \fi}}%
    \end@ClosedObj}}

\def\pscharclip{\def\pst@par{}\pst@object{pscharclip}}
\def\pscharclip@i{\pst@makebox\pscharclip@ii}
\def\pscharclip@ii{%
  \leavevmode
  \begingroup
    \begin@psclip
    {\@startrue\pscharpath@ii}%
    \pstVerb{clip \if@star\else currentpoint newpath moveto\fi}%
    \def\endpscharclip{\end@psclip\endgroup}%
    \ignorespaces}
\def\endpscharclip{\pst@misplaced\endpscharclip}

\catcode`\@=\TheAtCode\relax

\endinput
%% END pst-char.tex
