summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/mkiv/mlib-lmp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/mlib-lmp.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/mkiv/mlib-lmp.lua229
1 files changed, 35 insertions, 194 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/mlib-lmp.lua b/Master/texmf-dist/tex/context/base/mkiv/mlib-lmp.lua
index f000f428245..79370d2ce8d 100644
--- a/Master/texmf-dist/tex/context/base/mkiv/mlib-lmp.lua
+++ b/Master/texmf-dist/tex/context/base/mkiv/mlib-lmp.lua
@@ -6,219 +6,60 @@ if not modules then modules = { } end modules ['mlib-lmp'] = {
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 mpquoted = aux.quoted
-local mpdirect = aux.direct
-
--- todo: use a stack?
-
-do
-
- local p = nil
- local n = 0
-
- local function mf_path_reset()
- p = nil
- n = 0
- end
-
- if CONTEXTLMTXMODE > 0 then
-
- 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)
-
- else
-
- local get = mp.get
- local mpgetpath = get.path
-
- local function mf_path_length(name)
- p = mpgetpath(name)
- n = p and #p or 0
- mpnumeric(n)
- end
-
- local function mf_path_point(i)
- if i > 0 and i <= n then
- local pi = p[i]
- mppair(pi[1],pi[2])
- end
- end
-
- local function mf_path_left(i)
- if i > 0 and i <= n then
- local pi = p[i]
- mppair(pi[5],pi[6])
- end
- end
- local function mf_path_right(i)
- 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
-
- mp.mf_path_length = mf_path_length mp.pathlength = mf_path_length
- mp.mf_path_point = mf_path_point mp.pathpoint = mf_path_point
- mp.mf_path_left = mf_path_left mp.pathleft = mf_path_left
- mp.mf_path_right = mf_path_right mp.pathright = mf_path_right
- mp.mf_path_reset = mf_path_reset mp.pathreset = mf_path_reset
-
- end
+local p = nil
+local n = 0
+local function mf_path_reset()
+ p = nil
+ n = 0
end
-do
+local get = mp.get
+local mpgetpath = get.path
- -- if needed we can optimize the sub (cache last split)
-
- local utflen, utfsub = utf.len, utf.sub
-
- function mp.utflen(s)
- mpnumeric(utflen(s))
- end
+local function mf_path_length(name)
+ p = mpgetpath(name)
+ n = p and #p or 0
+ mpnumeric(n)
+end
- function mp.utfsub(s,f,t)
- mpquoted(utfsub(s,f,t or f))
+local function mf_path_point(i)
+ if i > 0 and i <= n then
+ local pi = p[i]
+ mppair(pi[1],pi[2])
end
-
end
-if CONTEXTLMTXMODE > 0 then
-
- function mp.lmt_svg_include()
- local labelfile = metapost.getparameter { "labelfile" }
- if labelfile and labelfile ~= "" then
- local labels = table.load(labelfile) -- todo: same path as svg file
- if type(labels) == "table" then
- for i=1,#labels do
- metapost.remaptext(labels[i])
- end
- end
- end
- local fontname = metapost.getparameter { "fontname" }
- if fontname and fontname ~= "" then
- local unicode = metapost.getparameter { "unicode" }
- if unicode then
- mpdirect (
- metapost.svgglyphtomp(fontname,math.round(unicode))
- )
- end
- return
- end
- local colorfile = metapost.getparameter { "colormap" }
- local colormap = false
- if colorfile and colorfile ~= "" then
- colormap = metapost.svgcolorremapper(colorfile)
- end
- local filename = metapost.getparameter { "filename" }
- if filename and filename ~= "" then
- mpdirect ( metapost.svgtomp {
- data = io.loaddata(filename),
- remap = true,
- colormap = colormap,
- } )
- else
- local buffer = metapost.getparameter { "buffer" }
- if buffer then
- mpdirect ( metapost.svgtomp {
- data = buffers.getcontent(buffer),
- -- remap = true,
- colormap = colormap,
- } )
- else
- local code = metapost.getparameter { "code" }
- if code then
- mpdirect ( metapost.svgtomp {
- data = code,
- colormap = colormap,
- } )
- end
- end
- end
+local function mf_path_left(i)
+ if i > 0 and i <= n then
+ local pi = p[i]
+ mppair(pi[5],pi[6])
end
-
end
-if CONTEXTLMTXMODE > 0 then
-
- function mp.lmt_do_remaptext()
- local parameters = metapost.scanparameters()
- if parameters and parameters.label then
- metapost.remaptext(parameters)
+local function mf_path_right(i)
+ 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
-if CONTEXTLMTXMODE > 0 then
-
- local dropins = fonts.dropins
- local registerglyphs = dropins.registerglyphs
- local registerglyph = dropins.registerglyph
-
- function mp.lmt_register_glyph()
- registerglyph(metapost.getparameterset("mpsglyph"))
- end
-
- function mp.lmt_register_glyphs()
- registerglyphs(metapost.getparameterset("mpsglyphs"))
- end
-
-end
+mp.mf_path_length = mf_path_length mp.pathlength = mf_path_length
+mp.mf_path_point = mf_path_point mp.pathpoint = mf_path_point
+mp.mf_path_left = mf_path_left mp.pathleft = mf_path_left
+mp.mf_path_right = mf_path_right mp.pathright = mf_path_right
+mp.mf_path_reset = mf_path_reset mp.pathreset = mf_path_reset
-todecimal = xdecimal and xdecimal.new or tonumber -- bonus