summaryrefslogtreecommitdiff
path: root/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex')
-rw-r--r--graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex75
1 files changed, 69 insertions, 6 deletions
diff --git a/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex b/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex
index 7e14839b36..f236aedfb6 100644
--- a/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex
+++ b/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-arrow.tex 328 2016-09-01 19:00:31Z herbert $
+%% $Id: pst-arrow.tex 134 2021-07-23 06:33:54Z herbert $
%%
%% This is file `pst-arrow.tex',
%%
@@ -22,13 +22,17 @@
\ifx\PSTricksLoaded\endinput\else\input pstricks \fi
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
%
-\def\fileversion{0.01}
-\def\filedate{2016/09/01}
+\def\fileversion{0.02}
+\def\filedate{2021/07/21}
\message{`pst-arrow' v\fileversion, \filedate\space (dr,hv)}
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
\pst@addfams{pst-arrow}
%
+\define@key[psset]{pst-arrow}{tipcolor}[black]{\pst@getcolor{#1}\psk@tipcolor}
+\psset[pst-arrow]{tipcolor=black}
+
+%
\def\psBigArrow{\pst@object{psBigArrow}}
\def\psBigArrow@i(#1)(#2){%
\addbefore@par{doublesep=1cm}
@@ -105,18 +109,25 @@
x y L % point #3
{ closepath gsave fill grestore } if % if filled : close and fill
\@nameuse{psls@\psarrowlinestyle}
+ \pst@usecolor\psk@tipcolor
stroke % draw line
0 t { y 2 mul } { 0 } ifelse moveto> % if outside : twice longer line
% VeeArrow : filled? outside? (total) angle (projected) length (arrow) line width
+\@namedef{psas@|}{\pst@usecolor\psk@tipcolor \psk@tbarsize \tx@Tbar}
+
\@namedef{psas@v}{%
+ \pst@usecolor\psk@tipcolor
false false \psk@veearrowangle \psk@veearrowlength \psk@veearrowlinewidth \tx@VeeArrow}
\@namedef{psas@V}{%
+ \pst@usecolor\psk@tipcolor
false true \psk@veearrowangle \psk@veearrowlength \psk@veearrowlinewidth \tx@VeeArrow}
\@namedef{psas@f}{%
+ \pst@usecolor\psk@tipcolor
true false \psk@filledveearrowangle \psk@filledveearrowlength \psk@filledveearrowlinewidth \tx@VeeArrow}
\@namedef{psas@F}{%
+ \pst@usecolor\psk@tipcolor
true true \psk@filledveearrowangle \psk@filledveearrowlength \psk@filledveearrowlinewidth \tx@VeeArrow}
% And An another arrowhead
@@ -138,11 +149,57 @@
y neg y moveto % point #1
y y neg L % point #2
\@nameuse{psls@\psarrowlinestyle}
+ \pst@usecolor\psk@tipcolor
stroke % draw line
0 0 moveto> % origin
-\@namedef{psas@t}{ false \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow }
-\@namedef{psas@T}{ true \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow }
+
+\@namedef{psas@t}{ \pst@usecolor\psk@tipcolor\space false \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow }
+\@namedef{psas@T}{ \pst@usecolor\psk@tipcolor\space true \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow }
+
+\pst@def{ArrowD}< % the sides are drawn as curves (hv 20071211)
+ CLW mul add dup
+ 2 div /w ED
+ mul dup /h ED
+ mul /Inset ED
+ { 0 h T 1 -1 scale } if % changes the direction
+% we use y=w/h^2 * x^2 as equation for the control points
+% for the coordinates the arrow is seen from top to bottom
+% the bottom (tip) is (0;0)
+ w neg h moveto % lower left of >
+ w 9 div 4 mul neg h 3 div 2 mul
+ w 9 div neg h 3 div
+ 0 0 curveto % tip of >
+ w 9 div h 3 div
+ w 9 div 4 mul h 3 div 2 mul
+ w h curveto % upper left of >
+ w neg Inset neg rlineto % move to x=0 and inset
+ gsave
+ \pst@usecolor\psk@tipcolor
+ fill grestore >
+%
+\pst@def{ArrowT}< % like tikz
+ CLW mul add dup
+ 2 div /w ED
+ mul dup /h ED
+ mul /Inset ED
+ { 0 h T 1 -1 scale } if % changes the direction
+ w 2 mul /w exch def
+ w neg h moveto % lower left of >
+ w 9 div 4 mul neg h 3 div 2 mul
+ w 9 div neg h 3 div
+ 0 0 curveto % tip of >
+ w 9 div h 3 div
+ w 9 div 4 mul h 3 div 2 mul
+ w h curveto % upper left of >
+% w neg Inset neg rlineto % move to x=0 and inset
+% CLW SLW
+% 1 0 0 setrgbcolor
+ 2 setlinejoin
+ \pst@usecolor\psk@tipcolor
+ stroke
+ 0 0 moveto >
+%
%
% HookLeft/RightArrow
\newdimen\pshooklength
@@ -154,6 +211,7 @@
\edef\pst@arrowtable{\pst@arrowtable,H-H,h-h} % add new arrow
\def\tx@RHook{RHook } % PostScript name
\def\tx@Rhook{Rhook } % PostScript name
+
\@namedef{psas@H}{%
/RHook {
/x ED % hook width
@@ -165,6 +223,7 @@
stroke
0 y moveto % define current point
} def
+ \pst@usecolor\psk@tipcolor
\pst@number\pshooklength
\pst@number\pshookwidth
\tx@RHook
@@ -178,6 +237,7 @@
/a ED
w neg h abs moveto 0 0 L
gsave
+ \pst@usecolor\psk@tipcolor
stroke grestore
} def
0 \psk@arrowlength \psk@arrowsize \tx@Rhook
@@ -194,12 +254,15 @@
/a ED { 0 h T 1 -1 scale } if
gsave
\ifpsArrowFill\else\pst@number\pslinewidth \pst@arrowscale\space div SLW \fi
+ \pst@usecolor\psk@tipcolor
w neg h moveto
0 0 L w h L w neg a neg rlineto
\ifpsArrowFill gsave
\tx@setStrokeTransparency
fill
- grestore \else gsave closepath stroke grestore \fi
+ grestore \else gsave closepath
+ \pst@usecolor\psk@tipcolor
+ stroke grestore \fi
grestore
0 h a sub moveto
}>