diff options
author | Marius <mariausol@gmail.com> | 2012-07-26 21:20:16 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2012-07-26 21:20:16 +0300 |
commit | f09b2aabeeebefd483622c018ae170e37397308d (patch) | |
tree | 6835400206e98ff028450e631d2cd8418831a3b2 /tex/context/base/lpdf-ren.lua | |
parent | 0d565456a826f94f3d8a7d8f9bb28982737615cd (diff) | |
download | context-f09b2aabeeebefd483622c018ae170e37397308d.tar.gz |
beta 2012.07.26 19:37
Diffstat (limited to 'tex/context/base/lpdf-ren.lua')
-rw-r--r-- | tex/context/base/lpdf-ren.lua | 111 |
1 files changed, 67 insertions, 44 deletions
diff --git a/tex/context/base/lpdf-ren.lua b/tex/context/base/lpdf-ren.lua index 6ffdf8110..6362d12fe 100644 --- a/tex/context/base/lpdf-ren.lua +++ b/tex/context/base/lpdf-ren.lua @@ -9,7 +9,7 @@ if not modules then modules = { } end modules ['lpdf-ren'] = { -- rendering local tostring, tonumber, next = tostring, tonumber, next -local format = string.format +local format, rep = string.format, string.rep local settings_to_array = utilities.parsers.settings_to_array local backends, lpdf, nodes, node = backends, lpdf, nodes, node @@ -60,49 +60,6 @@ local lpdf_usage = pdfdictionary { Print = pdfdictionary { PrintState = pdf_off -- hide and vide actions. This is why we need to be able to force usage of layers -- at several moments. --- injection - -local cache = { } - -function codeinjections.startlayer(name) - if not name then - name = "unknown" - end - codeinjections.useviewerlayer(name) - return format("/OC /%s BDC",name) -end - -function codeinjections.stoplayer(name) - return "EMC" -end - -function nodeinjections.startlayer(name) - local c = cache[name] - if not c then - codeinjections.useviewerlayer(name) - c = register(pdfliteral(format("/OC /%s BDC",name))) - cache[name] = c - end - return copy_node(c) -end - -local stop = register(pdfliteral("EMC")) - -function nodeinjections.stoplayer() - return copy_node(stop) -end - -local cache = { } - -function nodeinjections.switchlayer(name) -- not used, optimization - local c = cache[name] - if not c then - codeinjections.useviewerlayer(name) - c = register(pdfliteral(format("EMC /OC /%s BDC",name))) - end - return copy_node(c) -end - -- management local pdfln, pdfld = { }, { } @@ -240,6 +197,72 @@ function executers.hidelayer (arguments) return setlayer(pdf_off, arguments) function executers.videlayer (arguments) return setlayer(pdf_on, arguments) end function executers.togglelayer(arguments) return setlayer(pdf_toggle,arguments) end +-- injection + +function codeinjections.startlayer(name) -- used in mp + if not name then + name = "unknown" + end + useviewerlayer(name) + return format("/OC /%s BDC",name) +end + +function codeinjections.stoplayer(name) -- used in mp + return "EMC" +end + +local cache = { } + +function nodeinjections.startlayer(name) + local c = cache[name] + if not c then + useviewerlayer(name) + c = register(pdfliteral(format("/OC /%s BDC",name))) + cache[name] = c + end + return copy_node(c) +end + +local stop = register(pdfliteral("EMC")) + +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 + -- transitions local pagetransitions = { |