mlib-pos.lmt /size: 3900 b    last modification: 2021-10-28 13:51
1if not modules then modules = { } end modules ['mlib-pos'] = {
2    version   = 1.001,
3    comment   = "companion to mlib-ctx.mkiv",
4    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5    copyright = "PRAGMA ADE / ConTeXt Development Team",
6    license   = "see context related readme files",
7}
8
9local jobpositions   = job.positions
10local mpnumeric      = mp.inject.numeric
11local mpstring       = mp.inject.string
12local scanstring     = mp.scan.string
13local factor         = number.dimenfactors.bp
14local registerdirect = metapost.registerdirect
15
16local page           = jobpositions.page
17local paragraph      = jobpositions.paragraph
18local column         = jobpositions.column
19local region         = jobpositions.region
20local x              = jobpositions.x
21local y              = jobpositions.y
22local xy             = jobpositions.xy
23local width          = jobpositions.width
24local height         = jobpositions.height
25local depth          = jobpositions.depth
26local leftskip       = jobpositions.leftskip
27local rightskip      = jobpositions.rightskip
28local hsize          = jobpositions.hsize
29local parindent      = jobpositions.parindent
30local hangindent     = jobpositions.hangindent
31local hangafter      = jobpositions.hangafter
32local lowerleft      = jobpositions.lowerleft
33local upperleft      = jobpositions.upperleft
34local lowerright     = jobpositions.lowerright
35local upperright     = jobpositions.upperright
36
37registerdirect("getpospage",       function() return page      (scanstring()) end)
38registerdirect("getposparagraph",  function() return paragraph (scanstring()) end)
39registerdirect("getposcolumn",     function() return column    (scanstring()) end)
40registerdirect("getposregion",     function() return region    (scanstring()) end)
41registerdirect("getposx",          function() return x         (scanstring()) * factor end)
42registerdirect("getposy",          function() return y         (scanstring()) * factor end)
43registerdirect("getposwidth",      function() return width     (scanstring()) * factor end)
44registerdirect("getposheight",     function() return height    (scanstring()) * factor end)
45registerdirect("getposdepth",      function() return depth     (scanstring()) * factor end)
46registerdirect("getposleftskip",   function() return leftskip  (scanstring()) * factor end)
47registerdirect("getposrightskip",  function() return rightskip (scanstring()) * factor end)
48registerdirect("getposhsize",      function() return hsize     (scanstring()) * factor end)
49registerdirect("getposparindent",  function() return parindent (scanstring()) * factor end)
50registerdirect("getposhangindent", function() return hangindent(scanstring()) * factor end)
51registerdirect("getposhangafter",  function() return hangafter (scanstring()) * factor end)
52
53local t = { 0, 0 } -- let's share
54
55registerdirect("getposxy",         function() local x, y = xy        (scanstring()) t[1] = x * factor t[2] = y * factor return t end)
56registerdirect("getposupperleft",  function() local x, y = upperleft (scanstring()) t[1] = x * factor t[2] = y * factor return t end)
57registerdirect("getposlowerleft",  function() local x, y = lowerleft (scanstring()) t[1] = x * factor t[2] = y * factor return t end)
58registerdirect("getposupperright", function() local x, y = upperright(scanstring()) t[1] = x * factor t[2] = y * factor return t end)
59registerdirect("getposlowerright", function() local x, y = lowerright(scanstring()) t[1] = x * factor t[2] = y * factor return t end)
60registerdirect("getposllx",        function() local x, y = lowerleft (scanstring()) return x * factor end)
61registerdirect("getposlly",        function() local x, y = lowerleft (scanstring()) return y * factor end)
62registerdirect("getposurx",        function() local x, y = upperright(scanstring()) return x * factor end)
63registerdirect("getposury",        function() local x, y = upperright(scanstring()) return y * factor end)
64