% --- start of displayed preamble in the book ---
% alphafill as defined above
% --- end of displayed preamble in the book ---
% graphic converted to gray in book using 'color2gray'
picture alphapict_; alphapict_=nullpicture;
vardef alphafill(expr c,col,transparency)=
alphapict_:=nullpicture;
alphafill_(currentpicture,c,col,transparency);
addto currentpicture also alphapict_;
enddef;
def alphafill_(expr p,c,col,transparency)=
begingroup
save p_,xmax_,xmin_,ymax_,ymin_; picture p_;
p_=nullpicture;
(xmin_,ymin_)=llcorner c;(xmax_,ymax_)=urcorner c;
addto p_ contour c withcolor transparency[background,col];
for p__ within p:
numeric xmin__,xmax__,ymin__,ymax__;
(xmin__,ymin__)=llcorner p__;
(xmax__,ymax__)=urcorner p__;
if (xmax__<=xmin_) or (xmin__>=xmax_):
else:
if (ymax__<=ymin_) or (ymin__>=ymax_):
else:
if (not clipped p__) and (not bounded p__):
addto p_ also p__ withcolor
transparency[(redpart p__,greenpart p__,bluepart p__),col];
else:
begingroup save alphapict_;
picture alphapict_; alphapict_ = nullpicture;
alphafill_(p__,pathpart p__,col,transparency);
addto p_ also alphapict_;
endgroup;
fi
fi
fi
endfor
clip p_ to c;
addto alphapict_ also p_;
endgroup;
enddef;