Hi,

I desperately need runtime defined colors (state dependent) for my
macros. The macros are used with different graphic styles, which is the
reason why I want to avoid any style dependent part inside them.

To give you an example. I need something like this

\color[{\StateDependentColor[stateA=green,stateC=blue,whatever=yellow,...]}]

If flag 'stateA' is true at runtime, then color 'green' is used (and so
on; order is significant).

I have written such a macro, but sadly it crashes when used inside
\color or \definecolor. Tried to debug it, but this is my first
experience with the trace commands (probably not the best example to
start with). Sigh, still so much to learn.. :)

Any hints are welcome.

Regards, Peter

\setuppagenumber[state=stop]
\setupcolors[state=start]

\definecolor[colorA] [red]
\definecolor[colorB] [green]
\definecolor[colorC] [blue]

\newconditional\CondA
\newconditional\CondB
\newconditional\CondC


\unprotect

\def\GetStateDependentColor[#1]%
  {\bgroup
   [EMAIL PROTECTED],B=,C=,#1]%
   \def\MYdocommand##1%
     {\doifdefined{Cond##1} % conditional is known..
        {\expandafter\ifconditional\csname Cond##1\endcsname % ..AND true..
           \edef\CurrentColor{\csname [EMAIL PROTECTED]
           \def\CurrentColor{}\fi
         \doifelsenothing\CurrentColor % ..AND a color is assigned
           \donefalse\donetrue}%
      \ifdone\CurrentColor\expandafter\quitcommalist\fi}%
   \processcommacommand[A,B,C]\MYdocommand % raw version does not work! why?
   \egroup}

\protect


\starttext

\setfalse\CondA
\settrue\CondB
\settrue\CondC

\tracingonline=1
%\tracingall=1
%\tracingmacros=1
%\tracingcommands=2
color is -\GetStateDependentColor[A=colorA,C=colorC]- % works so far
%\tracingmacros=0
%\tracingall=0

% crashes

%\tracingall=1
%\tracingmacros=1
%\tracingcommands=2
%\definecolor[testcolor][{\GetStateDependentColor[A=colorA,C=colorC]}]
%\color[testcolor]
%\color[{\GetStateDependentColor[A=colorA,C=colorC]}]
%\expandafter\color\expandafter[\expandafter{\GetStateDependentColor[A=colorA,C=colorC]}]
%\tracingall=0
TEST

\stoptext
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to