summaryrefslogtreecommitdiff
path: root/tex/context/base/attr-eff.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/attr-eff.mkiv')
-rw-r--r--tex/context/base/attr-eff.mkiv43
1 files changed, 21 insertions, 22 deletions
diff --git a/tex/context/base/attr-eff.mkiv b/tex/context/base/attr-eff.mkiv
index 43f575a7a..c5c94537c 100644
--- a/tex/context/base/attr-eff.mkiv
+++ b/tex/context/base/attr-eff.mkiv
@@ -17,39 +17,38 @@
\unprotect
-\installcorenamespace{effect}
+\gdef\dotriggereffect#1#2#3%
+ {\ctxcommand{triggereffect('#1',#2,\number\dimexpr#3\relax)}}
-\installcommandhandler \??effect {effect} \??effect
+\unexpanded\def\setupeffect
+ {\dodoubleargument\dosetupeffect}
-\setupeffect
- [\c!method=\v!none,
- \c!stretch=\zerocount,
- \c!rulethickness=\zeropoint,
- \c!alternative=\v!normal]
+\def\dosetupeffect[#1][#2]%
+ {\getparameters[\??et#1][#2]}
-\appendtoks
- \edef\p_method{\effectparameter\c!method}%
- \ifx\p_method\v!method
- \setuxvalue{\e!start\currenteffect}{\starteffect[#1]}%
- \setuxvalue{\e!stop \currenteffect}{\stopeffect}%
- \fi
-\to \everydefineeffect
+\unexpanded\def\defineeffect
+ {\dodoubleargument\dodefineeffect}
+
+\def\dodefineeffect[#1][#2]%
+ {\getparameters[\??et#1][\c!method=\v!none,\c!stretch=0,\c!rulethickness=\zeropoint,\c!alternative=\v!normal,#2]%
+ \doif{\getvalue{\??et#1\c!method}}\v!command
+ {\setugvalue{\e!start#1}{\starteffect[#1]}%
+ \setugvalue{\e!stop #1}{\stopeffect}}}
+
+% yes or no grouped
\unexpanded\def\starteffect[#1]%
- {\ctxcommand{triggereffect{
- alternative = "\namedeffectparameter{#1}\c!alternative",
- stretch = \number\namedeffectparameter{#1}\c!stretch,
- rulethickness = \number\dimexpr\namedeffectparameter{#1}\c!rulethickness\relax
- }}}
+ {\dotriggereffect
+ {\csname\??et#1\c!alternative \endcsname}%
+ {\csname\??et#1\c!stretch \endcsname}%
+ {\csname\??et#1\c!rulethickness\endcsname}}
\unexpanded\def\stopeffect % can be special
- {\ctxcommand{triggereffect()}} % v!normal 0 0
+ {\dotriggereffect\v!normal0\zeropoint}
\unexpanded\def\effect[#1]%
{\groupedcommand{\starteffect[#1]}{\stopeffect}}
-% yes or no grouped
-
\defineeffect [\v!inner] [\c!alternative=\v!inner,\c!rulethickness=.25pt]
\defineeffect [\v!outer] [\c!alternative=\v!outer,\c!rulethickness=.25pt]
\defineeffect [\v!both] [\c!alternative=\v!both, \c!rulethickness=.25pt]