summaryrefslogtreecommitdiff
path: root/tex/context/base/colo-ini.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/colo-ini.tex')
-rw-r--r--tex/context/base/colo-ini.tex71
1 files changed, 64 insertions, 7 deletions
diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex
index c23efdf38..b06eedda8 100644
--- a/tex/context/base/colo-ini.tex
+++ b/tex/context/base/colo-ini.tex
@@ -714,17 +714,29 @@
\fi
\exectransparency}
+% \def\doexeccolorPP#1:#2:%
+% {\edef\@@cl@@n{#1}%
+% \edef\@@cl@@p{#2}%
+% \registerusedspotcolor\@@cl@@n
+% \ifx\@@cl@@n\currentspotcolor
+% \normalizeSPOT
+% \dostartgraycolormode\@@cl@@p % was spotcolormode
+% \else
+% \dostartgraycolormode\@@cl@@o
+% \fi
+% \exectransparency}
+
\def\doexeccolorPP#1:#2:%
{\edef\@@cl@@n{#1}%
\edef\@@cl@@p{#2}%
\registerusedspotcolor\@@cl@@n
\ifx\@@cl@@n\currentspotcolor
- \normalizeSPOT
+ \normalizeSPOT
\dostartgraycolormode\@@cl@@p % was spotcolormode
\else
- \dostartgraycolormode\@@cl@@o
+ \dovidecolor\@@cl@@p\@@cl@@o
\fi
- \exectransparency}
+ \exectransparency}
\def\doexeccolorrgb
{\ifcase\currentcolorchannel
@@ -756,13 +768,58 @@
%D When filtering colors, we need to either erase
%D the background, or ignore the foreground.
+% \newif\ifhidesplitcolor \hidesplitcolortrue
+%
+% \def\noexeccolor#1\od
+% {\dostartgraycolormode\@@cl@@o}
+%
+% \let\noexeccolorS\noexeccolor
+% \let\noexeccolorP\noexeccolor
+
+%D Well, here comes some real trickery. When we have the 100\%
+%D spot color or black color, we don't want to erase the
+%D background. So, instead we hide the content by giving it
+%D zero transparency.
+
+% todo : #1#2#3 met #2 > of < and #3 een threshold
+
\newif\ifhidesplitcolor \hidesplitcolortrue
-\def\noexeccolor#1\od
- {\dostartgraycolormode\@@cl@@o}
+\def\dohidecolor#1#2%
+ {\ifhidesplitcolor
+ \ifx#1#2%
+ \dostartgraycolormode\@@cl@@o
+ \else
+ \fullytransparentcolor
+ \fi
+ \else
+ \dostartgraycolormode\@@cl@@o
+ \fi}
+
+\def\dovidecolor#1#2%
+ {\ifhidesplitcolor
+ \ifx#1#2%
+ \fullytransparentcolor
+ \else
+ \dostartgraycolormode\@@cl@@o
+ \fi
+ \else
+ \dostartgraycolormode\@@cl@@o
+ \fi}
+
+\def\fullytransparentcolor
+ {\dostartgraycolormode\@@cl@@o % better than z
+ %\global\@EA\chardef\csname\@@currenttransparent\endcsname\plusone
+ %\global\intransparenttrue
+ \dostarttransparency10}
+
+\def\noexeccolorS#1:#2\od
+ {\edef\@@cl@@s{#1}%
+ \dohidecolor\@@cl@@s\@@cl@@o}
-\let\noexeccolorS\noexeccolor
-\let\noexeccolorP\noexeccolor
+\def\noexeccolorP#1:#2:#3\od
+ {\edef\@@cl@@p{#2}%
+ \dohidecolor\@@cl@@p\@@cl@@z}
%D For the sake of postprocessing (i.e.\ color separation)
%D we can normalize colors, which comes down to giving equal