summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pixelart/pixelart.sty
blob: ec702ee8036c5b6f2255199902e0172e23f2d73a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
%%
%% 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'.