summaryrefslogtreecommitdiff
path: root/tex/context/base/lpdf-ren.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2012-10-15 20:20:24 +0300
committerMarius <mariausol@gmail.com>2012-10-15 20:20:24 +0300
commit26935233a6565bd73e53e2228ac98779fd3ab33d (patch)
tree0d1102a347b4fa86493a21744c8e6141885ed2d7 /tex/context/base/lpdf-ren.lua
parentf5507b17b30a20c0e3c279291ce448b7886e3b0c (diff)
downloadcontext-26935233a6565bd73e53e2228ac98779fd3ab33d.tar.gz
beta 2012.10.15 19:10
Diffstat (limited to 'tex/context/base/lpdf-ren.lua')
-rw-r--r--tex/context/base/lpdf-ren.lua69
1 files changed, 36 insertions, 33 deletions
diff --git a/tex/context/base/lpdf-ren.lua b/tex/context/base/lpdf-ren.lua
index 6362d12fe..6af65f9de 100644
--- a/tex/context/base/lpdf-ren.lua
+++ b/tex/context/base/lpdf-ren.lua
@@ -10,6 +10,7 @@ if not modules then modules = { } end modules ['lpdf-ren'] = {
local tostring, tonumber, next = tostring, tonumber, next
local format, rep = string.format, string.rep
+local concat = table.concat
local settings_to_array = utilities.parsers.settings_to_array
local backends, lpdf, nodes, node = backends, lpdf, nodes, node
@@ -229,39 +230,41 @@ function nodeinjections.stoplayer()
return copy_node(stop)
end
--- experimental stacker code (slow, can be optimized):
---
--- local values = viewerlayers.values
---
--- function nodeinjections.startstackedlayer(s,t,first,last)
--- local r = { }
--- for i=first,last do
--- r[#r+1] = startlayer(values[t[i]])
--- end
--- r = concat(r," ")
--- return pdfliteral(r)
--- end
---
--- function nodeinjections.stopstackedlayer(s,t,first,last)
--- local r = { }
--- for i=last,first,-1 do
--- r[#r+1] = stoplayer()
--- end
--- r = concat(r," ")
--- return pdfliteral(r)
--- end
---
--- function nodeinjections.changestackedlayer(s,t1,first1,last1,t2,first2,last2)
--- local r = { }
--- for i=last1,first1,-1 do
--- r[#r+1] = stoplayer()
--- end
--- for i=first2,last2 do
--- r[#r+1] = startlayer(values[t2[i]])
--- end
--- r = concat(r," ")
--- return pdfliteral(r)
--- end
+-- experimental stacker code (slow, can be optimized): !!!! TEST CODE !!!!
+
+local values = viewerlayers.values
+local startlayer = codeinjections.startlayer
+local stoplayer = codeinjections.stoplayer
+
+function nodeinjections.startstackedlayer(s,t,first,last)
+ local r = { }
+ for i=first,last do
+ r[#r+1] = startlayer(values[t[i]])
+ end
+ r = concat(r," ")
+ return pdfliteral(r)
+end
+
+function nodeinjections.stopstackedlayer(s,t,first,last)
+ local r = { }
+ for i=last,first,-1 do
+ r[#r+1] = stoplayer()
+ end
+ r = concat(r," ")
+ return pdfliteral(r)
+end
+
+function nodeinjections.changestackedlayer(s,t1,first1,last1,t2,first2,last2)
+ local r = { }
+ for i=last1,first1,-1 do
+ r[#r+1] = stoplayer()
+ end
+ for i=first2,last2 do
+ r[#r+1] = startlayer(values[t2[i]])
+ end
+ r = concat(r," ")
+ return pdfliteral(r)
+end
-- transitions