diff options
Diffstat (limited to 'graphics/pgf/contrib/pixelart/pixelart0.sty')
-rw-r--r-- | graphics/pgf/contrib/pixelart/pixelart0.sty | 114 |
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 |