/usr/share/texmf-texlive/metapost/hatching/hatching.mp is in texlive-metapost 2009-15.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | %%% addto clip hatchfill hatchfill_
%%% numeric color
%%% length withcolor
% This is HATCHING.MP file defining a set of METAPOST macros for
% hatching interior of closed paths.
%
% Made in BOP, Gda\'nsk, Poland
% E-mail contact: B.Jackowski@gust.org.pl
% Public domain software (no copyrights, copylefts, copyups, copydowns, etc.)
% Current version: 11.07.2000 -- ver 0.1 (pre-release)
% Current version: 21.09.2000 -- ver 0.11 (ending semicolon
% added in |extra_beginfig|; |hatchfill_| introduced in order
% to make possible something like |def fill = hatchfill enddef|
def hatchfill_ expr c = addto currentpicture contour c _op_ enddef;
vardef hatchfill text p =
save c_,p_; path p_; color c_[\\]; c_.num:=0;
save withcolor_; let withcolor_:=withcolor;
def withcolor = ; c_[incr c_.num]:= enddef;
p_:=p; let withcolor:=withcolor_;
for i_:=c_.num downto 1: % find the least ``true'' fill
c_.num':=i_; exitif bluepart(c_[i_])>0;
endfor
if c_.num>0:
for i_:=c_.num' upto c_.num:
if bluepart(c_[i_])<0: draw hatched(p_)c_[i_];
else: hatchfill_ p_ withcolor c_[i_]; fi
endfor
else: hatchfill_ p_; fi
enddef;
vardef hatched(expr o) primary c =
save a_, b_, d_, l_, i_, r_, za_, zb_, zc_, zd_;
path b_; picture r_; pair za_, zb_, zc_, zd_;
r_:=image(
a_:=redpart(c) mod 180; l_:=greenpart(c); d_:=-bluepart(c);
b_:=o rotated -a_;
b_:=if a_>=90: (lrcorner b_--llcorner b_--ulcorner b_--urcorner b_--cycle)
else: (llcorner b_--lrcorner b_--urcorner b_--ulcorner b_--cycle) fi
rotated a_;
za_:=point 0 of b_; zb_:=point 1 of b_;
zc_:=point 2 of b_; zd_:=point 3 of b_;
if hatch_match>0:
n_:=round(length(zd_-za_)/l_); if n_<2: n_:=2; fi; l_:=length(zd_-za_)/n_;
else: n_:=length(zd_-za_)/l_; fi
% show (greenpart(c), l_);
for i_:=if hatch_match>0: 1 else: 0 fi upto ceiling n_-1:
draw_hatched_band((i_/n_)[zd_,za_],(i_/n_)[zc_,zb_],a_,l_,d_);
endfor
);
clip r_ to o; r_
enddef;
def draw_hatched_band(expr za,zb,a,l,d) = % normally, |a| and |l| are ignored
draw za--zb withpen pencircle scaled d _hop_;
enddef;
def hatchoptions(text t) = def _hop_ = t enddef enddef;
newinternal hatch_match; hatch_match:=1;
hatchoptions(); extra_beginfig:=extra_beginfig & ";hatchoptions();";
endinput
%%\end
|