ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Graded Transparency in MetaFun
@ 2022-06-30 15:25 Keith McKay via ntg-context
  0 siblings, 0 replies; only message in thread
From: Keith McKay via ntg-context @ 2022-06-30 15:25 UTC (permalink / raw)
  To: mailing list for ConTeXt users; +Cc: Keith McKay


[-- Attachment #1.1: Type: text/plain, Size: 5219 bytes --]

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

[-- Attachment #1.2: Type: text/html, Size: 20655 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-06-30 15:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-30 15:25 Graded Transparency in MetaFun Keith McKay via ntg-context

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).