diff options
author | Norbert Preining <preining@logic.at> | 2019-02-24 15:12:57 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2019-02-24 15:12:57 +0000 |
commit | 1314fbe93790c501dc436a5cf99f106b9e5c0f63 (patch) | |
tree | 04dc7734c8be8ffe385d41f4388826ef5857b6f9 /Master/texmf-dist/tex/context/base/mkiv/supp-box.lua | |
parent | eb80ce7b34f59896a1dfee5ca422495394d6677f (diff) |
Revert "ConTeXt version 2019.02.22 19:35"
This reverts commit 5c6357cdb820b4f628d036ba7b2248f221d50c0b.
git-svn-id: svn://tug.org/texlive/trunk@50112 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/supp-box.lua')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/supp-box.lua | 236 |
1 files changed, 104 insertions, 132 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/supp-box.lua b/Master/texmf-dist/tex/context/base/mkiv/supp-box.lua index 1f31f768130..40047167c3c 100644 --- a/Master/texmf-dist/tex/context/base/mkiv/supp-box.lua +++ b/Master/texmf-dist/tex/context/base/mkiv/supp-box.lua @@ -20,67 +20,63 @@ local nodes = nodes local implement = interfaces.implement -local nodecodes = nodes.nodecodes - -local disc_code = nodecodes.disc -local hlist_code = nodecodes.hlist -local vlist_code = nodecodes.vlist -local glue_code = nodecodes.glue -local glyph_code = nodecodes.glyph - -local nuts = nodes.nuts -local tonut = nuts.tonut -local tonode = nuts.tonode - ------ getfield = nuts.getfield -local getnext = nuts.getnext -local getprev = nuts.getprev -local getboth = nuts.getboth -local getdisc = nuts.getdisc -local getid = nuts.getid -local getlist = nuts.getlist -local getattribute = nuts.getattribute -local getbox = nuts.getbox -local getdirection = nuts.getdirection -local getwidth = nuts.getwidth -local takebox = nuts.takebox - ------ setfield = nuts.setfield -local setlink = nuts.setlink -local setboth = nuts.setboth -local setnext = nuts.setnext -local setbox = nuts.setbox -local setlist = nuts.setlist -local setdisc = nuts.setdisc -local setwidth = nuts.setwidth -local setheight = nuts.setheight -local setdepth = nuts.setdepth -local setshift = nuts.setshift - -local flush_node = nuts.flush_node -local flush_list = nuts.flush_list -local copy_node = nuts.copy -local copy_list = nuts.copy_list -local find_tail = nuts.tail -local getdimensions = nuts.dimensions -local hpack = nuts.hpack - -local nextdisc = nuts.traversers.disc -local nextdir = nuts.traversers.dir -local nexthlist = nuts.traversers.hlist - -local listtoutf = nodes.listtoutf - -local nodepool = nuts.pool -local new_penalty = nodepool.penalty -local new_hlist = nodepool.hlist -local new_glue = nodepool.glue - -local setlistcolor = nodes.tracers.colors.setlist - -local texget = tex.get -local texgetbox = tex.getbox -local texsetdimen = tex.setdimen +local nodecodes = nodes.nodecodes + +local disc_code = nodecodes.disc +local hlist_code = nodecodes.hlist +local vlist_code = nodecodes.vlist +local glue_code = nodecodes.glue +local glyph_code = nodecodes.glyph + +local nuts = nodes.nuts +local tonut = nuts.tonut +local tonode = nuts.tonode + +----- getfield = nuts.getfield +local getnext = nuts.getnext +local getprev = nuts.getprev +local getboth = nuts.getboth +local getdisc = nuts.getdisc +local getid = nuts.getid +local getlist = nuts.getlist +local getattribute = nuts.getattribute +local getbox = nuts.getbox +local getdir = nuts.getdir +local getwidth = nuts.getwidth +local takebox = nuts.takebox + +----- setfield = nuts.setfield +local setlink = nuts.setlink +local setboth = nuts.setboth +local setnext = nuts.setnext +local setbox = nuts.setbox +local setlist = nuts.setlist +local setdisc = nuts.setdisc +local setwidth = nuts.setwidth +local setheight = nuts.setheight +local setdepth = nuts.setdepth + +local flush_node = nuts.flush_node +local flush_list = nuts.flush_list +local copy_node = nuts.copy +local copy_list = nuts.copy_list +local find_tail = nuts.tail +local traverse_id = nuts.traverse_id +local list_dimensions = nuts.dimensions +local hpack = nuts.hpack + +local listtoutf = nodes.listtoutf + +local nodepool = nuts.pool +local new_penalty = nodepool.penalty +local new_hlist = nodepool.hlist +local new_glue = nodepool.glue + +local setlistcolor = nodes.tracers.colors.setlist + +local texget = tex.get +local texgetbox = tex.getbox +local texsetdimen = tex.setdimen local function hyphenatedlist(head,usecolor) local current = head and tonut(head) @@ -131,7 +127,7 @@ implement { -- local function hyphenatedhack(head,pre) -- pre = tonut(pre) --- for n in nextdisc, tonut(head) do +-- for n in traverse_id(disc_code,tonut(head)) do -- local hyphen = getfield(n,"pre") -- if hyphen then -- flush_list(hyphen) @@ -365,12 +361,10 @@ implement { } local function getnaturaldimensions(n) - local w = 0 - local h = 0 - local d = 0 + local w, h, d = 0, 0, 0 local l = getlist(getbox(n)) if l then - w, h, d = getdimensions(l) + w, h, d = list_dimensions(l) end texsetdimen("lastnaturalboxwd",w) texsetdimen("lastnaturalboxht",h) @@ -397,12 +391,10 @@ interfaces.implement { name = "getnaturalwd", arguments = "integer", actions = function(n) - local w = 0 - local h = 0 - local d = 0 + local w, h, d = 0, 0, 0 local l = getlist(getbox(n)) if l then - w, h, d = getdimensions(l) + w, h, d = list_dimensions(l) end context("\\dimexpr%i\\scaledpoint\\relax",w) end @@ -424,60 +416,46 @@ interfaces.implement { nodes.setboxtonaturalwd = setboxtonaturalwd -local doifelse = commands.doifelse - -do - - local dirvalues = nodes.dirvalues - local lefttoright_code = dirvalues.lefttoright - local righttoleft_code = dirvalues.righttoleft - - local function firstdirinbox(n) - local b = getbox(n) - if b then - local l = getlist(b) - if l then - for d in nextdir, l do - return getdirection(d) - end - for h in nexthlist, l do - return getdirection(h) - end +local function firstdirinbox(n) + local b = getbox(n) + if b then + local l = getlist(b) + if l then + for h in traverse_id(hlist_code,l) do + return getdir(h) end end - return lefttoright_code end +end - nodes.firstdirinbox = firstdirinbox +nodes.firstdirinbox = firstdirinbox - interfaces.implement { - name = "doifelserighttoleftinbox", - arguments = "integer", - actions = function(n) - doifelse(firstdirinbox(n) == righttoleft_code) - end - } +local doifelse = commands.doifelse -end +interfaces.implement { + name = "doifelserighttoleftinbox", + arguments = "integer", + actions = function(n) + doifelse(firstdirinbox(n) == "TRT") + end +} -- new (handy for mp) .. might move to its own module do - local nuts = nodes.nuts - local tonode = nuts.tonode - local takebox = nuts.takebox - local flush_list = nuts.flush_list - local copy_list = nuts.copy_list - local getwhd = nuts.getwhd - local setbox = nuts.setbox - local new_hlist = nuts.pool.hlist - - local boxes = { } - nodes.boxes = boxes - local cache = table.setmetatableindex("table") - local report = logs.reporter("boxes","cache") - local trace = false + local flush_list = nodes.flush_list + local copy_list = nodes.copy_list + local takebox = nodes.takebox + local texsetbox = tex.setbox + + local new_hlist = nodes.pool.hlist + + local boxes = { } + nodes.boxes = boxes + local cache = table.setmetatableindex("table") + local report = logs.reporter("boxes","cache") + local trace = false trackers.register("nodes.boxes",function(v) trace = v end) @@ -509,9 +487,7 @@ do if trace then report("category %a, name %a, %s (%s)",category,name,"direct",b and "content" or "empty") end - if b then - return tonode(b) - end + return b or nil end function boxes.restore(category,name,box,copy) @@ -532,9 +508,11 @@ do if trace then report("category %a, name %a, %s (%s)",category,name,"restore",b and "content" or "empty") end - setbox(box,b or nil) + texsetbox(box,b or nil) end + local getwhd = nodes.getwhd + function boxes.dimensions(category,name) name = tonumber(name) or name local b = cache[category][name] @@ -614,19 +592,13 @@ do actions = boxes.reset, } -end - -implement { - name = "lastlinewidth", - actions = function() - local head = tex.lists.page_head - -- list dimensions returns 3 value but we take the first - context(head and getdimensions(getlist(find_tail(tonut(tex.lists.page_head)))) or 0) - end -} + implement { + name = "lastlinewidth", + actions = function() + local head = tex.lists.page_head + -- list dimensions returns 3 value but we take the first + context(head and list_dimensions(getlist(find_tail(tonut(tex.lists.page_head)))) or 0) + end + } -interfaces.implement { - name = "shiftbox", - arguments = { "integer", "dimension" }, - actions = function(n,d) setshift(getbox(n),d) end, -} +end |