summaryrefslogtreecommitdiff
path: root/tex/context/base/attr-lay.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2012-07-26 21:20:16 +0300
committerMarius <mariausol@gmail.com>2012-07-26 21:20:16 +0300
commitf09b2aabeeebefd483622c018ae170e37397308d (patch)
tree6835400206e98ff028450e631d2cd8418831a3b2 /tex/context/base/attr-lay.lua
parent0d565456a826f94f3d8a7d8f9bb28982737615cd (diff)
downloadcontext-f09b2aabeeebefd483622c018ae170e37397308d.tar.gz
beta 2012.07.26 19:37
Diffstat (limited to 'tex/context/base/attr-lay.lua')
-rw-r--r--tex/context/base/attr-lay.lua70
1 files changed, 25 insertions, 45 deletions
diff --git a/tex/context/base/attr-lay.lua b/tex/context/base/attr-lay.lua
index bb5cce4e2..8046a43a7 100644
--- a/tex/context/base/attr-lay.lua
+++ b/tex/context/base/attr-lay.lua
@@ -10,10 +10,16 @@ if not modules then modules = { } end modules ['attr-lay'] = {
-- but when we need it stacked layers might show up too; the next function based
-- approach can be replaced by static (metatable driven) resolvers
+-- maybe use backends.registrations here too
+
local type = type
local format = string.format
local insert, remove, concat = table.insert, table.remove, table.concat
+local attributes, nodes, utilities, logs, backends = attributes, nodes, utilities, logs, backends
+local commands, context, interfaces = commands, context, interfaces
+local tex = tex
+
local allocate = utilities.storage.allocate
local setmetatableindex = table.setmetatableindex
@@ -26,7 +32,6 @@ local report_viewerlayers = logs.reporter("viewerlayers")
-- nb. too many "0 g"s
-- nb: more local tables
-local attributes, nodes = attributes, nodes
attributes.viewerlayers = attributes.viewerlayers or { }
local viewerlayers = attributes.viewerlayers
@@ -59,16 +64,17 @@ local unsetvalue = attributes.unsetvalue
local nodepool = nodes.pool
-storage.register("attributes/viewerlayers/registered", viewerlayers.registered, "attributes.viewerlayers.registered")
-storage.register("attributes/viewerlayers/values", viewerlayers.values, "attributes.viewerlayers.values")
-storage.register("attributes/viewerlayers/scopes", viewerlayers.scopes, "attributes.viewerlayers.scopes")
+local data = viewerlayers.data
+local values = viewerlayers.values
+local listwise = viewerlayers.listwise
+local registered = viewerlayers.registered
+local scopes = viewerlayers.scopes
-local data = viewerlayers.data
-local values = viewerlayers.values
-local listwise = viewerlayers.listwise
-local registered = viewerlayers.registered
-local scopes = viewerlayers.scopes
-local template = "%s"
+local template = "%s"
+
+storage.register("attributes/viewerlayers/registered", registered, "attributes.viewerlayers.registered")
+storage.register("attributes/viewerlayers/values", values, "attributes.viewerlayers.values")
+storage.register("attributes/viewerlayers/scopes", scopes, "attributes.viewerlayers.scopes")
local layerstacker = utilities.stacker.new("layers") -- experiment
@@ -86,9 +92,12 @@ end
-- stacked
+local function startlayer(...) startlayer = nodeinjections.startlayer return startlayer(...) end
+local function stoplayer (...) stoplayer = nodeinjections.stoplayer return stoplayer (...) end
+
local function extender(viewerlayers,key)
if viewerlayers.supported and key == "none" then
- local d = nodeinjections.stoplayer()
+ local d = stoplayer()
viewerlayers.none = d
return d
end
@@ -98,7 +107,7 @@ local function reviver(data,n)
if viewerlayers.supported then
local v = values[n]
if v then
- local d = nodeinjections.startlayer(v)
+ local d = startlayer(v)
data[n] = d
return d
else
@@ -110,38 +119,9 @@ end
setmetatableindex(viewerlayers, extender)
setmetatableindex(viewerlayers.data, reviver)
-function layerstacker.start(s,t,first,last) -- move to lpdf-ren.lua
- local r = { }
- for i=first,last do
- r[#r+1] = codeinjections.startlayer(values[t[i]])
- end
- r = concat(r," ")
--- print("start",r)
- return nodepool.pdfliteral(r)
-end
-
-function layerstacker.stop(s,t,first,last) -- move to lpdf-ren.lua
- local r = { }
- for i=last,first,-1 do
- r[#r+1] = codeinjections.stoplayer()
- end
- r = concat(r," ")
--- print("stop",r)
- return nodepool.pdfliteral(r)
-end
-
-function layerstacker.change(s,t1,first1,last1,t2,first2,last2) -- move to lpdf-ren.lua
- local r = { }
- for i=last1,first1,-1 do
- r[#r+1] = codeinjections.stoplayer()
- end
- for i=first2,last2 do
- r[#r+1] = codeinjections.startlayer(values[t2[i]])
- end
- r = concat(r," ")
--- print("change",r)
- return nodepool.pdfliteral(r)
-end
+-- layerstacker.start = function(...) local f = nodeinjections.startstackedlayer layerstacker.start = f return f(...) end
+-- layerstacker.stop = function(...) local f = nodeinjections.stopstackedlayer layerstacker.stop = f return f(...) end
+-- layerstacker.change = function(...) local f = nodeinjections.changestackedlayer layerstacker.change = f return f(...) end
local function initializer(...)
return states.initialize(...)
@@ -152,7 +132,7 @@ attributes.viewerlayers.handler = nodes.installattributehandler {
namespace = viewerlayers,
initializer = initializer,
finalizer = states.finalize,
--- processor = states.stacked,
+ -- processor = states.stacked,
processor = states.stacker,
}