summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/lpdf-nod.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2019-02-07 19:16:06 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2019-02-07 19:16:06 +0100
commit99dc1cd9bb77ac9fa68b0584f58f57749994fdba (patch)
treeab184c40b11270cec9c311beb0e190913471e47f /tex/context/base/mkiv/lpdf-nod.lua
parent38a9804bf0448f3c987903d2601175f1750e9fe3 (diff)
downloadcontext-99dc1cd9bb77ac9fa68b0584f58f57749994fdba.tar.gz
2019-02-07 18:55:00
Diffstat (limited to 'tex/context/base/mkiv/lpdf-nod.lua')
-rw-r--r--tex/context/base/mkiv/lpdf-nod.lua129
1 files changed, 90 insertions, 39 deletions
diff --git a/tex/context/base/mkiv/lpdf-nod.lua b/tex/context/base/mkiv/lpdf-nod.lua
index 05736a79f..9d4bf9270 100644
--- a/tex/context/base/mkiv/lpdf-nod.lua
+++ b/tex/context/base/mkiv/lpdf-nod.lua
@@ -81,45 +81,83 @@ local function tomatrix(rx,sx,sy,ry,tx,ty) -- todo: tx ty
end
end
-local pdforiginliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdforiginliteral,"mode",originliteral_code)
-local pdfpageliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfpageliteral, "mode",pageliteral_code)
-local pdfdirectliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfdirectliteral,"mode",directliteral_code)
-local pdfrawliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfrawliteral, "mode",rawliteral_code)
-
-local pdfsave = register(new_node(whatsit_code, savewhatsit_code))
-local pdfrestore = register(new_node(whatsit_code, restorewhatsit_code))
-local pdfsetmatrix = register(new_node(whatsit_code, setmatrixwhatsit_code))
-
-function nodepool.pdforiginliteral(str) local t = copy_node(pdforiginliteral) setdata(t,str) return t end
-function nodepool.pdfpageliteral (str) local t = copy_node(pdfpageliteral ) setdata(t,str) return t end
-function nodepool.pdfdirectliteral(str) local t = copy_node(pdfdirectliteral) setdata(t,str) return t end
-function nodepool.pdfrawliteral (str) local t = copy_node(pdfrawliteral ) setdata(t,str) return t end
-
-local pdfliterals = {
- -- by number
- [originliteral_code] = pdforiginliteral,
- [pageliteral_code] = pdfpageliteral,
- [directliteral_code] = pdfdirectliteral,
- [rawliteral_code] = pdfrawliteral,
- -- by name
- [literalvalues[originliteral_code]] = pdforiginliteral,
- [literalvalues[pageliteral_code]] = pdfpageliteral,
- [literalvalues[directliteral_code]] = pdfdirectliteral,
- [literalvalues[rawliteral_code]] = pdfrawliteral,
-}
+if CONTEXTLMTXMODE then
-function nodepool.pdfliteral(mode,str)
- if str then
- local t = copy_node(pdfliterals[mode] or pdfpageliteral)
- setdata(t,str)
- return t
- else
- local t = copy_node(pdfpageliteral)
- setdata(t,mode)
+ local nodeproperties = nodes.properties.data
+
+ local pdfliteral = register(new_node(whatsit_code,literalwhatsit_code))
+
+ function nodepool.pdforiginliteral(str) local t = copy_node(pdfliteral) nodeproperties[t] = { data = str, mode = originliteral_code } return t end
+ function nodepool.pdfpageliteral (str) local t = copy_node(pdfliteral) nodeproperties[t] = { data = str, mode = pageliteral_code } return t end
+ function nodepool.pdfdirectliteral(str) local t = copy_node(pdfliteral) nodeproperties[t] = { data = str, mode = directliteral_code } return t end
+ function nodepool.pdfrawliteral (str) local t = copy_node(pdfliteral) nodeproperties[t] = { data = str, mode = rawliteral_code } return t end
+
+ local pdfliterals = {
+ -- by number
+ [originliteral_code] = originliteral_code,
+ [pageliteral_code] = pageliteral_code,
+ [directliteral_code] = directliteral_code,
+ [rawliteral_code] = rawliteral_code,
+ -- by name
+ [literalvalues[originliteral_code]] = originliteral_code,
+ [literalvalues[pageliteral_code]] = pageliteral_code,
+ [literalvalues[directliteral_code]] = directliteral_code,
+ [literalvalues[rawliteral_code]] = rawliteral_code,
+ }
+
+ function nodepool.pdfliteral(mode,str)
+ local t = copy_node(pdfliteral)
+ if str then
+ nodeproperties[t] = { data = str, mode = pdfliterals[mode] or pageliteral_code }
+ else
+ nodeproperties[t] = { data = mode, mode = pageliteral_code }
+ end
return t
end
+
+else
+
+ local pdforiginliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdforiginliteral,"mode",originliteral_code)
+ local pdfpageliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfpageliteral, "mode",pageliteral_code)
+ local pdfdirectliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfdirectliteral,"mode",directliteral_code)
+ local pdfrawliteral = register(new_node(whatsit_code, literalwhatsit_code)) setfield(pdfrawliteral, "mode",rawliteral_code)
+
+ function nodepool.pdforiginliteral(str) local t = copy_node(pdforiginliteral) setdata(t,str) return t end
+ function nodepool.pdfpageliteral (str) local t = copy_node(pdfpageliteral ) setdata(t,str) return t end
+ function nodepool.pdfdirectliteral(str) local t = copy_node(pdfdirectliteral) setdata(t,str) return t end
+ function nodepool.pdfrawliteral (str) local t = copy_node(pdfrawliteral ) setdata(t,str) return t end
+
+ local pdfliterals = {
+ -- by number
+ [originliteral_code] = pdforiginliteral,
+ [pageliteral_code] = pdfpageliteral,
+ [directliteral_code] = pdfdirectliteral,
+ [rawliteral_code] = pdfrawliteral,
+ -- by name
+ [literalvalues[originliteral_code]] = pdforiginliteral,
+ [literalvalues[pageliteral_code]] = pdfpageliteral,
+ [literalvalues[directliteral_code]] = pdfdirectliteral,
+ [literalvalues[rawliteral_code]] = pdfrawliteral,
+ }
+
+ function nodepool.pdfliteral(mode,str)
+ if str then
+ local t = copy_node(pdfliterals[mode] or pdfpageliteral)
+ setdata(t,str)
+ return t
+ else
+ local t = copy_node(pdfpageliteral)
+ setdata(t,mode)
+ return t
+ end
+ end
+
end
+local pdfsave = register(new_node(whatsit_code, savewhatsit_code))
+local pdfrestore = register(new_node(whatsit_code, restorewhatsit_code))
+local pdfsetmatrix = register(new_node(whatsit_code, setmatrixwhatsit_code))
+
function nodepool.pdfsave()
return copy_node(pdfsave)
end
@@ -128,12 +166,25 @@ function nodepool.pdfrestore()
return copy_node(pdfrestore)
end
-function nodepool.pdfsetmatrix(rx,sx,sy,ry,tx,ty)
- local t = copy_node(pdfsetmatrix)
- setdata(t,tomatrix(rx,sx,sy,ry,tx,ty))
- return t
-end
+if CONTEXTLMTXMODE then
+
+ local nodeproperties = nodes.properties.data
+
+ function nodepool.pdfsetmatrix(rx,sx,sy,ry,tx,ty)
+ local t = copy_node(pdfsetmatrix)
+ nodeproperties[t] = { matrix = tomatrix(rx,sx,sy,ry,tx,ty) }
+ return t
+ end
+else
+
+ function nodepool.pdfsetmatrix(rx,sx,sy,ry,tx,ty)
+ local t = copy_node(pdfsetmatrix)
+ setdata(t,tomatrix(rx,sx,sy,ry,tx,ty))
+ return t
+ end
+
+end
-- best is to use a specific one: origin | page | direct | raw