diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.circlecrosssplit.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.circlecrosssplit.code.tex | 292 |
1 files changed, 292 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.circlecrosssplit.code.tex b/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.circlecrosssplit.code.tex new file mode 100644 index 00000000000..7bc2761fb48 --- /dev/null +++ b/Master/texmf-dist/tex/generic/tikz-ext/pgflibraryext.shapes.circlecrosssplit.code.tex @@ -0,0 +1,292 @@ +% Copyright 2022 by Qrrbrbirlbel +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Free Documentation License. +% +\usepgflibrary{shapes.multipart} +\let\pgfnodeparttrbox\pgfnodeparttwobox +\let\pgfnodepartblbox\pgfnodepartthreebox +\let\pgfnodepartbrbox\pgfnodepartfourbox +\newif\ifpgfcirclecrosssplitcustomfill +\pgfset{% + circle cross split part fill/.code=% + \def\pgf@lib@sh@ccs@list@fill{#1}% + \pgfcirclecrosssplitcustomfilltrue,% + circle cross split uses custom fill/.is if=pgfcirclecrosssplitcustomfill +} +\def\pgf@lib@sh@ccs@list@fill{none}% +\pgfdeclareshape{circle cross split}{% + \nodeparts{text,two,three,four}% + \savedanchor\centerpoint{% + \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}% + \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}% + \pgf@x =\wd\pgfnodeparttextbox + \pgf@yb=\dp\pgfnodeparttextbox + \pgf@y=\dp\pgfnodeparttwobox + \ifdim\pgf@yb>\pgf@y + \pgf@y=\pgf@yb + \fi + \advance\pgf@x\pgf@xa + \advance\pgf@y-\pgf@ya + \advance\pgf@x.5\pgflinewidth + \advance\pgf@y-.5\pgflinewidth + }% + \savedanchor\twoanchor{% + \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}% + \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}% + \advance\pgf@x.5\pgflinewidth + \advance\pgf@x\pgf@xa + \advance\pgf@y.5\pgflinewidth + \advance\pgf@y\pgf@ya + \pgf@yb\dp\pgfnodeparttextbox + \pgf@yc\dp\pgfnodeparttwobox + \ifdim\pgf@yb>\pgf@yc + \pgf@yc\pgf@yb + \fi + \advance\pgf@y\pgf@yc + }% + \savedanchor\threeanchor{% + \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}% + \pgf@x\wd\pgfnodeparttextbox + \pgf@yb\dp\pgfnodeparttextbox + \pgf@yc\dp\pgfnodeparttwobox + \ifdim\pgf@yb>\pgf@yc + \pgf@yc\pgf@yb + \fi + \advance\pgf@y-\pgf@yc + \advance\pgf@y-2\pgf@ya + \advance\pgf@y-\pgflinewidth + \pgf@yb\ht\pgfnodepartthreebox + \pgf@yc\ht\pgfnodepartfourbox + \ifdim\pgf@yb>\pgf@yc + \pgf@yc\pgf@yb + \fi + \advance\pgf@y-\pgf@yc + \advance\pgf@x-\wd\pgfnodepartthreebox + }% + \saveddimen\radius{% + % height (upper): + \pgf@y=\ht\pgfnodeparttextbox + \ifdim\pgf@y<\ht\pgfnodeparttwobox + \pgf@y=\ht\pgfnodeparttwobox + \fi + \ifdim\dp\pgfnodeparttextbox>\dp\pgfnodeparttwobox + \advance\pgf@y by\dp\pgfnodeparttextbox + \else + \advance\pgf@y by\dp\pgfnodeparttwobox + \fi + % height (lower): + \pgf@yb\ht\pgfnodepartthreebox + \ifdim\pgf@yb<\ht\pgfnodepartfourbox + \pgf@yb=\ht\pgfnodepartfourbox + \fi + \pgf@yc=\dp\pgfnodepartthreebox + \ifdim\pgf@yc<\dp\pgfnodepartfourbox + \advance\pgf@yb by\dp\pgfnodepartfourbox + \else + \advance\pgf@yb by\pgf@yc + \fi + \ifdim\pgf@yc>\pgf@y + \pgf@y=\pgf@yc + \fi + \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}% + \advance\pgf@y2\pgf@ya + % + \pgf@x\wd\pgfnodeparttextbox + \pgf@xa\wd\pgfnodepartthreebox + \pgf@xb\wd\pgfnodeparttwobox + \pgf@xc\wd\pgfnodepartfourbox + \ifdim\pgf@xa>\pgf@x + \pgf@x\pgf@xa + \fi + \ifdim\pgf@xb>\pgf@x + \pgf@x\pgf@xb + \fi + \ifdim\pgf@xc>\pgf@x + \pgf@x\pgf@xc + \fi + \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}% + \advance\pgf@x by 2\pgf@xa + \ifdim\pgf@y>\pgf@x + \pgf@x=\pgf@y + \fi + \advance\pgf@x by\pgflinewidth + % + \pgf@xa=\pgf@x + \pgf@ya=\pgf@y + % from circle: + \pgf@process{\pgfpointnormalised{}}% + \ifdim\pgf@x>\pgf@y% + \c@pgf@counta=\pgf@x% + \ifnum\c@pgf@counta=0\relax% + \else% + \divide\c@pgf@counta by 255\relax% + \pgf@xa=16\pgf@xa\relax% + \divide\pgf@xa by\c@pgf@counta% + \pgf@xa=16\pgf@xa\relax% + \fi% + \else% + \c@pgf@counta=\pgf@y% + \ifnum\c@pgf@counta=0\relax% + \else% + \divide\c@pgf@counta by 255\relax% + \pgf@ya=16\pgf@ya\relax% + \divide\pgf@ya by\c@pgf@counta% + \pgf@xa=16\pgf@ya\relax% + \fi% + \fi% + \pgf@x=\pgf@xa% + % + \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/minimum width}}% + \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/minimum height}}% + \ifdim\pgf@x<.5\pgf@xb + \pgf@x=.5\pgf@xb + \fi + \ifdim\pgf@x<.5\pgf@yb + \pgf@x=.5\pgf@yb + \fi + % + \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}% + \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}% + \ifdim\pgf@xb<\pgf@yb + \advance\pgf@x\pgf@yb + \else + \advance\pgf@x\pgf@xb + \fi + }% + \inheritanchorborder[from=circle]% + \inheritanchor[from=circle]{north}% + \inheritanchor[from=circle]{north west}% + \inheritanchor[from=circle]{north east}% + \inheritanchor[from=circle]{center}% + \inheritanchor[from=circle]{west}% + \inheritanchor[from=circle]{east}% + \inheritanchor[from=circle]{mid}% + \inheritanchor[from=circle]{mid west}% + \inheritanchor[from=circle]{mid east}% + \inheritanchor[from=circle]{base}% + \inheritanchor[from=circle]{base west}% + \inheritanchor[from=circle]{base east}% + \inheritanchor[from=circle]{south}% + \inheritanchor[from=circle]{south west}% + \inheritanchor[from=circle]{south east}% + \anchor{two}{\twoanchor}% + \anchor{three}{\threeanchor}% + \anchor{four}{ + \threeanchor + \pgf@ya=\pgf@y + \twoanchor + \pgf@y=\pgf@ya + }% + \anchor{lower base}{% + \threeanchor + \pgf@ya=\pgf@y + \centerpoint + \pgf@y=\pgf@ya + } + \anchor{lower base west}{% + \threeanchor + \pgf@ya=\pgf@y + \centerpoint + \pgf@y=\pgf@ya + \advance\pgf@x by-\radius + } + \anchor{lower base east}{% + \threeanchor + \pgf@ya=\pgf@y + \centerpoint + \pgf@y=\pgf@ya + \advance\pgf@x by\radius + } + \anchor{lower mid}{% + \threeanchor + \pgf@ya=\pgf@y + \centerpoint + \pgf@y=\pgf@ya + \pgfmathsetlength\pgf@ya{+.5ex}% + \advance\pgf@y by\pgf@ya + } + \anchor{lower mid west}{% + \threeanchor + \pgf@ya=\pgf@y + \centerpoint + \pgf@y=\pgf@ya + \advance\pgf@x by-\radius + \pgfmathsetlength\pgf@ya{+.5ex}% + \advance\pgf@y by\pgf@ya + } + \anchor{lower mid east}{% + \threeanchor + \pgf@ya=\pgf@y + \centerpoint + \pgf@y=\pgf@ya + \advance\pgf@x by\radius + \pgfmathsetlength\pgf@ya{+.5ex}% + \advance\pgf@y by\pgf@ya + } + \inheritbackgroundpath[from=circle] + \beforebackgroundpath{% + \pgfutil@tempdima=\radius + \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}% + \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}% + \ifdim\pgf@xb<\pgf@yb + \advance\pgfutil@tempdima by-\pgf@yb + \else + \advance\pgfutil@tempdima by-\pgf@xb + \fi + \advance\pgfutil@tempdima by-.5\pgflinewidth% + \pgfsetshortenstart{0pt}% + \pgfsetshortenend{0pt}% + \pgfsetarrows{-}% + \pgfpathmoveto + {\pgfpointadd{\centerpoint}{\pgfqpoint{-\pgfutil@tempdima}{0pt}}}% + \pgfpathlineto + {\pgfpointadd{\centerpoint}{\pgfqpoint{\pgfutil@tempdima}{0pt}}}% + \pgfpathmoveto + {\pgfpointadd{\centerpoint}{\pgfqpoint{0pt}{-\pgfutil@tempdima}}}% + \pgfpathlineto + {\pgfpointadd{\centerpoint}{\pgfqpoint{0pt}{\pgfutil@tempdima}}}% + \pgfusepathqstroke + }% + \behindbackgroundpath{% + \pgfutil@tempdima=\radius + \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}% + \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}% + \ifdim\pgf@xb<\pgf@yb + \advance\pgfutil@tempdima by-\pgf@yb + \else + \advance\pgfutil@tempdima by-\pgf@xb + \fi + \advance\pgfutil@tempdima by-.5\pgflinewidth% + \ifpgfcirclecrosssplitcustomfill% + \pgf@lib@sh@rs@process@list{\pgf@lib@sh@ccs@list@fill}{4}% + {% + \pgfmathloop + \ifnum\pgfmathcounter>4% + \else% + \pgf@lib@sh@getalpha\pgf@lib@sh@rs@number{\pgfmathcounter}% + \edef\pgf@tempa + {\csname pgf@lib@sh@rs@\pgf@lib@sh@rs@number @item\endcsname}% + \ifx\pgf@tempa\pgf@lib@sh@rs@nonetext\else + \pgfsetfillcolor{\pgf@tempa}% + \ifcase\pgfmathcounter\or + \def\pgf@lib@sh@ccs@angle{90}\or + \def\pgf@lib@sh@ccs@angle{0}\or + \def\pgf@lib@sh@ccs@angle{180}\else + \def\pgf@lib@sh@ccs@angle{270}% + \fi + \pgfpathmoveto{\centerpoint}% + \pgfpathlineto{\pgfpointadd{\centerpoint} + {\pgfqpointpolar{\pgf@lib@sh@ccs@angle}{\pgfutil@tempdima}}}% + \pgfpatharc{+\pgf@lib@sh@ccs@angle}{\pgf@lib@sh@ccs@angle+90} + {+\pgfutil@tempdima}% + \pgfpathclose + \pgfusepathqfill + \fi + \repeatpgfmathloop + }% + \fi + }% +}
\ No newline at end of file |