% encoding : utf8 
% tkz-elements.sty v3.0c
% Copyright 2024  Alain Matthes
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.

\ProvidesPackage{tkz-elements}[2024/07/16 version 3.00 Graphic Object Library]
%\RequirePackage{luacode}

 \directlua{
      require "tkz_elements_main"
      tkz_epsilon=1e-8
      tkz_dc=2
      indirect = true
      init_elements()}%
      
\newenvironment{tkzelements}
  {   \directlua{scale=1}
      \directlua{z = {}
                 C = {}
                 E = {}
                 L = {}
                 M = {}
                 P = {}
                 Q = {}
                 R = {}
                 RP= {}
                 S = {}
                 T = {}
                 V = {}}
      \luacode}
  {\endluacode}%

 % new version of the next macro proposed by Sanskar Singh
\def\tkzGetNodes{\directlua{%
  for K,V in pairs(z) do
     local n,sd,ft
     n = string.len(K)
     if n >1 then
     _,_,ft, sd = string.find( K , "(.+)(.)" )  
    if sd == "p" then   K=ft.."'" end
    _,_,xft, xsd = string.find( ft , "(.+)(.)" )
    if xsd == "p" then  K=xft.."'".."'" end
      end    
 tex.sprint("\string\\coordinate ("..K..") at ("..V.re..","..V.im..") ; \string\r")
end}}

\def\tkzUseLua#1{\directlua{tex.print(tostring(#1))}} 
\makeatletter
\def\tkzDrawLuaEllipse{\pgfutil@ifnextchar[{\tkz@DrawLuaEllipse}{\tkz@DrawLuaEllipse[]}}
\def\tkz@DrawLuaEllipse[#1](#2,#3,#4){% 
\begingroup 
\draw[#1](#2) ellipse [x radius=\tkzUseLua{length(z.#3,z.#2)}, y radius = \tkzUseLua{length(z.#4,z.#2)},rotate=\tkzUseLua{math.deg(slope_ (z.#3,z.#2))}]; 
\endgroup
}
\def\tkzDN{\pgfutil@ifnextchar[{\tkz@DN}{\tkz@DN[2]}}%
\def\tkz@DN[#1]#2{%
\begingroup
\pgfkeys{/pgf/number format/.cd,std,precision=#1}%
\pgfmathprintnumber{#2}
\endgroup
}

\makeatother
\endinput
