diff options
author | Hans Hagen <pragma@wxs.nl> | 2012-07-26 19:37:00 +0200 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2012-07-26 19:37:00 +0200 |
commit | 07f9052e9f88459a4ee947f6c01d9de1119b8355 (patch) | |
tree | bab894ba034423f33358488de889e64e83220979 /tex/context/base/attr-lay.lua | |
parent | 860c6eaca8251c559f0486c0c1acf7f161821d82 (diff) | |
download | context-07f9052e9f88459a4ee947f6c01d9de1119b8355.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.lua | 70 |
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, } |