if not modules then modules = { } end modules ['mlib-lmp'] = { version = 1.001, comment = "companion to mlib-ctx.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files", } -- path relates stuff ... todo: use a stack (or numeric index to list) local type = type local aux = mp.aux local mpnumeric = aux.numeric local mppair = aux.pair local p = nil local n = 0 local function mf_path_reset() p = nil n = 0 end local scan = mp.scan local scannumber = scan.number local scanpath = scan.path local function mf_path_length() p = scanpath() n = p and #p or 1 mpnumeric(n) end local function mf_path_point() local i = scannumber() if i > 0 and i <= n then local pi = p[i] mppair(pi[1],pi[2]) end end local function mf_path_left() local i = scannumber() if i > 0 and i <= n then local pi = p[i] mppair(pi[5],pi[6]) end end local function mf_path_right() local i = scannumber() if i > 0 and i <= n then local pn if i == 1 then pn = p[2] or p[1] else pn = p[i+1] or p[1] end mppair(pn[3],pn[4]) end end local registerscript = metapost.registerscript registerscript("pathreset", mf_path_reset) registerscript("pathlengthof", mf_path_length) registerscript("pathpointof", mf_path_point) registerscript("pathleftof", mf_path_left) registerscript("pathrightof", mf_path_right)