/usr/share/texmf-texlive/metapost/epsincl/epsincl.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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | %%% addto closefrom readfrom
% made in BOP s.c., bop@bop.com.pl; public domain software
% history: 20.08.1999: ver. 0.1, pre-release
% 05.01.2000: ver. 0.2, first release
def verify_operator primary x = x if not x: expandafter gobble fi enddef;
if not verify_operator known closefrom "????????": % tricky, isn't it
% |closefrom| primitive is available in MP since ver. 0.64
def closefrom expr eps_name =
forever: exitif (readfrom eps_name)=EOF; endfor
enddef;
fi
% The structure |eps_data| is presumed to be local for a given figure.
% If the same outer picture is to be included in several figures, its
% header must be examined each time anew. This is necassary if we want
% to include EPS files generated by METAPOST; otherwise we would have
% to store the information about the fonts used in EPS files being
% included. Note that the possibility of multiple reading necessitates
% using the |closefrom| operator.
def ini_eps =
% The common construction |save eps_data| must not be used,
% because of implicit reference to |ini_eps| in |use_eps|.
numeric eps_data.used[\\];
string eps_data.name[\\];
pair eps_data.ll[\\], eps_data.ur[\\];
color eps_data.col[\\];
eps_data.num:=0; eps_data.col[eps_data.num]=(0, 1, .5);
enddef;
vardef fix_eps(expr eps_name) =
save i_, j_, k_, l_, n_;
i_:=0;
forever:
i_:=i_+1; exitif i_>eps_data.num; exitif eps_data.name[i_]=eps_name;
endfor
if i_<=eps_data.num: errmessage "EPS " & eps_name & " already fixed";
else:
forever:
string l_; % this improves string memory handling (why?)
l_:=readfrom eps_name; exitif l_=EOF;
if substring (0,14) of l_="%%BoundingBox:":
j_:=14;
for k_=1,2,3,4:
i_:=j_;
forever: % scan spaces
exitif (substring (i_,i_+1) of l_) <> " "; i_:=i_+1;
endfor
j_:=i_;
forever: % scan digits
exitif ((substring (j_,j_+1) of l_) = " ")
or ((substring (j_,j_+1) of l_) = "");
j_:=j_+1;
endfor
n_[k_]:=scantokens substring (i_,j_) of l_;
endfor;
elseif substring (0,7) of l_="%*Font:": special l_;
elseif substring (0,1) of l_<>"%":
expandafter exitif expandafter true expandafter; % avoid ``dangling'' fi
fi
endfor
eps_data.num:=eps_data.num+1;
eps_data.name[eps_data.num]:=eps_name;
if l_=EOF:
eps_data.used[eps_data.num]:=-1;
message "EPS file " & eps_name & " malformed or not found.";
else:
eps_data.used[eps_data.num]:=0;
eps_data.ll[eps_data.num]:=(n_1, n_2);
eps_data.ur[eps_data.num]:=(n_3, n_4);
eps_data.col[eps_data.num]:=eps_data.col0+1/1000eps_data.num*(1, -1,0);
fi
closefrom eps_name;
fi
enddef;
vardef use_eps(expr eps_name) =
if unknown eps_data.num: ini_eps; fi
save currentpicture; picture currentpicture; currentpicture:=nullpicture;
save i_; i_:=0;
forever:
i_:=i_+1;
exitif i_>eps_data.num;
exitif eps_data.name[i_]=eps_name;
endfor
if i_>eps_data.num: fix_eps(eps_name); fi
% invariant: |(eps_data.name[i_]=eps_name) && known eps_data.used[i_]|
if eps_data.used[i_]>=0: % fixing was successful
fill unitsquare
xscaled xpart(eps_data.ur[i_]-eps_data.ll[i_])
yscaled ypart(eps_data.ur[i_]-eps_data.ll[i_])
withcolor eps_data.col[i_];
if eps_data.used[i_]=0:
special "%EPS "
& decimal(redpart(eps_data.col[i_])) & " "
& decimal(greenpart(eps_data.col[i_])) & " "
& decimal(bluepart(eps_data.col[i_])) & " "
& eps_name & " "
& decimal(xpart(eps_data.ll[i_])) & " "
& decimal(ypart(eps_data.ll[i_])) & " "
& decimal(xpart(eps_data.ur[i_])) & " "
& decimal(ypart(eps_data.ur[i_]));
eps_data.used[i_]:=1;
fi
currentpicture
else: % fixing failed (either missing file or bounding box not found)
nullpicture
fi
enddef;
extra_beginfig:=extra_beginfig & ";ini_eps;";
endinput;
%%\end
|