mp-idea.mpiv /size: 3032 b    last modification: 2020-07-01 14:35
1% redpart (1,1,0,0) crashes
2
3% let normalredpart     = redpart ;
4% let normalgreenpart   = greenpart ;
5% let normalbluepart    = bluepart ;
6% let normalcyanpart    = cyanpart ;
7% let normalmagentapart = magentapart ;
8% let normalyellowpart  = yellowpart ;
9% let normalblackpart   = blackpart ;
10
11% vardef redpart     expr p = if cmykcolor p : 1 - normalcyanpart    p elseif rgbcolor p :     normalredpart   p else : p fi enddef ;
12% vardef greenpart   expr p = if cmykcolor p : 1 - normalmagentapart p elseif rgbcolor p :     normalgreenpart p else : p fi enddef ;
13% vardef bluepart    expr p = if cmykcolor p : 1 - normalyellowpart  p elseif rgbcolor p :     normalbluepart  p else : p fi enddef ;
14% vardef cyanpart    expr p = if cmykcolor p :     normalcyanpart    p elseif rgbcolor p : 1 - normalredpart   p else : p fi enddef ;
15% vardef magentapart expr p = if cmykcolor p :     normalmagentapart p elseif rgbcolor p : 1 - normalgreenpart p else : p fi enddef ;
16% vardef yellowpart  expr p = if cmykcolor p :     normalyellowpart  p elseif rgbcolor p : 1 - normalbluepart  p else : p fi enddef ;
17% vardef blackpart   expr p = if cmykcolor p :     normalblackpart   p elseif rgbcolor p :                     0 else : p fi enddef ;
18
19vardef rcomponent expr p = if rgbcolor  p : redpart     p elseif cmykcolor p : 1 - cyanpart    p else : p fi enddef ;
20vardef gcomponent expr p = if rgbcolor  p : greenpart   p elseif cmykcolor p : 1 - magentapart p else : p fi enddef ;
21vardef bcomponent expr p = if rgbcolor  p : bluepart    p elseif cmykcolor p : 1 - yellowpart  p else : p fi enddef ;
22vardef ccomponent expr p = if cmykcolor p : cyanpart    p elseif rgbcolor  p : 1 - redpart     p else : p fi enddef ;
23vardef mcomponent expr p = if cmykcolor p : magentapart p elseif rgbcolor  p : 1 - greenpart   p else : p fi enddef ;
24vardef ycomponent expr p = if cmykcolor p : yellowpart  p elseif rgbcolor  p : 1 - bluepart    p else : p fi enddef ;
25vardef bcomponent expr p = if cmykcolor p : blackpart   p elseif rgbcolor  p :                 0 else : p fi enddef ;
26
27vardef somecolor = (1,1,0,0) enddef ;
28
29fill OverlayBox withcolor (rcomponent somecolor,gcomponent somecolor,bcomponent somecolor) ;
30fill OverlayBox withcolor (ccomponent somecolor,mcomponent somecolor,ycomponent somecolor,bcomponent somecolor) ;
31
32% def newcolor     text v = forsuffixes i=v : save i ; color     i ; endfor ; enddef ;
33% def newnumeric   text v = forsuffixes i=v : save i ; numeric   i ; endfor ; enddef ;
34% def newboolean   text v = forsuffixes i=v : save i ; boolean   i ; endfor ; enddef ;
35% def newtransform text v = forsuffixes i=v : save i ; transform i ; endfor ; enddef ;
36% def newpath      text v = forsuffixes i=v : save i ; path      i ; endfor ; enddef ;
37% def newpicture   text v = forsuffixes i=v : save i ; picture   i ; endfor ; enddef ;
38% def newstring    text v = forsuffixes i=v : save i ; string    i ; endfor ; enddef ;
39
40% width := 10 ;
41% beginfig(1) ;
42%   newpath width, height ; width := origin -- cycle ;
43% endfig ;
44% width := 10 ;
45