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 }
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 |