summaryrefslogtreecommitdiff
path: root/tex/context/base/mkii/prop-mis.mkii
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkii/prop-mis.mkii')
-rw-r--r--tex/context/base/mkii/prop-mis.mkii189
1 files changed, 189 insertions, 0 deletions
diff --git a/tex/context/base/mkii/prop-mis.mkii b/tex/context/base/mkii/prop-mis.mkii
new file mode 100644
index 000000000..47fb9ea06
--- /dev/null
+++ b/tex/context/base/mkii/prop-mis.mkii
@@ -0,0 +1,189 @@
+%D \module
+%D [ file=prop-mis,
+%D version=2004.05.29, % some code moved from private modules
+%D title=\CONTEXT\ Property Macros,
+%D subtitle=Miscelaneous,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Property Macros / Miscelaneous}
+
+%D This module contains some code that has been in use in some
+%D private modules (p-*). These features depend on the fact
+%D that pdftex writes the page content as one stream.
+
+%D EXPERIMENTAL
+
+\unprotect
+
+%D Stream based overprint and knockout:
+
+\defineproperty[\v!overprint][\s!overprint] [\c!method=\v!command]
+\defineproperty[\v!knockout] [\s!overprint] [\c!method=\v!command]
+
+%D Negation.
+
+\defineproperty [\v!negative] [\s!negative] [\c!method=\v!command]
+\defineproperty [\v!positive] [\s!negative] [\c!method=\v!command]
+
+%D Special font effects.
+
+\setupproperty
+ [\s!effect]
+ [\c!rulethickness=\zeropoint,
+ \c!stretch=0]
+
+\defineproperty [\v!inner] [\s!effect] [\c!rulethickness=.25pt]
+\defineproperty [\v!outer] [\s!effect] [\c!rulethickness=.25pt]
+\defineproperty [\v!both] [\s!effect] [\c!rulethickness=.25pt]
+\defineproperty [\v!normal] [\s!effect]
+\defineproperty [\v!hidden] [\s!effect]
+
+\defineproperty [\v!stretch] [\s!effect] [\c!stretch=1]
+
+%D Overprint cum suis.
+
+\definepropertyhandler \v!overprint {\dostartoverprint}
+\definepropertyhandler \v!knockout {\dostopoverprint }
+
+\def\startoverprintproperty
+ {\ifincolor
+ \propertyhandler\currentproperty
+ \dooverprintmark\currentproperty
+ \fi}
+
+\def\stopoverprintproperty
+ {\ifincolor
+ \ifcase\currentpropertylevel\or
+ \dostopoverprint
+ \dooverprintmark\empty
+ \else
+ \propertyhandler\previousproperty
+ \dooverprintmark\previousproperty
+ \fi
+ \fi}
+
+\rawnewmark\overprintmark
+
+\def\dooverprintmark#1%
+ {\ifinpagebody \else \ifinframed \else
+ \expanded{\rawsetmark\noexpand\overprintmark{#1}}%
+ \fi \fi}
+
+\def\pushoverprintproperty
+ {\doifsomething{\rawgetbotmark\overprintmark}\dostopoverprint}
+
+\def\popoverprintproperty
+ {\doifsomething{\rawgetbotmark\overprintmark}%
+ {\propertyhandler{\rawgetbotmark\overprintmark}}}
+
+\def\popsplitoverprintproperty
+ {\getsplitmarks\overprintmark % hier wel
+ \doifsomething{\rawgetsplitbotmark\overprintmark}%
+ {\propertyhandler{\rawgetsplitbotmark\overprintmark}}}
+
+\appendtoks \pushoverprintproperty \to \everypushproperties
+\appendtoks \popoverprintproperty \to \everypopproperties
+\appendtoks \popsplitoverprintproperty \to \everypopsplitproperties
+
+%D Negative cum suis.
+
+\definepropertyhandler \v!negative {\dostartnegative}
+\definepropertyhandler \v!positive {\dostopnegative }
+
+\def\startnegativeproperty
+ {\ifincolor
+ \propertyhandler\currentproperty
+ \donegativemark\currentproperty
+ \fi}
+
+\def\stopnegativeproperty
+ {\ifincolor
+ \ifcase\currentpropertylevel\or
+ \dostopnegative
+ \donegativemark\empty
+ \else
+ \propertyhandler\previousproperty
+ \donegativemark\previousproperty
+ \fi
+ \fi}
+
+\rawnewmark\negativemark
+
+\def\donegativemark#1%
+ {\ifinpagebody \else \ifinframed \else
+ \expanded{\rawsetmark\noexpand\negativemark{#1}}%
+ \fi \fi}
+
+\def\pushnegativeproperty
+ {\doifsomething{\rawgetbotmark\negativemark}\dostopnegative}
+
+\def\popnegativeproperty
+ {\doifsomething{\rawgetbotmark\overprintmark}%
+ {\propertyhandler{\rawgetbotmark\negativemark}}}
+
+\def\popsplitnegativeproperty
+ {\getsplitmarks\negativemark % hier wel
+ \doifsomething{\rawgetsplitbotmark\negativemark}%
+ {\propertyhandler{\rawgetsplitbotmark\negativemark}}}
+
+\appendtoks \pushnegativeproperty \to \everypushproperties
+\appendtoks \popnegativeproperty \to \everypopproperties
+\appendtoks \popsplitnegativeproperty \to \everypopsplitproperties
+
+%D Effects.
+
+\definepropertyhandler \v!normal {0}
+\definepropertyhandler \v!inner {0}
+\definepropertyhandler \v!outer {1}
+\definepropertyhandler \v!both {2}
+\definepropertyhandler \v!hidden {3}
+\definepropertyhandler \v!stretch{0}
+
+\def\effectpropertydata#1%
+ {{\propertyhandler{#1}}%
+ {\propertyparameter{#1}\c!rulethickness}%
+ {\propertyparameter{#1}\c!stretch}}
+
+\def\starteffectproperty
+ {\expanded{\dostartfonteffect\effectpropertydata\currentproperty}%
+ \doeffectmark{\effectpropertydata\currentproperty}}
+
+\def\stopeffectproperty
+ {\dostopfonteffect
+ \ifcase\currentpropertylevel\or
+ \doeffectmark\empty
+ \else
+ \expanded{\dostartfonteffect\effectpropertydata\previousproperty}%
+ \doeffectmark{\effectpropertydata\previousproperty}%
+ \fi}
+
+\rawnewmark\effectmark
+
+\def\doeffectmark#1%
+ {\ifinpagebody \else \ifinframed \else
+ \expanded{\rawsetmark\noexpand\effectmark{#1}}% could be number
+ \fi \fi}
+
+\def\pusheffectproperty
+ {\doifsomething{\rawgetbotmark\effectmark}\dostopfonteffect}
+
+\def\popeffectproperty
+ {\doifsomething{\rawgetbotmark\effectmark}%
+ {\expanded{\dostartfonteffect\rawgetbotmark\effectmark}}}
+
+\def\popspliteffectproperty
+ {\getsplitmarks\effectmark
+ \doifsomething{\rawgetsplitbotmark\effectmark}%
+ {\expanded{\dostartfonteffect\rawgetsplitbotmark\effectmark}}}
+
+\appendtoks \pusheffectproperty \to \everypushproperties
+\appendtoks \popeffectproperty \to \everypopproperties
+\appendtoks \popspliteffectproperty \to \everypopsplitproperties
+
+\protect \endinput