diff options
Diffstat (limited to 'graphics/pgf/contrib/tikzpingus/tikzpingus-medieval.lib.tex')
-rw-r--r-- | graphics/pgf/contrib/tikzpingus/tikzpingus-medieval.lib.tex | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/tikzpingus/tikzpingus-medieval.lib.tex b/graphics/pgf/contrib/tikzpingus/tikzpingus-medieval.lib.tex new file mode 100644 index 0000000000..4e81c4416c --- /dev/null +++ b/graphics/pgf/contrib/tikzpingus/tikzpingus-medieval.lib.tex @@ -0,0 +1,205 @@ +% Florian Sihler, 2022 +% Licensed under GNU General Public License version 3 +% https://opensource.org/licenses/gpl-3.0.html +\newif\if@pingu@x@rook@draw@hatch@ +\pingu@create@extra{rook}{% + rook/.code = \pingu@set@extra{rook}{true}\pingu@color{rook}{#1}, + rook/.default = pingu@silver, + rook back/.code = \pingu@color{rook@back}{#1}, + rook hatch/.is if = @pingu@x@rook@draw@hatch@, + rook hatch/.default = true, + rook shade/.code = \pingu@color{rook@shade}{#1}, +}{rook back=\pingu@color@rook!85!black,rook shade=\pingu@color@rook!92!black,rook hatch} +\def\pingu@draw@ea@rook{% +\if@pingu@do@back@\else\if@pingu@x@rook@draw@hatch@\else\pingu@layer{foreground}[]\fi\fi + \pingu@block[even odd rule]{\pingu@color@rook} ([xshift=-.2mm]\pingu@name-wings-side-right|-\pingu@name-foot-right) [rounded corners=\p@] to[bend right=9] coordinate[pos=.15] (@tmpe) ([xshift=.2mm]\pingu@name-wings-side-left|-\pingu@name-foot-left) [sharp corners] to[bend right=1.5*\pingu@bend] (\pingu@name-wings-side-left|-\pingu@name-head-top) coordinate (@tmp) to[bend left=3] coordinate[pos=.3] (@tmpc) coordinate[pos=.7] (@tmpd) (\pingu@name-wings-side-right|-\pingu@name-head-top) [rounded corners=\p@] coordinate (@tmpb) to[bend right=1.5*\pingu@bend] cycle \if@pingu@x@rook@draw@hatch@ (\pingu@name-head-center) ellipse[x radius=.8\pingu@w@half, y radius=.45\pingu@w@half]\fi; + \pingu@block{\pingu@color@rook} (@tmp) to[bend right=2] ++(0,2mm) [rounded corners=.25mm] to[bend left=1] ++(-2mm,-.1mm) -- ++(0,-2.25mm); + \pingu@block{\pingu@color@rook} (@tmpb) to[bend left=2] ++(0,2mm) [rounded corners=.25mm] to[bend right=1] ++(2mm,-.1mm) -- ++(0,-2.25mm); + + \pingu@block{\pingu@color@rook} (@tmpc)++(-2mm,-.25mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend right=1] ++(4mm,.05mm) -- ++(0,-2.25mm); + \pingu@block{\pingu@color@rook} (@tmpd)++(2mm,-.25mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend left=1] ++(-4mm,-.05mm) -- ++(0,-2.25mm); + + % custom shade boi (or gurl, wateva) + \scope + \clip ([xshift=-.2mm]\pingu@name-wings-side-right|-\pingu@name-foot-right) [rounded corners=\p@] to[bend right=5] ([xshift=.2mm]\pingu@name-wings-side-left|-\pingu@name-foot-left) [sharp corners] to[bend right=1.5*\pingu@bend] (\pingu@name-wings-side-left|-\pingu@name-head-top) -- ++(0,2mm) to[bend left=3] (\pingu@name-wings-side-right|-\pingu@name-head-top) to[bend right=1.5*\pingu@bend] cycle; + \if@pingu@x@rook@draw@hatch@ + \clip[/pingu/@invclip] (\pingu@name-head-center) ellipse[x radius=.8\pingu@w@half, y radius=.45\pingu@w@half]; + \fi + \pingu@block{\pingu@color@rook@shade} (@tmpe) to[bend right=5] ([xshift=.2mm]@tmpe-|@tmp) to[bend right=1.5*\pingu@bend] ([yshift=2mm]@tmp) to[bend left=10] cycle; + \endscope + \if@pingu@do@back@\else\if@pingu@x@rook@draw@hatch@\else\endpingu@layer\fi\fi + + \pingu@layer{background}[] + \pingu@block{\pingu@color@rook@back} (@tmp) to[bend right=3] coordinate[pos=.3] (@tmpc) coordinate[pos=.7] (@tmpd) (@tmpb) to[bend right=30] cycle; + \pingu@block{\pingu@color@rook@back} (@tmpb) to[bend left=2] ++(0,2mm) [rounded corners=.25mm] to[bend left=1] ++(2mm,.1mm) -- ++(0,-2.25mm); + \pingu@block{\pingu@color@rook@back} (@tmp) to[bend right=2] ++(0,2mm) [rounded corners=.25mm] to[bend right=1] ++(-2mm,.1mm) -- ++(0,-2.25mm); + + \pingu@block{\pingu@color@rook@back} (@tmpc)++(-2mm,-.49mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend right=1] ++(4mm,.05mm) -- ++(0,-2.25mm); + \pingu@block{\pingu@color@rook@back} (@tmpd)++(2mm,-.49mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend left=1] ++(-4mm,-.05mm) -- ++(0,-2.25mm); + \endpingu@layer +} + +\newif\if@pingu@x@crown@ddd@ % 3d +\newif\if@pingu@x@crown@shade@ % 3d +\pingu@create@extra{crown}{% + crown/.code = \pingu@set@extra{crown}{true}\pingu@color{crown}{#1}, + crown/.default = pingu@yellow, + crown 3d/.is if = @pingu@x@crown@ddd@, crown 3d/.default = true, + crown 2d/.style = {crown=#1, crown 3d=false}, + crown 2d/.default = pingu@yellow, + crown back/.code = \pingu@color{crown@back}{#1}, + crown front bend/.code = \def\pingu@x@crown@f@bend{#1}, + crown back bend/.code = \def\pingu@x@crown@b@bend{#1}, + crown gem shade/.is if = @pingu@x@crown@shade@, crown gem shade/.default = true, + crown gem colors/.code n args = 7{\pingu@color{crown@gem@a}{#1}\pingu@color{crown@gem@b}{#2}\pingu@color{crown@gem@c}{#3}\pingu@color{crown@gem@d}{#4}\pingu@color{crown@gem@e}{#5}\pingu@color{crown@gem@f}{#6}\pingu@color{crown@gem@g}{#7}}, + crown gem ring/.code = \pingu@color{crown@gem@ring}{#1}, + crown position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@crown@angle{#1}\def\pingu@x@crown@xshift{#2}\def\pingu@x@crown@yshift{#3}\def\pingu@x@crown@scale{#4}}, +}{crown position={-9:(1mm,0mm)1},crown front bend=16,crown back bend=9,crown back=\pingu@color@crown!93!black,crown 3d,crown gem colors={pingu@purple}{pingu@blue}{pingu@green}{pingu@purple}{pingu@green}{pingu@blue}{pingu@purple},crown gem ring=\pingu@color@crown!85!white,crown gem shade} + +% color | bend1 | bend1 +\def\pingu@draw@ea@crown@s#1#2#3{ +\pingu@block{#1} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend left=2] ++(0,3.125mm) to[bend #2=\pingu@x@crown@f@bend] + coordinate[pos=0] (r2) coordinate[pos=.07] (r1) + coordinate[pos=.14-.07] (a1) coordinate[pos=.14] (a2) coordinate[pos=.14+.07] (a3) + coordinate[pos=.30-.08] (b1) coordinate[pos=.30] (b2) coordinate[pos=.30+.08] (b3) + coordinate[pos=.50- .1] (c1) coordinate[pos=.50] (x2) coordinate[pos=.50+ .1] (c3) + coordinate[pos=.69-.08] (d1) coordinate[pos=.69] (d2) coordinate[pos=.69+.08] (d3) + coordinate[pos=.85-.07] (e1) coordinate[pos=.85] (e2) coordinate[pos=.85+.07] (e3) + coordinate[pos=1] (l2) coordinate[pos=.93] (l1) + ++(1.375cm,0) to[bend left=2] ++(0,-3.125mm) to[bend #3=\pingu@x@crown@f@bend] (-6mm,-.25cm) -- cycle; +\path (x2)++(0,.9mm) coordinate (c2); +\@for\a:={a,b,c,d,e}\do{ + \pingu@block{#1} ([yshift=-.1mm]\a1) to[bend right=\pingu@x@crown@f@bend] ([yshift=-.1mm]\a3) to[bend right=2] ([yshift=1.85mm]\a2) to[bend right=2] ([yshift=-.1mm]\a1) -- cycle; +} +\pingu@block{#1} (l2)++(0,-.2mm) to[bend right=2] ++(0,1.95mm) -- (l1) -- cycle; +\pingu@block{#1} (r2)++(0,-.2mm) to[bend left=2] ++(0,1.95mm) -- (r1) -- cycle; +} + +% color | at | shift | scale +\def\pingu@draw@ea@crown@g#1#2#3#4{ +\scope[shift={(#22)},shift={(#3,-.33mm)}] + \pingu@block{\pingu@color@crown@gem@ring} ellipse [x radius=.715mm*#4, y radius=.925mm*#4]; + \pingu@block{#1} ellipse [x radius=.633mm*#4, y radius=.85mm*#4]; + \protected@edef\@tmp{#1}\ifx\@tmp\@pingu@none\else + \if@pingu@x@crown@shade@ + \shade[ball color=#1,fill opacity=.45,shading angle=-95] ellipse [x radius=.633mm*#4, y radius=.85mm*#4]; + \else + \pingu@block[rotate around={7:(42:.3mm*#4 and .4mm*#4)}]{#1!45!pingu@white} (42:.3mm*#4 and .4mm*#4) ellipse[x radius=.17mm*#4, y radius=.24mm*#4]; + \pingu@block[rotate around={7:(232:.275mm*#4 and .35mm*#4)}]{#1!45!pingu@white} (232:.275mm*#4 and .35mm*#4) ellipse[x radius=.06mm*#4, y radius=.085mm*#4]; + \fi\fi +\endscope +} +\def\pingu@draw@ea@crown{% +\scope[rotate around={\pingu@x@crown@angle:(\pingu@name-head-top)},% + shift={(\pingu@name-head-top)}, + shift={(\pingu@x@crown@xshift,\pingu@x@crown@yshift)}, + scale=\pingu@x@crown@scale] +% draw front +\if@pingu@x@crown@ddd@ + \pingu@draw@ea@crown@s{\pingu@color@crown}{right}{left} + \def\@tmpa{.05mm}\def\@tmpb{.025mm} +\else + \pingu@draw@ea@crown@s{\pingu@color@crown}{left}{right} + \def\@tmpa{-.015mm}\def\@tmpb{-.035mm} +\fi +% draw the emeralds +\pingu@draw@ea@crown@g{\pingu@color@crown@gem@b}{a}{-\@tmpa}1 +\pingu@draw@ea@crown@g{\pingu@color@crown@gem@c}{b}{-\@tmpb}1 +\pingu@draw@ea@crown@g{\pingu@color@crown@gem@d}{x}{\z@}{1.35} +\pingu@draw@ea@crown@g{\pingu@color@crown@gem@e}{d}{\@tmpb}1 +\pingu@draw@ea@crown@g{\pingu@color@crown@gem@f}{e}{\@tmpa}1 +\pingu@layer{background}[] +\pingu@block{\pingu@color@crown@gem@a} (r2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm]; +\pingu@block{\pingu@color@crown@gem@ring} (r2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm]; +\pingu@block{\pingu@color@crown@gem@g} (l2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm]; +\pingu@block{\pingu@color@crown@gem@ring} (l2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm]; +% draw back if 3d +\if@pingu@x@crown@ddd@ + \pingu@draw@ea@crown@s{\pingu@color@crown@back}{left}{right} +\fi +\endpingu@layer +\endscope +} + +\newif\if@pingu@x@princesscrown@ddd@ +\newif\if@pingu@x@princesscrown@shade@ +\newif\if@pingu@x@princesscrown@bobbles@ +\pingu@create@extra{princesscrown}{% + princess crown/.code = \pingu@set@extra{princesscrown}{true}\pingu@color{princesscrown}{#1}, + princess crown/.default = pingu@yellow, + princess crown 3d/.is if= @pingu@x@princesscrown@ddd@, princess crown 3d/.default = true, + princess crown 2d/.style = {princess crown=#1, princess crown 3d=false}, + princess crown 2d/.default = pingu@yellow, + princess crown back/.code = \pingu@color{princesscrown@back}{#1}, + princess crown front bend/.code = \def\pingu@x@princesscrown@f@bend{#1}, + princess crown back bend/.code = \def\pingu@x@princesscrown@b@bend{#1}, + princess crown gem shade/.is if = @pingu@x@princesscrown@shade@, + princess crown bobbles/.is if = @pingu@x@princesscrown@bobbles@, + princess crown gem shade/.default = true, + princess crown gem colors/.code n args = 5{\pingu@color{princesscrown@gem@a}{#1}\pingu@color{princesscrown@gem@b}{#2}\pingu@color{princesscrown@gem@c}{#3}\pingu@color{princesscrown@gem@d}{#4}\pingu@color{princesscrown@gem@e}{#5}}, + princess crown gem ring/.code = \pingu@color{princesscrown@gem@ring}{#1}, + princess crown position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@princesscrown@angle{#1}\def\pingu@x@princesscrown@xshift{#2}\def\pingu@x@princesscrown@yshift{#3}\def\pingu@x@princesscrown@scale{#4}}, +}{princess crown position={-9:(1mm,0mm)1},princess crown front bend=12,princess crown back bend=7,princess crown back=\pingu@color@princesscrown!93!black,princess crown 3d,princess crown gem colors={pingu@purple}{pingu@blue}{pingu@green}{pingu@blue}{pingu@purple},princess crown gem ring=\pingu@color@princesscrown!85!white,princess crown gem shade,princess crown bobbles} + +% color | bend1 | bend2 +\def\pingu@draw@ea@princesscrown@s#1#2#3{ +\pingu@block{#1} [rounded corners=.2mm](-3.25mm,-.15cm) to[bend left=2] ++(0,2.32mm) to[bend #2=\pingu@x@princesscrown@f@bend] + coordinate[pos=0] (r2) coordinate[pos=.065] (r1) + coordinate[pos=.11] (a1) coordinate[pos=.2] (a2) coordinate[pos=.29] (a3) + coordinate[pos=.35] (b1) coordinate[pos=.50] (x2) coordinate[pos=.65] (b3) + coordinate[pos=.71] (c1) coordinate[pos=.8] (c2) coordinate[pos=.89] (c3) + coordinate[pos=1] (l2) coordinate[pos=.93] (l1) + ++(8mm,0) to[bend left=2] ++(0,-2.32mm) to[bend #3=\pingu@x@princesscrown@f@bend] (-3mm,-.15cm) -- cycle; +\path (x2)++(0,.9mm) coordinate (b2); +\@for\a:={a,b,c}\do{ + \pingu@block{#1} ([yshift=-.1mm]\a1) to[bend right=\pingu@x@princesscrown@f@bend] ([yshift=-.1mm]\a3) to[bend left=2] ([yshift=2.15mm]\a2) to[bend left=2] ([yshift=-.1mm]\a1) -- cycle; + \if@pingu@x@princesscrown@bobbles@\pingu@block{#1} ([yshift=2.15mm]\a2) circle [radius=.45\p@];\fi +} +\pingu@block{#1} (l2)++(0,-.2mm) to[bend left=2] ++(0,2.25mm) -- (l1) -- cycle; +\pingu@block{#1} (r2)++(0,-.2mm) to[bend right=2] ++(0,2.25mm) -- (r1) -- cycle; +\if@pingu@x@princesscrown@bobbles@\pingu@block{#1} (l2)++(0,2.05mm) circle [radius=.45\p@]; +\pingu@block{#1} (r2)++(0,2.05mm) circle [radius=.45\p@];\fi +} + +% draw single gem; color | at | shift | scale +\def\pingu@draw@ea@princesscrown@g#1#2#3#4{ +\scope[shift={(#22)},shift={(#3,-.33mm)}] + \pingu@block{\pingu@color@princesscrown@gem@ring} ellipse [x radius=.715mm*#4, y radius=.925mm*#4]; + \pingu@block{#1} ellipse [x radius=.633mm*#4, y radius=.85mm*#4]; + \protected@edef\@tmp{#1}\ifx\@tmp\@pingu@none\else + \if@pingu@x@princesscrown@shade@ + \shade[ball color=#1,fill opacity=.45,shading angle=-95] ellipse [x radius=.633mm*#4, y radius=.85mm*#4]; + \else + \pingu@block[rotate around={7:(42:.3mm*#4 and .4mm*#4)}]{#1!45!pingu@white} (42:.3mm*#4 and .4mm*#4) ellipse[x radius=.17mm*#4, y radius=.24mm*#4]; + \pingu@block[rotate around={7:(232:.275mm*#4 and .35mm*#4)}]{#1!45!pingu@white} (232:.275mm*#4 and .35mm*#4) ellipse[x radius=.06mm*#4, y radius=.085mm*#4]; + \fi\fi +\endscope} +\def\pingu@draw@ea@princesscrown{% +\scope[rotate around={\pingu@x@princesscrown@angle:(\pingu@name-head-top)},% + shift={(\pingu@name-head-top)}, + shift={(\pingu@x@princesscrown@xshift,\pingu@x@princesscrown@yshift)}, + scale=\pingu@x@princesscrown@scale] +% draw front +\if@pingu@x@princesscrown@ddd@ + \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown}{right}{left} + \def\@tmpa{.05mm} +\else + \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown}{left}{right} + \def\@tmpa{-.015mm} +\fi +% draw the emaralds +\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@b}{a}{-\@tmpa}{.95} +\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@c}{x}{\z@}{1.3} +\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@d}{c}{\@tmpa}{.95} +\pingu@layer{background}[] +\pingu@block{\pingu@color@princesscrown@gem@a} (r2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm]; +\pingu@block{\pingu@color@princesscrown@gem@ring} (r2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm]; +\pingu@block{\pingu@color@princesscrown@gem@e} (l2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm]; +\pingu@block{\pingu@color@princesscrown@gem@ring} (l2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm]; +% draw back if 3d +\if@pingu@x@princesscrown@ddd@ + \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown@back}{left}{right} +\fi +\endpingu@layer +\endscope +}
\ No newline at end of file |