forked from Qrrbrbirlbel/TikZ-misc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpgflibraryqrr.shapes.openrectangle.code.tex
96 lines (96 loc) · 6.37 KB
/
pgflibraryqrr.shapes.openrectangle.code.tex
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
\let\pgf@sh@openrectangle@full\pgf@sh@bg@rectangle
\let\pgf@sh@openrectangle@\pgf@sh@openrectangle@full
\def\pgf@sh@openrectangle@e {\pgfsetrectcap\pgfpathmoveto{\SE}\pgfpathlineto{\NE}}
\def\pgf@sh@openrectangle@n {\pgfsetrectcap\pgfpathmoveto{\NW}\pgfpathlineto{\NE}}
\def\pgf@sh@openrectangle@w {\pgfsetrectcap\pgfpathmoveto{\SW}\pgfpathlineto{\NW}}
\def\pgf@sh@openrectangle@s {\pgfsetrectcap\pgfpathmoveto{\SW}\pgfpathlineto{\SE}}
\def\pgf@sh@openrectangle@en{\pgfsetrectcap\pgfpathmoveto{\SE}\pgfpathlineto{\NE}\pgfpathlineto{\NW}}
\def\pgf@sh@openrectangle@ew{\pgfsetrectcap\pgfpathmoveto{\NW}\pgfpathlineto{\SW}\pgfpathmoveto{\SE}\pgfpathlineto{\NE}}
\def\pgf@sh@openrectangle@es{\pgfsetrectcap\pgfpathmoveto{\SW}\pgfpathlineto{\SE}\pgfpathlineto{\NE}}
\def\pgf@sh@openrectangle@enw{\pgfsetbuttcap
\pgfpathmoveto{\pgfpointadd{\SE}{\pgfpointscale{-1}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
\pgfpathlineto{\NE}\pgfpathlineto{\NW}\pgfpathlineto{\pgfpointadd{\SW}{\pgfpointscale{-1}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}}
\def\pgf@sh@openrectangle@ens{\pgfsetbuttcap
\pgfpathmoveto{\pgfpointadd{\SW}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}
\pgfpathlineto{\SE}\pgfpathlineto{\NE}\pgfpathlineto{\pgfpointadd{\NW}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}}
\def\pgf@sh@openrectangle@ews{\pgfsetbuttcap
\pgfpathmoveto{\pgfpointadd{\NE}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}
\pgfpathlineto{\SE}\pgfpathlineto{\SW}\pgfpathlineto{\pgfpointadd{\NW}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
\def\pgf@sh@openrectangle@nw{\pgfsetrectcap\pgfpathmoveto{\NE}\pgfpathlineto{\NW}\pgfpathlineto{\SW}}
\def\pgf@sh@openrectangle@ns{\pgfsetrectcap\pgfpathmoveto{\NE}\pgfpathlineto{\NW}\pgfpathmoveto{\SW}\pgfpathlineto{\SE}}
\def\pgf@sh@openrectangle@nws{\pgfsetbuttcap
\pgfpathmoveto{\pgfpointadd{\NE}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}
\pgfpathlineto{\NW}\pgfpathlineto{\SW}\pgfpathlineto{\pgfpointadd{\SE}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}
\def\pgf@sh@openrectangle@ws{\pgfsetrectcap\pgfpathmoveto{\NW}\pgfpathlineto{\SW}\pgfpathlineto{\SE}}
\def\pgf@sh@openrectangle@bbg@e{\pgfsetcornersarced{\pgfpointorigin}\pgfpathrectanglecorners{\southwest}{\northeast}}
\let\pgf@sh@openrectangle@bbg@n\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@s\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@w\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@ns\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@ew\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@full\pgf@sh@openrectangle@full
\let\pgf@sh@openrectangle@bbg@\pgf@sh@openrectangle@
\let\pgf@sh@openrectangle@bbg@enw\pgf@sh@openrectangle@enw
\let\pgf@sh@openrectangle@bbg@ens\pgf@sh@openrectangle@ens
\let\pgf@sh@openrectangle@bbg@ews\pgf@sh@openrectangle@ews
\let\pgf@sh@openrectangle@bbg@nws\pgf@sh@openrectangle@nws
\def\pgf@sh@openrectangle@bbg@en{%
\pgfpathmoveto{\pgfpointadd{\SE}{\pgfpointscale{-1}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}%
\pgfpathlineto{\NE}%
\pgfsetcornersarced{\pgfpointorigin}%
\pgfpathlineto{\pgfpointadd{\NW}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}%
\pgfpathlineto{\southwest}}
\def\pgf@sh@openrectangle@bbg@nw{%
\pgfpathmoveto{\pgfpointadd{\NE}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}%
\pgfpathlineto{\NW}%
\pgfsetcornersarced{\pgfpointorigin}%
\pgfpathlineto{\pgfpointadd{\SW}{\pgfpointscale{-1}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}%
\pgfpathlineto{\southwest\pgf@ya\pgf@y\northeast\pgf@y\pgf@ya}}
\def\pgf@sh@openrectangle@bbg@ws{%
\pgfpathmoveto{\pgfpointadd{\NW}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}%
\pgfpathlineto{\SW}%
\pgfsetcornersarced{\pgfpointorigin}%
\pgfpathlineto{\pgfpointadd{\SE}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}%
\pgfpathlineto{\northeast}}
\def\pgf@sh@openrectangle@bbg@es{%
\pgfpathmoveto{\pgfpointadd{\SW}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}%
\pgfpathlineto{\SE}%
\pgfsetcornersarced{\pgfpointorigin}%
\pgfpathlineto{\pgfpointadd{\NE}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}%
\pgfpathlineto{\southwest\pgf@xa\pgf@x\northeast\pgf@x\pgf@xa}}
\pgfset{open rectangle sides/.initial=ns, open rectangle fill/.initial=}
\pgfdeclareshape{open rectangle}{%
\inheritsavedanchors[from=rectangle]
\inheritanchorborder[from=rectangle]
\inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{south}
\inheritanchor[from=rectangle]{north west}\inheritanchor[from=rectangle]{south west}
\inheritanchor[from=rectangle]{north east}\inheritanchor[from=rectangle]{south east}
\inheritanchor[from=rectangle]{center}
\inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east}
\inheritanchor[from=rectangle]{base} \inheritanchor[from=rectangle]{mid}
\inheritanchor[from=rectangle]{base west} \inheritanchor[from=rectangle]{mid west}
\inheritanchor[from=rectangle]{base east} \inheritanchor[from=rectangle]{mid east}
\behindbackgroundpath{%
\pgfkeysgetvalue{/pgf/open rectangle fill}\pgf@temp
\ifx\pgf@temp\pgfutil@empty
\else
\pgfextract@process\SW{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}%
\pgf@xa\pgf@x\pgf@ya\pgf@y
\pgfextract@process\NE{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}%
\pgf@xb\pgf@x\pgf@yb\pgf@y
\pgfextract@process\NW{\pgf@x\pgf@xa\pgf@y\pgf@yb}%
\pgfextract@process\SE{\pgf@x\pgf@xb\pgf@y\pgf@ya}%
\csname pgf@sh@openrectangle@bbg@\pgfkeysvalueof{/pgf/open rectangle sides}\endcsname
\pgfsetfillcolor{\pgfkeysvalueof{/pgf/open rectangle fill}}%
\pgfusepath{fill}
\fi
}%
\backgroundpath{%
\pgfextract@process\SW{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}%
\pgf@xa\pgf@x\pgf@ya\pgf@y
\pgfextract@process\NE{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}%
\pgf@xb\pgf@x\pgf@yb\pgf@y
\pgfextract@process\NW{\pgf@x\pgf@xa\pgf@y\pgf@yb}%
\pgfextract@process\SE{\pgf@x\pgf@xb\pgf@y\pgf@ya}%
\csname pgf@sh@openrectangle@\pgfkeysvalueof{/pgf/open rectangle sides}\endcsname}}
\endinput