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 19
vardef
rcomponent
expr
p
=
if
rgbcolor
p
:
redpart
p
elseif
cmykcolor
p
:
1
-
cyanpart
p
else
:
p
fi
enddef
;
20
vardef
gcomponent
expr
p
=
if
rgbcolor
p
:
greenpart
p
elseif
cmykcolor
p
:
1
-
magentapart
p
else
:
p
fi
enddef
;
21
vardef
bcomponent
expr
p
=
if
rgbcolor
p
:
bluepart
p
elseif
cmykcolor
p
:
1
-
yellowpart
p
else
:
p
fi
enddef
;
22
vardef
ccomponent
expr
p
=
if
cmykcolor
p
:
cyanpart
p
elseif
rgbcolor
p
:
1
-
redpart
p
else
:
p
fi
enddef
;
23
vardef
mcomponent
expr
p
=
if
cmykcolor
p
:
magentapart
p
elseif
rgbcolor
p
:
1
-
greenpart
p
else
:
p
fi
enddef
;
24
vardef
ycomponent
expr
p
=
if
cmykcolor
p
:
yellowpart
p
elseif
rgbcolor
p
:
1
-
bluepart
p
else
:
p
fi
enddef
;
25
vardef
bcomponent
expr
p
=
if
cmykcolor
p
:
blackpart
p
elseif
rgbcolor
p
:
0
else
:
p
fi
enddef
;
26 27
vardef
somecolor
=
(
1
,
1
,
0
,
0
)
enddef
;
28 29
fill
OverlayBox
withcolor
(
rcomponent
somecolor
,
gcomponent
somecolor
,
bcomponent
somecolor
)
;
30
fill
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