% Copyright 2011 by Alain Matthes
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.


\def\fileversion{1.16 c}
\def\filedate{2011/06/01}

%<--------------------------------------------------------------------------–>
\def\tkzutil@empty{}
\def\tkzutil@firstofone#1{#1}
\def\tkzutil@firstoftwo#1#2{#1}
\def\tkzutil@secondoftwo#1#2{#2}
%<--------------------------------------------------------------------------–>
\long\def\tkzutil@ifundefined#1{%
  \expandafter\ifx\csname#1\endcsname\relax
    \expandafter\tkzutil@firstoftwo
  \else
    \expandafter\tkzutil@secondoftwo
  \fi} 
%<--------------------------------------------------------------------------–>
%<--------------------------------------------------------------------------–>
\global\def\tkzActivOff{%
\edef\tkzTwoPtCode{\the\catcode`\:} 
\edef\tkzPtExCode{\the\catcode`\!} 
\edef\tkzPtVirCode{\the\catcode`\;} 
\catcode`\:=12 \catcode`\!=12 \catcode`\;=12}%
\global\def\tkzActivOn{%
\catcode`\:=\tkzTwoPtCode\relax
\catcode`\!=\tkzPtExCode\relax
\catcode`\;=\tkzPtVirCode\relax
}% 
 
%<----------------------------– autres tools -------------------------------->   
%<--------------------------  Initialisation -------------------------------->   
\pgfkeys{
/tkzsupcol/.cd,
  background/.code    = {\global\edef\tkz@suc@bkc{#1}},%
  text/.code          = {\global\edef\tkz@suc@txt{#1}}, 
} 
\def\tkzSetUpColors{\pgfutil@ifnextchar[{\tkz@SetUpColors}{\tkz@SetUpColors[]}} 
\def\tkz@SetUpColors[#1]{%
\begingroup
\pgfkeys{%
tkzsupcol/.cd,
  background  = \tkz@backgroundcolor,
  text        = \tkz@textcolor
  }
\pgfqkeys{/tkzsupcol}{#1} 
\global\edef\tkz@fillcolor{\tkz@suc@bkc}   
\global\edef\tkz@mainlinecolor{\tkz@suc@txt}
\global\edef\tkz@textcolor{\tkz@suc@txt}
\global\def\tkz@otherlinecolor{\tkz@suc@txt!50}
\global\edef\tkz@sua@color{\tkz@mainlinecolor}       
\pagecolor{\tkz@suc@bkc}
\color{\tkz@suc@txt}  
 \InputIfFileExists{tkz-base.cfg}{\typeout{Local configuration file tkz-param.cfg found and used}}{\typeout{tkz-base.cfg not found}  
%<---------   axes cartesian system  ---------------------------------------–>  
\global\edef\tkz@init@color{\tkz@textcolor} 
\global\def\tkz@init@lw{0.4 pt}
\global\def\tkz@init@xlabel{$x$}
\global\def\tkz@init@ylabel{$y$}  
\global\def\tkz@init@tickwd{0.8 pt}
\global\def\tkz@init@ticka{2 pt}  
\global\def\tkz@init@tickb{2 pt}
\global\def\tkz@init@rightspace{.5} 
\global\def\tkz@init@leftspace{0}
\global\def\tkz@init@upspace{.5} 
\global\def\tkz@init@downspace{0}
\global\let\tkzmathstyle\displaystyle   
\tikzset{xlabel style/.style={below=3 pt,
                              inner sep = 1pt,
                              outer sep = 0pt}}
\tikzset{xaxe style/.style ={>=latex,->}}
\tikzset{ylabel style/.style={left = 3 pt,
                              inner sep = 1pt,
                              outer sep = 0pt}}
\tikzset{yaxe style/.style ={>=latex,->}} 
%<--------------------------   rep  ---------------------------------------–>
\global\edef\tkz@sur@color{\tkz@mainlinecolor}
\global\edef\tkz@sur@colorlabel{\tkz@mainlinecolor}
\global\def\tkz@sur@lw{0.8 pt}
\global\def\tkz@sur@posxlabel{below=2pt}
\global\def\tkz@sur@posylabel{left=2pt} 
%<--------------------------   grid  ---------------------------------------–>
\global\edef\tkz@grid@color{gray}
\global\def\tkz@grid@lw{0.4 pt}
\global\def\tkzCoeffSubColor{50} 
\global\def\tkzCoeffSubLw{0.8}
\global\def\tkz@grid@xstep{0.2}
\global\def\tkz@grid@ystep{0.2}  
%<--------------------------   line  ---------------------------------------–>
\global\edef\tkz@euc@linecolor{\tkz@mainlinecolor}
\global\def\tkz@euc@linewidth{0.6pt}
\global\def\tkz@euc@linestyle{solid}
\global\def\tkz@euc@lineleft{.2}
\global\def\tkz@euc@lineright{.2}
\global\def\tkz@legend@line@len{1cm}  
\global\edef\tkz@euc@segmentcolor{\tkz@mainlinecolor}
\global\edef\tkz@euc@circlecolor{\tkz@mainlinecolor}
\tikzset{line style/.style={%
         line width = \tkz@euc@linewidth,
         color      = \tkz@euc@linecolor,
         style      = \tkz@euc@linestyle,
         add        = {\tkz@euc@lineleft} and {\tkz@euc@lineright}}}  
%<--------------------------    points   -----------------------------------–>
\global\edef\tkz@euc@pointshape{circle}
\global\edef\tkz@euc@pointcolor{\tkz@mainlinecolor}
\global\edef\tkz@euc@labelcolor{\tkz@mainlinecolor} 
\global\def\tkz@euc@pointsize{6}
\global\def\tkz@euc@pointpos{below right}
\tikzset{point style/.style={draw         = \tkz@euc@pointcolor,
                             inner sep    = 0pt,
                             shape        = \tkz@euc@pointshape,
                             minimum size = \tkz@euc@pointsize*\pgflinewidth,
                             fill         = \tkz@euc@pointcolor!50}}  
%<----------------------------    mark   -----------------------------------–> 
\global\edef\tkz@mk@color{\tkz@mainlinecolor}   
\global\edef\tkz@mk@mark{*}
\global\edef\tkz@mk@size{3pt}
\global\edef\tkz@mk@fill{\tkz@otherlinecolor} 
\tikzset{mark style/.style={mark=\tkz@mk@mark,mark size=\tkz@mk@size,mark options={color=\tkz@mk@color,fill=\tkz@mk@fill}}}
\tikzset{arrow coord style/.style={dashed,
                             \tkz@euc@linecolor,
                             >=latex',
                             ->}}
\tikzset{xcoord style/.style={\tkz@euc@labelcolor,
                           font=\normalsize,text height=1ex,
                           inner sep = 0pt,
                           outer sep = 0pt,
                           fill=\tkz@fillcolor,
                           below=3pt}} 
\tikzset{ycoord style/.style={\tkz@euc@labelcolor,
                           font=\normalsize,text height=1ex, 
                           inner sep = 0pt,
                           outer sep = 0pt, 
                           fill=\tkz@fillcolor,
                           left=3pt}}  
%<---------------------------  vector --------------------------------------–>
\tikzset{vector style/.style={>=latex,->}}   
%<-------------------------    compass   -----------------------------------–> 
\global\edef\tkz@euc@compasscolor{\tkz@otherlinecolor}
\global\def\tkz@euc@compasswidth{0.4pt}
\global\def\tkz@euc@compassstyle{solid}  
\tikzset{compass style/.style={color      = \tkz@euc@compasscolor,
                               line width = \tkz@euc@compasswidth,
                               style      = \tkz@euc@compassstyle}}    
}
\endgroup}

%<--------------------------------------------------------------------------–>
%              Pour savoir le nombre de décimales d'un nombre
% le nombre dans #1 et le résultat dans \c@pgfmath@countb
%<--------------------------------------------------------------------------–>

\newcommand*\tkz@getdecimal[1]{%
  \expandafter\@getdecimal#1.\@nil
}

\def\@getdecimal#1.#2\@nil{%
  \ifx\empty#2\empty
    % Si #2 est vide, c'est qu'il n'y avait pas de point
    % dans la chaîne initiale
    \c@pgfmath@countb0 %
   \global\def\tkz@decpart{}%
  \else
    % sinon c'est la chaîne qui suit le point décimal...
    \CountToken{#2}%
    % ... y compris le point en trop ajouté par \tkz@getdecimal  :-)
    \advance\c@pgfmath@countb by-1 %
    \@@getdecimal#2\@nil
  \fi
}
\def\@@getdecimal#1.\@nil{\global\def\tkz@decpart{#1}}
%<--------------------------------------------------------------------------–>
% code from JCC modifi
\newcommand\CountToken[1]{%
 \c@pgfmath@countb0 %
  \expandafter\C@untToken#1\@nil
%modifi ajout du expandafter
}
\newcommand\C@untToken{%
  \afterassignment\C@untT@ken\let\CurrT@ken=
}
\newcommand\C@untT@ken{%
 \ifx\CurrT@ken\@nil \else
   \advance\c@pgfmath@countb by1 %
   \expandafter\C@untToken
 \fi
}
% end code from JCC    

%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––>
%            Tools
%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––>
%<–––––––– code from TeX in Practice ––––––––>
\newif\if@TestSubString
\def\SubStringConditional #1#2{%
    TT\fi
    \edef\@MainString{#1}%
    \edef\@SubStringConditionalTemp{{#1}{#2}}%
    \expandafter\@SubStringConditional\@SubStringConditionalTemp
}
\def\@SubStringConditional #1#2{% 
    \def\@TestSubS ##1#2##2\\{% 
        \def\@TestTemp{##1}% 
    }% 
    \@TestSubS #1#2\\
    \ifx\@MainString\@TestTemp
        \@TestSubStringfalse
    \else
        \@TestSubStringtrue
    \fi
    \if@TestSubString
}

\def\RecursionMacroEnd #1#2#3{% 
    #1\relax
        \def\@RecursionMacroEndNext{#2}% 
    \else
        \def\@RecursionMacroEndNext{#3}% 
    \fi
    \@RecursionMacroEndNext
}

\def\ReplaceSubStrings #1#2#3#4{%
    \def\@ReplaceResult{#1}%
    \edef\@ReplaceMain{#2}%
    \edef\@ReplaceSub{#3}%
    \edef\@ReplaceSubRep{#4}%
    \@ReplaceSubStrings
}
\def\@ReplaceSubStrings{% 
    \RecursionMacroEnd
        {\if\SubStringConditional{\@ReplaceMain}{\@ReplaceSub}}%
      {\@ReplaceSubStringsDo}{\expandafter\edef\@ReplaceResult{\@ReplaceMain}}%
}
\def\@ReplaceSubStringsDoX{%
    \def\@ReplaceSubStringsDoA ##1%
}%
\def\@ReplaceSubStringsDo{% 
    \expandafter\@ReplaceSubStringsDoX \@ReplaceSub
                                    ##2\@EndReplaceSubStrings{%
        \edef\@ReplaceMain{##1\@ReplaceSubRep ##2}%
    }%
    \expandafter\@ReplaceSubStringsDoA\@ReplaceMain
        \@EndReplaceSubStrings
    \@ReplaceSubStrings
}
\def\tkzPrintFrac#1#2{% 
\begingroup
\tkzReducFrac{#1}{#2}
\global\edef\tkzprintfrac{$     \frac{\tkzMathFirstResult}{\tkzMathSecondResult}$}%
 \ifnum\tkzMathFirstResult=0%
    \global\edef\tkzprintfrac{$0$}%
 \else
 \ifnum\tkzMathSecondResult=1 %
    \ifnum\tkzMathFirstResult=1 %
         \global\edef\tkzprintfrac{$1$}%
      \else
       \ifnum\tkzMathFirstResult=-1%
          \global\edef\tkzprintfrac{$-1$}%
        \else
          \global\edef\tkzprintfrac{$\tkzMathFirstResult$}%
       \fi\fi
 \else 
   \ifnum\tkzMathFirstResult=1 %
          \global\edef\tkzprintfrac{$\tkzmathstyle\frac{1}{\tkzMathSecondResult}$}%
     \else
       \ifnum\tkzMathFirstResult=-1 %
      \global\edef\tkzprintfrac{$\tkzmathstyle\frac{-1}{\tkzMathSecondResult}$}%
        \else
     \global\edef\tkzprintfrac{$\tkzmathstyle\frac{\tkzMathFirstResult}{%
                             \tkzMathSecondResult}$}%
 \fi\fi\fi\fi   
\endgroup}
%<--------------------------------------------------------------------------->
\def\tkzPrintFracWithPi#1#2{% 
\begingroup
\tkzReducFrac{#1}{#2}
\global\edef\tkzprintfrac{$\tkzmathstyle\frac{\tkzMathFirstResult\pi}{\tkzMathSecondResult}$}%
 \ifnum\tkzMathFirstResult=0%
    \global\edef\tkzprintfrac{$0$}%
 \else
 \ifnum\tkzMathSecondResult=1 %
    \ifnum\tkzMathFirstResult=1 %
         \global\edef\tkzprintfrac{$\pi$}%
      \else
       \ifnum\tkzMathFirstResult=-1%
          \global\edef\tkzprintfrac{$-\pi$}%
        \else
          \global\edef\tkzprintfrac{$\tkzMathFirstResult\pi$}%
       \fi\fi
 \else 
   \ifnum\tkzMathFirstResult=1 %
          \global\edef\tkzprintfrac{$\tkzmathstyle\frac{\pi}{\tkzMathSecondResult}$}%
     \else
       \ifnum\tkzMathFirstResult=-1 %
      \global\edef\tkzprintfrac{$\tkzmathstyle\frac{-\pi}{\tkzMathSecondResult}$}%
        \else
     \global\edef\tkzprintfrac{$\tkzmathstyle\frac{\tkzMathFirstResult\pi}{%
                             \tkzMathSecondResult}$}%
 \fi\fi\fi\fi   
\endgroup}%

%<--------------------------------------------------------------------------->
% chargement des modules
\def\tkz@obj@all{polygons,vectors,arcs,sectors,angles,protractor}
\def\tkz@obj@txt{all}
\def\usetkzobj{\pgfutil@ifnextchar[{\use@usetkzobj}{\use@@usetkzobj}}%}
\def\use@usetkzobj[#1]{\use@@usetkzobj{#1}}
\def\use@@usetkzobj#1{% 
  \def\tkz@list{#1}
  \ifx\tkz@obj@txt\tkz@list \edef\tkz@list{\tkz@obj@all}% 
      \else  
      \edef\tkz@list{#1}%
    \fi
  %\edef\tkz@list{#1}%
  \pgfutil@for\tkz@temp:=\tkz@list\do{%
    \expandafter\ifx\csname tkz@library@\tkz@temp @loaded\endcsname\relax%
      \expandafter\global\expandafter\let\csname tkz@library@\tkz@temp @loaded\endcsname=\pgfutil@empty%
      \expandafter\edef\csname tkz@obj@#1@atcode\endcsname{\the\catcode`\@}
      \expandafter\edef\csname tkz@obj@#1@barcode\endcsname{\the\catcode`\|}
      \catcode`\@=11
      \catcode`\|=12   
      \input tkz-obj-\tkz@temp.tex 
            \catcode`\@=\csname tkz@obj@#1@atcode\endcsname
      \catcode`\|=\csname tkz@obj@#1@barcode\endcsname  
    \fi%
  }%
}%
\def\DisabledNumprint{\let\tkz@numprint\numprint
\let\numprint\relax}
\def\EnabledNumprint{\let\numprint\tkz@numprint} 
\endinput