% utf8
% tikzrput.sty 0.2 du 05/03/2012 inspired from rput (pstricks)
% ------------------------------------------------
%  CrÃ©Ã© par Alain Matthes le 2012-02-22.
%  Copyright (c) 2012 __AlterMundus__.
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License , either version 1.3
% of this license or (at your option) any later version and/or
% 2. under the GNU Public License. 
% ------------------------------------------------
% Options are the same of /rput in pstricks
%
\NeedsTeXFormat{LaTeX2e}% 
\RequirePackage{tikz,ifpdf}%
\ProvidesPackage{tikzrput}[2012/03/02 v0.2 rput for tikz]%
\edef\tikzrputPtVirCode{\the\catcode`\;} 
\edef\tikzrputAtCode{\the\catcode`\@} 
\edef\tikzrputTwoPtCode{\the\catcode`\:}  
\catcode`\;=12\relax
\catcode`\:=12\relax
\catcode`\@=11\relax

\newif\ifrput@polar\rput@polarfalse
\def\rput@empty{}

\def\rput@parsecoordinate#1{%
\rput@getseparator#1,\@nil
\ifrput@polar 
   \rput@getfrompolar#1\@nil 
\fi
}%
\def\rput@getseparator#1,#2\@nil{%
\ifx\rput@empty#2\rput@empty%
   \rput@polartrue
\else
   \rput@polarfalse
\fi
}%
\def\rput@getfrompolar#1;#2\@nil{%
  \def\pos@rput{#1:#2}%
}%

\def\rput@pos@   {\def\rput@anchor{center}}
\def\rput@pos@B  {\def\rput@anchor{base}} 
\def\rput@pos@Br {\def\rput@anchor{base east}} 
\def\rput@pos@Bl {\def\rput@anchor{base west}} 
\def\rput@pos@tr {\def\rput@anchor{north east}} 
\def\rput@pos@tl {\def\rput@anchor{north west}}
\def\rput@pos@br {\def\rput@anchor{south east}} 
\def\rput@pos@bl {\def\rput@anchor{south west}}
\def\rput@pos@t  {\def\rput@anchor{north}}
\def\rput@pos@b  {\def\rput@anchor{south}}
\def\rput@pos@r  {\def\rput@anchor{east}}
\def\rput@pos@l  {\def\rput@anchor{west}}
\let\rput@pos@rB\rput@pos@Br
\let\rput@pos@lB\rput@pos@Bl
\let\rput@pos@rt\rput@pos@tr
\let\rput@pos@lt\rput@pos@tl
\let\rput@pos@rb\rput@pos@br
\let\rput@pos@lb\rput@pos@bl
\newbox\mybox      
\ifpdf 
\pgfutil@ifundefined{rput}%
  {%
  \tikzset{rput style/.style={}} 
  \def\rput{\pgfutil@ifnextchar[{\rput@i}{\global\edef\opt@rput{}\rput@ii}}%
  \def\rput@i[#1]{\global\edef\opt@rput{#1}\rput@ii}%
  \def\rput@ii{\pgfutil@ifnextchar({\def\angle@rput{0}\rput@iv}{\rput@iii}}%
  \def\rput@iii#1{%
   \ifx\rput@empty#1\rput@empty\def\angle@rput{0}\else\def\angle@rput{#1}\fi%
   \pgfutil@ifnextchar({\rput@iv}{\rput@iv(0,0)}}%,
  \def\rput@iv(#1){\def\pos@rput{#1}%
                   \rput@parsecoordinate{#1}%
                   \rput@v}%
  \def\rput@v#1{% 
  \sbox\mybox{\pgfinterruptpicture#1\endpgfinterruptpicture}%   
               \begingroup 
               \tikzifinpicture{%
               \let\begin@my@tikz@env\scope
               \let\end@my@tikz@env\endscope 
               }{%
               \let\begin@my@tikz@env\tikzpicture
               \let\end@my@tikz@env\endtikzpicture
               }%     
                  \@nameuse{rput@pos@\opt@rput}%
                  \begin{pgfinterruptboundingbox}%
                    \begin@my@tikz@env[overlay] 
                       \path (0,0)--(\pos@rput);
                       \protected@edef\rput@temp{%
                                                 \noexpand\node[inner sep = 0pt,
                                                                anchor    = \rput@anchor,
                                                                rotate    = \angle@rput,
                                                                rput style]%
                                  }\rput@temp     at (\pos@rput)   {\box\mybox};%{#1};%
                     \end@my@tikz@env 
                 \end{pgfinterruptboundingbox}%
               \endgroup
               \ignorespaces
               }%
  }{%
     }%
\fi 
\catcode`\;=\tikzrputPtVirCode\relax
\catcode`\@=\tikzrputAtCode\relax  
\catcode`\:=\tikzrputTwoPtCode\relax   
\endinput
