summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/pixelart/pixelart0.sty
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/pixelart/pixelart0.sty')
-rw-r--r--graphics/pgf/contrib/pixelart/pixelart0.sty114
1 files changed, 114 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/pixelart/pixelart0.sty b/graphics/pgf/contrib/pixelart/pixelart0.sty
new file mode 100644
index 0000000000..dbf96cdc52
--- /dev/null
+++ b/graphics/pgf/contrib/pixelart/pixelart0.sty
@@ -0,0 +1,114 @@
+%% 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