Hi all

 I'm trying to create graded transparency over an area similar to the effect produced using lmt_shade, where one colour goes to another colour over a continuum, but with graded transparency we would go from say 0 to 1 transparency, for a single colour. See the MWE below.

I have tried this by creating a loop which draws a linear path, yshifted the thickness of the pen, with transparency calculated for each step   over the a predetermined height on the page. I have also tried a similar way for a circular path but in this case the path is repeatedly drawn scaled in a loop. The MWE below works OK but when I zoom into the graded transparency areas lines begin to appear which would suggest that their is a better way to do what I want. This is borne out if you zoom into a lmt-shade area, one colour smoothly becomes another colour. I've put examples of this in the MWE. I'm guessing the way lmt_shade areas are drawn is the way to go. Is this likely to be easy to code for what I want to do?

Best Wishes

Keith McKay

%%%MWE%%

\setuppapersize[A4,portrait]

\usecolors[crayola]

\starttext

\startMPpage %page 1

StartPage;

numeric maxTransp;% Must be between 0 and 1

numeric opHeight; % Opaque area height on page

path t;

string p[]; p[5] = "RadicalRed"; p[10] = "LemonYellow"; p[15] = "MiddleGreen"; p[20] = "CadetBlue"; p[25] = "white";

maxTransp := 1;

opHeight := 2.5; %cm

for k= 5, 10, 15, 20, 25:

    draw lmt_text [

    text = "opaque",

    color = "black",

    style = "bold",

anchor = "lft",

position = (-1mm,2mm),

    ] xsized .95TextWidth ysized 7cm shifted(22cm,(k - 2)*cm);

    t := (1cm, k*cm) -- (20cm, k*cm); %Square opaque area

    draw t withpen pensquare scaled .25pt withcolor p[k] withtransparency("normal",maxTransp);

    for i = 0 step 0.25until (opHeight*72/2.54):

        r := (i/(opHeight*72/2.54))*maxTransp; %calculate transparency

draw t yshifted (-i-.25)*pt withpen pensquare scaled .25pt withcolor p[k] withtransparency("normal",(maxTransp-r));

draw t yshifted (i+.25)*pt withpen pensquare scaled .25pt withcolor p[k] withtransparency("normal",(maxTransp-r));

endfor;

endfor;

draw lmt_shade [

    path = fullsquare xyscaled(19cm,2cm),

direction = "up",

alternative = "linear",

colors = { "red", "blue" },

    ] shifted(10.5cm,1.5cm);

StopPage;

\stopMPpage

\page

\startMPpage %page 2

StartPage;

numeric maxTransp;% Must be between 0 and 1

numeric opHeight; % Opaque area height

path t, u;

string p[]; p[5] = "RadicalRed"; p[10] = "LemonYellow"; p[15] = "MiddleGreen"; p[20] = "CadetBlue"; p[25] = "white";

maxTransp := 1;

opHeight := 2.5; %centimeters

opHeightpt := (opHeight /2.54)*72.27;

draw lmt_text [

    text = "\rotate{opaque}",

    color = "black",

    style = "bold",

anchor = "lft",

position = (-1mm,2mm),

    ] xsized .25TextHeight shifted(12cm,10cm);

for k= 5, 10, 15, 20, 25:

    t := (1cm, k*cm)--(20cm, k*cm) ; %Square opaque area

    draw t withpen pensquare scaled .25pt withcolor p[k] withtransparency("normal",maxTransp);

    for i = 0 step 0.25 until opHeightpt:

        r := (i/(opHeight*72.27/2.54))*maxTransp;

draw t yshifted (i+0.25)*pt withpen pensquare scaled 0.25pt withcolor p[k] withtransparency("normal",(maxTransp-r));

draw t yshifted (-i-0.25)*pt withpen pensquare scaled .25pt withcolor p[k] withtransparency("normal",(maxTransp-r));

endfor;

endfor;

draw lmt_shade [

    path = fullsquare xyscaled(19cm,2cm),

direction = "up",

alternative = "linear",

colors = { "red", "blue" },

    ] shifted(10.5cm,1.5cm) ;

StopPage;

\stopMPpage

\page

\startMPpage %page 3

StartPage;

draw lmt_text [

    text = "opaque",

    color = "black",

    style = "bold",

anchor = "lft",

position = (-1mm,2mm),

    ] xsized .95TextWidth ysized 7cm shifted(22cm,13cm);

draw lmt_text [

    text = "opaque",

    color = "black",

    style = "bold",

anchor = "lft",

position = (-1mm,2mm),

    ] xsized .95TextWidth ysized 7cm shifted(22cm,3cm);

path t, u;

t := (11cm, 15cm) -- (20cm, 15cm); %Square opaque area

u := fullcircle scaled 5cm shifted (5cm,16cm); %Circular opaque area

for j = (5*72.27/2.54) step -0.25 until 1:

    r := (j/(5*72.27/2.54)) *0.5;

    s := -r + 0.5;

    draw fullcircle scaled (j*pt) shifted (5cm,16cm) withpen pencircle scaled 0.25pt withcolor ("RadicalRed") withtransparency ("normal",s);

endfor;

fill fullcircle scaled .25pt shifted (5cm,16cm) withpen pencircle scaled 0.25pt withcolor ("RadicalRed") withtransparency ("normal",s);

for i = 0.0001 step 0.25 until (10*72.27/2.54):

    r := (i/(10*72.27/2.54));

    draw t yshifted -i*pt withpen pensquare scaled 0.25pt withcolor ("SpringGreen") withtransparency ("lighten",(1-r));

    draw t yshifted i*pt withpen pensquare scaled 0.25pt withcolor ("RadicalRed") withtransparency ("lighten",(1-r));

endfor;

draw lmt_shade [

    path = fullcircle scaled 5cm,

alternative = "circular",

    colors = { "red", "blue" },

    ] shifted(5cm,5cm) withtransparency("normal",0.85);

StopPage;

\stopMPpage

\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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to