[NTG-context] TikZ and wrong drawing order

Hans Hagen pragma at wxs.nl
Mon Jun 15 09:43:38 CEST 2015


On 6/14/2015 11:26 PM, Mojca Miklavec wrote:
> On Fri, Jun 12, 2015 at 12:45 AM, Hans Hagen wrote:
>>
>> Most shades look ugly and useless to me anyway but you have more control
>> than you think (always had but nicer interfaced in mpiv):
>>
>> \startMPpage
>>      fill fullcircle scaled 10cm
>>          withshademethod "circular"
>>          withshadevector (5cm,1cm)
>>          withshadecenter (.1,.5)
>>          withshadedomain (.2,.6)
>>          withshadefactor 1.2
>>          withshadecolors (red,green)
>>      ;
>> \stopMPage
>
> Great, I love the new syntax (compared to the MKII "ugliness" of shadings).

well, even mkii could do some magic if one went a bit more low level

shading is quite old actually (dates from before tikz showed up -)

i have in my mailbox a mail from 1999 from mathew that demos a function 
shading (some perl code) which is the way to go with more advanced shades

> But how does one declare more than one colour? In particular, how
> would you do the following in MP?
>
> \usemodule
>      [tikz]
>
> \pgfdeclareverticalshading{rainbow}{100bp}{
>      color(0bp)=(red);
>      color(25bp)=(red);
>      color(35bp)=(yellow);
>      color(45bp)=(green);
>      color(55bp)=(cyan);
>      color(65bp)=(blue);
>      color(75bp)=(violet);
>      color(100bp)=(violet)}
>
> \starttext
> \starttikzpicture[shading=rainbow]
> \shade[shading angle=90] (0,0) rectangle +(10,1);
> \stoptikzpicture
> \stoptext

you're one of those people infected by apple software where shades are 
(of maybe were) the fashion (next thing you will ask to simulate 
perkament behind your pages or leather looking cover pages) ... aka 
patterns in ps

>> Of course you need to play with the values as there is no 'best'
>> combination.
>
> This is how TikZ defines the ball:
>
> \pgfdeclareradialshading[tikz at ball]{ball}{\pgfqpoint{-10bp}{10bp}}{%
>   color(0bp)=(tikz at ball!15!white);
>   color(9bp)=(tikz at ball!75!white);
>   color(18bp)=(tikz at ball!70!black);
>   color(25bp)=(tikz at ball!50!black);
>   color(50bp)=(black)}

that's mostly a shade made out of steps (in the pdf one shade operation 
but not better than 8 shades next to each other) ... personally i 
dislike such granular shaded (either do it good or don't do it at all)

(btw in context code will look a bit more complex because we also need 
to deal with spot colors, multi-tones, cmyk, etc)

> Your example uses just two colours, while TikZ uses five and I don't
> know how to translate this "ball shading" to MP (I know or at least
> knew how to do it in plain PostScript and could dig it up; I think it
> uses function shading with predefined colours at predefined distances,
> but it's all a single shading (a single function), not a composition
> of multiple sections).

something similar to

<</Shading << /Sh <<
   /ShadingType 2
   /ColorSpace
   /DeviceRGB
   /Domain [0.0 100.00128]
   /Coords [0 0.0 0 100.00128]
   /Function <<
     /FunctionType 3
     /Domain [0.0 100.00128]
     /Functions [
       << /FunctionType 2 /Domain [0.0 100.00128] /C0 [1 0 0] /C1 [1 0 
0] /N 1 >>
       << /FunctionType 2 /Domain [0.0 100.00128] /C0 [1 0 0] /C1 [1 1 
0] /N 1 >>
       << /FunctionType 2 /Domain [0.0 100.00128] /C0 [1 1 0] /C1 [0 1 
0] /N 1 >>
       << /FunctionType 2 /Domain [0.0 100.00128] /C0 [0 1 0] /C1 [0 1 
1] /N 1 >>
       << /FunctionType 2 /Domain [0.0 100.00128] /C0 [0 1 1] /C1 [0 0 
1] /N 1 >>
       << /FunctionType 2 /Domain [0.0 100.00128] /C0 [0 0 1] /C1 [0 0 
0] /N 1 >>
       << /FunctionType 2 /Domain [0.0 100.00128] /C0 [0 0 0] /C1 [0 0 
0] /N 1 >>
     ]
   /Bounds [ 25.00032 35.00043 45.00056 55.00069 65.00082 75.00096]
   /Encode [0 1  0 1 0 1 0 1 0 1 0 1 0 1] >>
   /Extend [false false]
 >> >>/ProcSet[/PDF] >>

not too hard to program (if i can motivate myself)
	
Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the ntg-context mailing list