summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/back-ini.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/back-ini.lua')
-rw-r--r--tex/context/base/mkiv/back-ini.lua145
1 files changed, 9 insertions, 136 deletions
diff --git a/tex/context/base/mkiv/back-ini.lua b/tex/context/base/mkiv/back-ini.lua
index b7ecce00b..bc4a67bc0 100644
--- a/tex/context/base/mkiv/back-ini.lua
+++ b/tex/context/base/mkiv/back-ini.lua
@@ -8,31 +8,21 @@ if not modules then modules = { } end modules ['back-ini'] = {
local next, type = next, type
local format = string.format
-local sind, cosd, abs = math.sind, math.cosd, math.abs
-local insert, remove = table.insert, table.remove
-local unpack = unpack
backends = backends or { }
local backends = backends
-local trace_backend = false trackers.register("backend.initializers", function(v) trace_finalizers = v end)
+local context = context
+local trace = false trackers.register("backend", function(v) trace = v end)
local report = logs.reporter("backend")
-local report_backend = logs.reporter("backend","initializing")
local allocate = utilities.storage.allocate
local setmetatableindex = table.setmetatableindex
local setaction = nodes.tasks.setaction
-local scanners = tokens.scanners
-local scannumber = scanners.number
-local scankeyword = scanners.keyword
-local scancount = scanners.count
-local scanstring = scanners.string
-
-local scanners = interfaces.scanners
-
local implement = interfaces.implement
+local variables = interfaces.variables
local texset = tex.set
@@ -87,11 +77,11 @@ function backends.install(what)
if type(what) == "string" then
local backend = backends[what]
if backend then
- if trace_backend then
+ if trace then
if backend.comment then
- report_backend("initializing backend %a, %a",what,backend.comment)
+ report("initializing backend %a, %a",what,backend.comment)
else
- report_backend("initializing backend %a",what)
+ report("initializing backend %a",what)
end
end
backends.current = what
@@ -101,8 +91,8 @@ function backends.install(what)
setmetatableindex(plugin, default)
setmetatableindex(target, plugin)
end
- elseif trace_backend then
- report_backend("no backend named %a",what)
+ elseif trace then
+ report("no backend named %a",what)
end
end
end
@@ -139,7 +129,7 @@ interfaces.implement {
name = "setrealspaces",
arguments = "string",
actions = function(v)
- setaction("shipouts","nodes.handlers.accessibility",v == interfaces.variables.yes)
+ setaction("shipouts","nodes.handlers.accessibility",v == variables.yes)
end
}
@@ -197,120 +187,3 @@ implement {
function backends.noflatelua()
return status.late_callbacks or 0
end
-
---
-
-local stack = { }
-local restore = true -- false
-
-local nodepool = nodes.pool
-local savenode = nodepool.save
-local restorenode = nodepool.restore
-local setmatrixnode = nodepool.setmatrix
-
-updaters.register("backend.update",function()
- savenode = nodepool.save
- restorenode = nodepool.restore
- setmatrixnode = nodepool.setmatrix
-end)
-
-local function stopsomething()
- local top = remove(stack)
- if top == false then
- -- not wrapped
- elseif top == true then
- context(restorenode())
- elseif top then
- context(setmatrixnode(unpack(top))) -- not really needed anymore
- context(restorenode())
- else
- -- nesting error
- end
-end
-
-local function startrotation()
- local a = scannumber()
- if a == 0 then
- insert(stack,false)
- else
- local s, c = sind(a), cosd(a)
- if abs(s) < 0.000001 then
- s = 0 -- otherwise funny -0.00000
- end
- if abs(c) < 0.000001 then
- c = 0 -- otherwise funny -0.00000
- end
- context(savenode())
- context(setmatrixnode(c,s,-s,c))
- insert(stack,restore and { c, -s, s, c } or true)
- end
-end
-
-implement { name = "startrotation", actions = startrotation }
-implement { name = "stoprotation", actions = stopsomething }
-
-local function startscaling() -- at the tex end we use sx and sy instead of rx and ry
- local rx, ry = 1, 1
- while true do
- if scankeyword("rx") then
- rx = scannumber()
- elseif scankeyword("ry") then
- ry = scannumber()
- -- elseif scankeyword("revert") then
- -- local top = stack[#stack]
- -- if top then
- -- rx = top[1]
- -- ry = top[4]
- -- else
- -- rx = 1
- -- ry = 1
- -- end
- else
- break
- end
- end
- if rx == 1 and ry == 1 then
- insert(stack,false)
- else
- if rx == 0 then
- rx = 0.0001
- end
- if ry == 0 then
- ry = 0.0001
- end
- context(savenode())
- context(setmatrixnode(rx,0,0,ry))
- insert(stack,restore and { 1/rx, 0, 0, 1/ry } or true)
- end
-end
-
-implement { name = "startscaling", actions = startscaling }
-implement { name = "stopscaling", actions = stopsomething }
-
-local function startmatrix() -- rx sx sy ry -- tx, ty
- local rx, sx, sy, ry = 1, 0, 0, 1
- while true do
- if scankeyword("rx") then rx = scannumber()
- elseif scankeyword("ry") then ry = scannumber()
- elseif scankeyword("sx") then sx = scannumber()
- elseif scankeyword("sy") then sy = scannumber()
- else break end
- end
- if rx == 1 and sx == 0 and sy == 0 and ry == 1 then
- insert(stack,false)
- else
- context(savenode())
- context(setmatrixnode(rx,sx,sy,ry))
- insert(stack,store and { -rx, -sx, -sy, -ry } or true)
- end
-end
-
-implement { name = "startmatrix", actions = startmatrix }
-implement { name = "stopmatrix", actions = stopsomething }
-
-local function startmirroring()
- context(setmatrixnode(-1,0,0,1))
-end
-
-implement { name = "startmirroring", actions = startmirroring }
-implement { name = "stopmirroring", actions = startmirroring } -- not: stopsomething