Peter,

Thanks for trying to help. Because I solved the problem in another way you 
might be interested or even benefit from it.
The underlying problem was drawing a border around a picture of given 
dimensions. The border being either colored or left uncolored. The border color 
should come from a withcolor modifier, with the uncolored case done simply by 
leaving this out, for example:
        borderinsideframe(u,v,2g);
and     borderinsideframe(u,v,2g) withcolor red;

It turns out this can be done with an unfill. I learned that a bare unfill 
erases, but add a withcolor modifier and the effect is a coloring. Thus the 
trick is:

def bordercolorframe (expr w, h, off, clr) text modifier =
        unfill (-off,-off)--(w+off,-off)--(w+off,h+off)--(-off,h+off)--cycle 
modifier;
        fill (0,0)--(w,0)--(w,h)--(0,h)--cycle withcolor clr
enddef;

The omission of a semicolon after the last statement of the def allows one to 
add in a withcolor somecolor without triggering an error.

Hope this will be of use to someone.
Hans van der Meer

On 21 okt. 2011, at 17:13, Peter Rolf wrote:

> Am 21.10.2011 15:05, schrieb Hans van der Meer:
>> I cannot find the answer to the following question in Knuth's Metafont book.
>> The following definition with a trailing text argument:
>> 
>> def mydef (expr a, b, c) text modifier =
>>      if <modifier = empty>: 
> 
> Have you already tried
> 
>        if modifier = "" :
> 
>>      else:
>>      fi
>> enddef;
>> 
>> How can I do the switch on an empty or nonempty modifier argument? It is not 
>> a string because calling its length fails with an error.
>> I must do the switch, because "fill modifier" with an empty "modifier" gives 
>> horrible results.
>> 
>> Usage would be calls like:
>>  mydef(1,2,3) withcolor green; % with modifier text
>>  mydef(1,2,3); % without modifier text
>> 
>> Thanks in advance.
>> Hans van der Meer


___________________________________________________________________________________
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  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to