summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/wargame/source/hex/ridges.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-03-30 03:01:43 +0000
committerNorbert Preining <norbert@preining.info>2023-03-30 03:01:43 +0000
commit0a426619b66178dd2257f1ece60ff80f86f40e88 (patch)
treefb35be40eb794817645905b4813c091d5f75dda9 /macros/latex/contrib/wargame/source/hex/ridges.dtx
parent395caca342df230d7d98a658477b7f54c3ee5845 (diff)
CTAN sync 202303300301
Diffstat (limited to 'macros/latex/contrib/wargame/source/hex/ridges.dtx')
-rw-r--r--macros/latex/contrib/wargame/source/hex/ridges.dtx80
1 files changed, 59 insertions, 21 deletions
diff --git a/macros/latex/contrib/wargame/source/hex/ridges.dtx b/macros/latex/contrib/wargame/source/hex/ridges.dtx
index 3914ff6ce5..24552e36e2 100644
--- a/macros/latex/contrib/wargame/source/hex/ridges.dtx
+++ b/macros/latex/contrib/wargame/source/hex/ridges.dtx
@@ -9,23 +9,31 @@
% A hex can be decorated with up to 6 ridges --- one for each edge of
% the hexagon. The first thing is to set up the graphics style to use
% for the ridges. We use the \spec{wave} decoration.
+%
+% If rounded corners are set for ridges, (e.g., via \spec{every hex
+% ridges}), then it should be \spec{0pt} or \spec{4pt} (roughly 2mm)
+% or larger. Otherwise, one will get a ``dimension too large''
+% error.
%
% \begin{macrocode}
\tikzset{%
- hex/ridges/.style={
+ hex/ridges pre/.style={
line cap=round,
draw=pgfstrokecolor,
- rounded corners=.25cm,
- scale line widths,
+ solid,
+ /hex/ridges/.cd,%
+ radius=0.85,%
+ n=4,
+ R=.25,
+ },
+ hex/ridges/.style={
+ get scale,
decoration={
path has corners=true,
- pre=waves,
- post=waves,
- pre length=-.1cm,
- post length=0cm,
waves,
- radius=.2cm,
- segment length=.2cm},
+ radius=\wg@scale\hex@r@R,
+ segment length=\wg@scale\hex@r@s,
+ },
decorate}}
% \end{macrocode}
%
@@ -57,6 +65,7 @@
south/.is if=hex@r@s,
south east/.is if=hex@r@se,
radius/.store in=\hex@r@r,
+ curve radius/.store in=\hex@r@w,
NE/.is if=hex@r@ne,
N/.is if=hex@r@n,
NW/.is if=hex@r@nw,
@@ -64,6 +73,8 @@
S/.is if=hex@r@s,
SE/.is if=hex@r@se,
r/.store in=\hex@r@r,
+ n/.store in=\hex@r@n,
+ R/.store in=\hex@r@w,
}
% \end{macrocode}
%
@@ -74,10 +85,11 @@
% the routine below is handcrafted since it is relatively simple.
%
% \begin{macrocode}
+\newdimen\hex@r@s
+\newdimen\hex@r@R
\def\hex@do@ridges{%
\edef\hex@r@tmp{[
- /hex/ridges/.cd,%
- radius=0.8,%
+ hex/ridges pre,
/tikz/every hex ridges/.try,
\hex@ridges]}
\expandafter\scope\hex@r@tmp%
@@ -89,44 +101,70 @@
^^Jsouth =\ifhex@r@s yes\else no\fi
^^Jsouth east=\ifhex@r@se yes\else no\fi
^^Jradius =\hex@r@r
+ ^^Jn =\hex@r@n
}
+ \pgfmathparse{\hex@r@r/\hex@r@n}\xdef\hex@r@t{\pgfmathresult}
+ \hex@r@s=\hex@r@t cm
+ \hex@r@R=\hex@r@w cm
\def\hex@r@p{}
% Hand written algorithm
\ifhex@r@ne
- \def\hex@r@p{(0:\hex@r@r)--(60:\hex@r@r)}
+ \ifhex@r@se
+ \xdef\hex@r@p{(0:\hex@r@r)--(60:\hex@r@r)}
+ \else
+ \xdef\hex@r@p{($(0:\hex@r@r)+(-60:\hex@r@t/2)$)--(60:\hex@r@r)}
+ \fi
+ \hex@dbg{4}{Ridge along north east edge: `\hex@r@p'}
\fi
\ifhex@r@n
- \hex@dbg{4}{Ridge along north edge: `\hex@r@p'}
\ifhex@r@ne\else
- \xdef\hex@r@p{\hex@r@p ( 60:\hex@r@r)}
+ \xdef\hex@r@p{\hex@r@p ($( 60:\hex@r@r)+(0:\hex@r@t/2)$)}
\fi
\xdef\hex@r@p{\hex@r@p --(120:\hex@r@r)}
+ \hex@dbg{4}{Ridge along north edge: `\hex@r@p'}
\fi
\ifhex@r@nw
\ifhex@r@n\else
- \xdef\hex@r@p{\hex@r@p (120:\hex@r@r)}
+ \xdef\hex@r@p{\hex@r@p ($(120:\hex@r@r)+(60:\hex@r@t/2)$)}
\fi
\xdef\hex@r@p{\hex@r@p --(180:\hex@r@r)}
+ \hex@dbg{4}{Ridge along north west: `\hex@r@p'}
\fi
\ifhex@r@sw
\ifhex@r@nw\else
- \xdef\hex@r@p{\hex@r@p (180:\hex@r@r)}
+ \xdef\hex@r@p{\hex@r@p ($(180:\hex@r@r)+(120:\hex@r@t/2)$)}
+ \fi
+ \ifhex@r@s
+ \xdef\hex@r@p{\hex@r@p --(240:\hex@r@r)}
+ \else
+ \xdef\hex@r@p{\hex@r@p --(240:\hex@r@r)}
\fi
- \xdef\hex@r@p{\hex@r@p --(240:\hex@r@r)}
+ \hex@dbg{4}{Ridge along south west: `\hex@r@p'}
\fi
\ifhex@r@s
\ifhex@r@sw\else
- \xdef\hex@r@p{\hex@r@p (240:\hex@r@r)}
+ \xdef\hex@r@p{\hex@r@p ($(240:\hex@r@r)+(-\hex@r@t/2,0)$)}
\fi
- \xdef\hex@r@p{\hex@r@p --(300:\hex@r@r)}
+ \ifhex@r@se
+ \xdef\hex@r@p{\hex@r@p --(300:\hex@r@r)}
+ \else
+ \xdef\hex@r@p{\hex@r@p --(300.5:\hex@r@r)}
+ \fi
+ \hex@dbg{4}{Ridge along south: `\hex@r@p'}
\fi
\ifhex@r@se
\ifhex@r@s\else
- \xdef\hex@r@p{\hex@r@p (300:\hex@r@r)}
+ \xdef\hex@r@p{\hex@r@p ($(300:\hex@r@r)+(-120:\hex@r@t/2)$)}
+ \fi
+ \ifhex@r@ne
+ \xdef\hex@r@p{\hex@r@p --cycle}
+ \else
+ \xdef\hex@r@p{\hex@r@p --(.5:\hex@r@r)}
\fi
- \xdef\hex@r@p{\hex@r@p --(360:\hex@r@r)}
+ \hex@dbg{4}{Ridge along se: `\hex@r@p'}
\fi
\hex@dbg{3}{ Ridges path: \hex@r@p}
+ % \draw[red] \hex@r@p;
\draw[hex/ridges] \hex@r@p;
\endscope% End of ridges scope
}