%%
%% This is file `pixelart.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% pixelart.dtx  (with options: `package')
%% Copyright 2017 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 pixelart.dtx and pixelart.ins
%% and the derived file pixelart.sty.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pixelart}
    [2018/02/25 v0.2.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
%%
%% End of file `pixelart.sty'.
