if not modules then modules = { } end modules ['lpdf-nod'] = { version = 1.001, comment = "companion to lpdf-ini.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" } local nodecodes = nodes.nodecodes local whatsitcodes = nodes.whatsitcodes local nodeinjections = backends.nodeinjections local nuts = nodes.nuts local setfield = nuts.setfield local setdata = nuts.setdata local copy_node = nuts.copy local new_node = nuts.new local nodepool = nuts.pool local register = nodepool.register local whatsit_code = nodecodes.whatsit local savewhatsit_code = whatsitcodes.save local restorewhatsit_code = whatsitcodes.restore local setmatrixwhatsit_code = whatsitcodes.setmatrix local literalwhatsit_code = whatsitcodes.literal local lateliteralwhatsit_code = whatsitcodes.lateliteral local literalvalues = nodes.literalvalues local originliteral_code = literalvalues.origin local pageliteral_code = literalvalues.page local directliteral_code = literalvalues.direct local rawliteral_code = literalvalues.raw local tomatrix = drivers.helpers.tomatrix local originliteralnode = register(new_node(whatsit_code, literalwhatsit_code)) setfield(originliteralnode,"mode",originliteral_code) local pageliteralnode = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pageliteralnode, "mode",pageliteral_code) local directliteralnode = register(new_node(whatsit_code, literalwhatsit_code)) setfield(directliteralnode,"mode",directliteral_code) local rawliteralnode = register(new_node(whatsit_code, literalwhatsit_code)) setfield(rawliteralnode, "mode",rawliteral_code) function nodepool.originliteral(str) local t = copy_node(originliteralnode) setdata(t,str) return t end function nodepool.pageliteral (str) local t = copy_node(pageliteralnode ) setdata(t,str) return t end function nodepool.directliteral(str) local t = copy_node(directliteralnode) setdata(t,str) return t end function nodepool.rawliteral (str) local t = copy_node(rawliteralnode ) setdata(t,str) return t end local literals = { [originliteral_code] = originliteralnode, [literalvalues[originliteral_code]] = originliteralnode, [pageliteral_code] = pageliteralnode, [literalvalues[pageliteral_code]] = pageliteralnode, [directliteral_code] = directliteralnode, [literalvalues[directliteral_code]] = directliteralnode, [rawliteral_code] = rawliteralnode, [literalvalues[rawliteral_code]] = rawliteralnode, } function nodepool.literal(mode,str) if str then local t = copy_node(literals[mode] or pageliteralnode) setdata(t,str) return t else local t = copy_node(pageliteralnode) setdata(t,mode) return t end end -- We only define this for testing as we don't need it: if lateliteralwhatsit_code then local lateliteralnode = register(new_node(whatsit_code, lateliteralwhatsit_code)) function nodepool.lateliteral(mode,str) local t = copy_node(lateliteralnode) if str then setfield(t,"mode",literals[mode] and mode or pageliteral_code) setdata(t,str) else setfield(t,"mode",pageliteral_code) setdata(t,mode) end return t end end local savenode = register(new_node(whatsit_code, savewhatsit_code)) local restorenode = register(new_node(whatsit_code, restorewhatsit_code)) local setmatrixnode = register(new_node(whatsit_code, setmatrixwhatsit_code)) function nodepool.save() return copy_node(savenode) end function nodepool.restore() return copy_node(restorenode) end function nodepool.setmatrix(rx,sx,sy,ry,tx,ty) local t = copy_node(setmatrixnode) setdata(t,tomatrix(rx,sx,sy,ry,tx,ty)) return t end