diff options
Diffstat (limited to 'tex/context/base/mkii/prop-mis.mkii')
-rw-r--r-- | tex/context/base/mkii/prop-mis.mkii | 189 |
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 |