summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/pixelarttikz/tex/PixelArtTikz.sty
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/pixelarttikz/tex/PixelArtTikz.sty')
-rw-r--r--graphics/pgf/contrib/pixelarttikz/tex/PixelArtTikz.sty313
1 files changed, 313 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/pixelarttikz/tex/PixelArtTikz.sty b/graphics/pgf/contrib/pixelarttikz/tex/PixelArtTikz.sty
new file mode 100644
index 0000000000..e5f9e9ccb8
--- /dev/null
+++ b/graphics/pgf/contrib/pixelarttikz/tex/PixelArtTikz.sty
@@ -0,0 +1,313 @@
+% Author.........: C. Pierquet
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{PixelArtTikz}[2023/01/25 v0.1.0 PixelArts with csv and TikZ]
+% 0.1.0 Version initiale
+
+%------Option(s)
+\newif\if@csvii \@csviifalse
+\DeclareOption{csvii}{\@csviitrue}
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%------Packages utiles
+\RequirePackage{tikz}
+\RequirePackage{xparse}
+\RequirePackage{simplekv}
+\RequirePackage{xintexpr}
+\RequirePackage{xinttools}
+\RequirePackage{xstring}
+\RequirePackage{listofitems}
+%librairies tikz
+%\usetikzlibrary{calc,shapes.geometric}
+%cvs
+\if@csvii
+ \RequirePackage[legacy]{csvsimple}
+\else
+ \RequirePackage{expl3}
+ \RequirePackage[l3]{csvsimple}
+\fi
+
+%------clés [fr] / keys [en]
+\defKV[pixelarttkz]{%
+ Codes=\def\PATlettres{#1},%
+ Couleurs=\def\PATcouleurs{#1},%
+ Symboles=\def\PATchiffres{#1},%
+ Style=\def\PATtaille{#1},%
+ Unite=\def\PATunit{#1}
+}
+
+\setKVdefault[pixelarttkz]{%
+ Style=\scriptsize,%
+ Correction=false,%
+ Symb=false,%
+ BordCases=true,%
+ Unite=1
+}
+
+%----[fr] commands
+\NewDocumentCommand\PixelArtTikz{ s O{} D<>{} m }{%commande autonome
+ \useKVdefault[pixelarttkz]%
+ \setKV[pixelarttkz]{#2}%
+ %affichage du corrigé / display of correction
+ \IfBooleanTF{#1}{}{\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#3]}
+ \ifboolKV[pixelarttkz]{Correction}%
+ {%
+ \csvloop{file=#4,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \setsepchar{,}
+ \readlist*\LCPA\PATcouleurs
+ \StrPosition{\PATlettres}{\l}[\pixcnt]%
+ \xintifboolexpr{\pixcnt>0}%
+ {%
+ \itemtomacro\LCPA[\pixcnt]\pixcol%
+ \ifboolKV[pixelarttkz]{BordCases}%
+ {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \ifboolKV[pixelarttkz]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \csvloop{file=#4,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \setsepchar{,}
+ \readlist*\LCNA\PATchiffres
+ \StrPosition{\PATlettres}{\l}[\pixpos]%
+ \xintifboolexpr{\pixpos>0}%
+ {%
+ \itemtomacro\LCNA[\pixpos]\pixchf%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
+ \csvloop{file=#4,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \IfSubStr{\PATlettres}{\l}%
+ {%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \IfBooleanTF{#1}{}{\end{tikzpicture}}%
+}
+
+\NewDocumentEnvironment{EnvPixelArtTikz}{ O{} D<>{} m }%environnement
+{%
+ \useKVdefault[pixelarttkz]%
+ \setKV[pixelarttkz]{#1}%
+ %affichage du corrigé / display of correction
+ \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
+ \ifboolKV[pixelarttkz]{Correction}%
+ {%
+ \csvloop{file=#3,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \setsepchar{,}
+ \readlist*\LCPA\PATcouleurs
+ \StrPosition{\PATlettres}{\l}[\pixcnt]%
+ \xintifboolexpr{\pixcnt>0}%
+ {%
+ \itemtomacro\LCPA[\pixcnt]\pixcol%
+ \ifboolKV[pixelarttkz]{BordCases}%
+ {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \ifboolKV[pixelarttkz]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \csvloop{file=#3,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \setsepchar{,}
+ \readlist*\LCNA\PATchiffres
+ \StrPosition{\PATlettres}{\l}[\pixpos]%
+ \xintifboolexpr{\pixpos>0}%
+ {%
+ \itemtomacro\LCNA[\pixpos]\pixchf%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
+ \csvloop{file=#3,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \IfSubStr{\PATlettres}{\l}%
+ {%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ }%
+}%
+{%
+ \end{tikzpicture}%
+}%
+
+%----[en] commands
+\defKV[pixelarttkzen]{%
+ Codes=\def\PATlettres{#1},%
+ Colors=\def\PATcouleurs{#1},%
+ Symbols=\def\PATchiffres{#1},%
+ Style=\def\PATtaille{#1},%
+ Unit=\def\PATunit{#1}
+}
+
+\setKVdefault[pixelarttkzen]{%
+ Style=\scriptsize,%
+ Correction=false,%
+ Symb=false,%
+ Border=true,%
+ Unit=1
+}
+
+\NewDocumentCommand\PixlArtTikz{ s O{} D<>{} m }{%commande autonome
+ \useKVdefault[pixelarttkzen]%
+ \setKV[pixelarttkzen]{#2}%
+ %affichage du corrigé / display of correction
+ \IfBooleanTF{#1}{}{\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#3]}
+ \ifboolKV[pixelarttkzen]{Correction}%
+ {%
+ \csvloop{file=#4,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \setsepchar{,}
+ \readlist*\LCPA\PATcouleurs
+ \StrPosition{\PATlettres}{\l}[\pixcnt]%
+ \xintifboolexpr{\pixcnt>0}%
+ {%
+ \itemtomacro\LCPA[\pixcnt]\pixcol%
+ \ifboolKV[pixelarttkzen]{Border}%
+ {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \ifboolKV[pixelarttkzen]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \csvloop{file=#4,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \setsepchar{,}
+ \readlist*\LCNA\PATchiffres
+ \StrPosition{\PATlettres}{\l}[\pixpos]%
+ \xintifboolexpr{\pixpos>0}%
+ {%
+ \itemtomacro\LCNA[\pixpos]\pixchf%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
+ \csvloop{file=#4,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \IfSubStr{\PATlettres}{\l}%
+ {%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \IfBooleanTF{#1}{}{\end{tikzpicture}}%
+}
+
+\NewDocumentEnvironment{EnvPixlArtTikz}{ O{} D<>{} m }%environnement
+{%
+ \useKVdefault[pixelarttkzen]%
+ \setKV[pixelarttkzen]{#1}%
+ %affichage du corrigé / display of correction
+ \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
+ \ifboolKV[pixelarttkzen]{Correction}%
+ {%
+ \csvloop{file=#3,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \setsepchar{,}
+ \readlist*\LCPA\PATcouleurs
+ \StrPosition{\PATlettres}{\l}[\pixcnt]%
+ \xintifboolexpr{\pixcnt>0}%
+ {%
+ \itemtomacro\LCPA[\pixcnt]\pixcol%
+ \ifboolKV[pixelarttkzen]{Border}%
+ {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \ifboolKV[pixelarttkzen]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \csvloop{file=#3,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \setsepchar{,}
+ \readlist*\LCNA\PATchiffres
+ \StrPosition{\PATlettres}{\l}[\pixpos]%
+ \xintifboolexpr{\pixpos>0}%
+ {%
+ \itemtomacro\LCNA[\pixpos]\pixchf%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
+ \csvloop{file=#3,no head,command={%
+ \foreach \l [count=\n] in \csvline {%
+ \StrDel{\l}{ }[\l]
+ \IfSubStr{\PATlettres}{\l}%
+ {%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \end{tikzpicture}%
+}%
+
+\endinput \ No newline at end of file