%% Copyright 2017-2022 Louis Paternault %% %% 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 Louis Paternault %% %% This work consists of the files pixelart0.sty and pixelart0.tex. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pixelart0} [2022/11/16 v0.3.0 A package to draw pixel-art pictures] \RequirePackage{pgf} \RequirePackage{pgfopts} \usepgfmodule{parser} \RequirePackage{tikz} \usetikzlibrary{calc} \RequirePackage{pgfkeys} \RequirePackage{etoolbox} \makeatletter \newif\ifpixelart@draft \pgfkeys{ /PIXELART/.cd, draft/.is if=pixelart@draft, draft=false, } \ProcessPgfPackageOptions{/PIXELART} \pgfkeys{ /PIXELART/BWPIXELART/.is family, /PIXELART/BWPIXELART, scale/.value required, scale/.code={\pgfkeyssetvalue{/PIXELART/BWPIXELART/scale}{#1}}, scale=1, raise/.code={\pgfkeyssetvalue{/PIXELART/BWPIXELART/raise}{#1}}, raise/.value required, raise=0pt, color/.value required, color/.code={\pgfkeyssetvalue{/PIXELART/BWPIXELART/color}{#1}}, color=black, } \pgfkeys{ /PIXELART/TIKZBWPIXELART/.is family, /PIXELART/TIKZBWPIXELART, scale/.value required, scale/.code={\pgfkeyssetvalue{/PIXELART/TIKZBWPIXELART/scale}{#1}}, scale=1, color/.value required, color/.code={\pgfkeyssetvalue{/PIXELART/TIKZBWPIXELART/color}{#1}}, color=black, } \pgfparserdef{@bwpixelart}{initial}{blank space \space}{ \@bwpa@newline } \pgfparserdef{@bwpixelart}{initial}{the character 0}{ \coordinate (@pixelart) at ($(@pixelart) + (1, 0)$); } \pgfparserdef{@bwpixelart}{initial}{the character 1}{ \fill (@pixelart) rectangle ++(1, 1); \coordinate (@pixelart) at ($(@pixelart) + (1, 0)$); } \pgfparserdef{@bwpixelart}{initial}{the letter @}{ \pgfparserswitch{final} } \newcommand{\@bwpa@newline}{ \coordinate (@pixelart) at ($(@pixelart@startline) + (0, -1)$); \coordinate (@pixelart@startline) at (@pixelart); } \newcommand{\bwpixelart}[2][]{{% \pgfkeys{/PIXELART/BWPIXELART, #1}% \raisebox{\pgfkeysvalueof{/PIXELART/BWPIXELART/raise}}{% \tikz[ scale=\pgfkeysvalueof{/PIXELART/BWPIXELART/scale}, ]{ \tikzbwpixelart[% color=\pgfkeysvalueof{/PIXELART/BWPIXELART/color}, ]{(0, 0)}{#2} }% }% }} \newcommand{\tikzbwpixelart}[3][]{ \pgfkeys{/PIXELART/TIKZBWPIXELART, #1} \ifpixelart@draft % Draft mode. Nothing to parse, nothing to show! \else \begin{scope}[shift={#2}] \begin{scope}[#1] \coordinate (@pixelart) at (0, 1); \coordinate (@pixelart@startline) at (@pixelart); \pgfparserparse{@bwpixelart} #3 @ \end{scope} \end{scope} \fi } \makeatother \endinput