diff options
author | Hans Hagen <pragma@wxs.nl> | 2018-04-13 15:51:39 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2018-04-13 15:51:39 +0200 |
commit | 25fcad7435f56cdce2658336909f4da6a65589c0 (patch) | |
tree | c23d5d04a7e86c7ddc2ebeca06d3de63ebdc806e /tex/context/base/mkiv/mlib-lua.lua | |
parent | 1e5d7f41ddede5e6400a2a7762032823d3545df4 (diff) | |
download | context-25fcad7435f56cdce2658336909f4da6a65589c0.tar.gz |
2018-04-13 15:02:00
Diffstat (limited to 'tex/context/base/mkiv/mlib-lua.lua')
-rw-r--r-- | tex/context/base/mkiv/mlib-lua.lua | 61 |
1 files changed, 53 insertions, 8 deletions
diff --git a/tex/context/base/mkiv/mlib-lua.lua b/tex/context/base/mkiv/mlib-lua.lua index 19e731b85..d934e6472 100644 --- a/tex/context/base/mkiv/mlib-lua.lua +++ b/tex/context/base/mkiv/mlib-lua.lua @@ -62,11 +62,16 @@ end local f_code = formatters["%s return mp._f_()"] -local f_numeric = formatters["%.16f"] -local f_integer = formatters["%i"] -local f_pair = formatters["(%.16f,%.16f)"] -local f_triplet = formatters["(%.16f,%.16f,%.16f)"] -local f_quadruple = formatters["(%.16f,%.16f,%.16f,%.16f)"] +local f_numeric = formatters["%.16f"] +local f_integer = formatters["%i"] +local f_pair = formatters["(%.16f,%.16f)"] +local f_triplet = formatters["(%.16f,%.16f,%.16f)"] +local f_quadruple = formatters["(%.16f,%.16f,%.16f,%.16f)"] + +local f_points = formatters["%p"] +local f_pair_pt = formatters["(%p,%p)"] +local f_triplet_pt = formatters["(%p,%p,%p)"] +local f_quadruple_pt = formatters["(%p,%p,%p,%p)"] local function mpprint(...) -- we can optimize for n=1 for i=1,select("#",...) do @@ -156,6 +161,11 @@ function mp.integer(i) buffer[n] = i or "0" end +function mp.points(i) + n = n + 1 + buffer[n] = i and f_points(i) or "0pt" +end + function mp.pair(x,y) n = n + 1 if type(x) == "table" then @@ -165,6 +175,15 @@ function mp.pair(x,y) end end +function mp.pairpoints(x,y) + n = n + 1 + if type(x) == "table" then + buffer[n] = f_pair_pt(x[1],x[2]) + else + buffer[n] = f_pair_pt(x,y) + end +end + function mp.triplet(x,y,z) n = n + 1 if type(x) == "table" then @@ -174,6 +193,15 @@ function mp.triplet(x,y,z) end end +function mp.tripletpoints(x,y,z) + n = n + 1 + if type(x) == "table" then + buffer[n] = f_triplet_pt(x[1],x[2],x[3]) + else + buffer[n] = f_triplet_pt(x,y,z) + end +end + function mp.quadruple(w,x,y,z) n = n + 1 if type(w) == "table" then @@ -183,7 +211,16 @@ function mp.quadruple(w,x,y,z) end end -function mp.path(t,connector,cycle) +function mp.quadruplepoints(w,x,y,z) + n = n + 1 + if type(w) == "table" then + buffer[n] = f_quadruple_pt(w[1],w[2],w[3],w[4]) + else + buffer[n] = f_quadruple_pt(w,x,y,z) + end +end + +local function mppath(f,t,connector,cycle) if type(t) == "table" then local tn = #t if tn > 0 then @@ -194,11 +231,11 @@ function mp.path(t,connector,cycle) connector = "--" end local ti = t[1] - n = n + 1 ; buffer[n] = f_pair(ti[1],ti[2]) + n = n + 1 ; buffer[n] = f(ti[1],ti[2]) for i=2,tn do local ti = t[i] n = n + 1 ; buffer[n] = connector - n = n + 1 ; buffer[n] = f_pair(ti[1],ti[2]) + n = n + 1 ; buffer[n] = f(ti[1],ti[2]) end if cycle then n = n + 1 ; buffer[n] = connector @@ -208,6 +245,14 @@ function mp.path(t,connector,cycle) end end +function mp.path(...) + mppath(f_pair,...) +end + +function mp.pathpoints(...) + mppath(f_pair_pt,...) +end + function mp.size(t) n = n + 1 buffer[n] = type(t) == "table" and f_numeric(#t) or "0" |