summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/simplenodes/simplenodes.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-04-04 03:14:42 +0000
committerNorbert Preining <norbert@preining.info>2022-04-04 03:14:42 +0000
commit7548e4d37c2aaefd32fe0a9bcd83f8e71326dde1 (patch)
treed335b608e63e9b3c37d7ba0e567c63e77250e171 /graphics/pgf/contrib/simplenodes/simplenodes.sty
parent506de1e2d3515161cdbc7018b4ccc9e49d7f86e8 (diff)
CTAN sync 202204040314
Diffstat (limited to 'graphics/pgf/contrib/simplenodes/simplenodes.sty')
-rw-r--r--graphics/pgf/contrib/simplenodes/simplenodes.sty116
1 files changed, 116 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/simplenodes/simplenodes.sty b/graphics/pgf/contrib/simplenodes/simplenodes.sty
new file mode 100644
index 0000000000..a8cdeff728
--- /dev/null
+++ b/graphics/pgf/contrib/simplenodes/simplenodes.sty
@@ -0,0 +1,116 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% simplenodes.sty
+%% <https://github.com/user9856749/simplenodes>
+%%
+%% MIT License
+%%
+%% Copyright (c) 2022 Bob Vergauwen
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy
+%% of this software and associated documentation files (the "Software"), to deal
+%% in the Software without restriction, including without limitation the rights
+%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+%% copies of the Software, and to permit persons to whom the Software is
+%% furnished to do so, subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all
+%% copies or substantial portions of the Software.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+%% SOFTWARE.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{simplenodes}[2022/03/31 A package that provides simple nodes in four colors.]
+
+\RequirePackage{kvoptions}
+
+\DeclareStringOption[25mm]{width}
+\DeclareStringOption[7mm]{minheight}
+\DeclareStringOption[center]{align}
+\DeclareStringOption[2pt]{innersep}
+\DeclareStringOption[0pt]{outersep}
+\DeclareStringOption[0.4pt]{thickness}
+\ProcessKeyvalOptions*
+
+\RequirePackage{kvoptions}
+\RequirePackage{tikz}
+\RequirePackage{color}
+\usetikzlibrary{math}
+
+% Coordinate manipulations
+
+
+\newcommand{\gettikzxy}[3]{%
+ \tikz@scan@one@point\pgfutil@firstofone#1\relax
+ \edef#2{\the\pgf@x}%
+ \edef#3{\the\pgf@y}%
+}
+
+% Define the main color
+\definecolor{InvisibleRed}{rgb}{0.97, 0.92, 0.92}
+\definecolor{InvisibleGreen}{rgb}{0.92, 0.97, 0.92}
+\definecolor{InvisibleBlue}{rgb}{0.92, 0.92, 0.97}
+\definecolor{InvisibleYellow}{rgb}{1.0, 1.0, 0.88}
+
+\definecolor{MediumRed}{rgb}{0.925, 0.345, 0.345}
+\definecolor{MediumGreen}{rgb}{0.37, 0.7, 0.66}
+\definecolor{MediumBlue}{rgb}{0.015, 0.315, 0.45}
+\definecolor{MediumYellow}{rgb}{1.0, 0.75, 0.0}
+
+% Define the node
+\newcommand\mynode[2]{
+ \tikz[remember picture,baseline]
+ \node[
+ draw=#1,fill=#2,
+ rectangle,
+ line width = \simplenodes@thickness,
+ align=\simplenodes@align,
+ text width=\simplenodes@width,
+ inner sep=\simplenodes@innersep,
+ outer sep=\simplenodes@outersep,
+ minimum height=\simplenodes@minheight,
+ ]
+}
+
+% Define the line
+\newcommand\myline[2]{
+ \draw[
+ ->,
+ line width = \simplenodes@thickness
+ ] (#1) to (#2);
+}
+
+\newcommand\link[2]{
+ \begin{tikzpicture}[remember picture, overlay, >=stealth, shift={(0,0)}]
+ \gettikzxy{(#1)}{\ax}{\ay}
+ \gettikzxy{(#2)}{\bx}{\by}
+ \tikzmath{
+ if \ax == \bx then {
+ if \ay < \by then {
+ {\myline{#1.north}{#2.south}};
+ };
+ if \ay > \by then {
+ {\myline{#1.south}{#2.north}};
+ };
+ };
+ if \ax < \bx then {
+ {\myline{#1.east}{#2.west}};
+ };
+ if \ax > \bx then {
+ {\myline{#1.west}{#2.east}};
+ };
+ };
+ \end{tikzpicture}
+}
+
+% Provide the commands
+\newcommand\simplenode[2]{\mynode{MediumBlue}{InvisibleBlue} (#1){#2};}
+\newcommand\examplenode[2]{\mynode{MediumGreen}{InvisibleGreen} (#1){#2};}
+\newcommand\alertnode[2]{\mynode{MediumRed}{InvisibleRed} (#1){#2};}
+\newcommand\warnnode[2]{\mynode{MediumYellow}{InvisibleYellow} (#1){#2};}