%% 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