diff options
author | Hans Hagen <pragma@wxs.nl> | 2012-01-05 19:27:55 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2012-01-05 19:27:55 +0100 |
commit | 551356b39d8dfbf10ed6542aa3281cb08cd36197 (patch) | |
tree | 0595a2919995c5196a42b88e997ff6a72b8cfa60 /tex/context/base/spac-adj.lua | |
parent | 3f0bc32ccee0fa7ce93e842b67136e7de75087c2 (diff) | |
download | context-551356b39d8dfbf10ed6542aa3281cb08cd36197.tar.gz |
beta 2011.12.31 18:06
Diffstat (limited to 'tex/context/base/spac-adj.lua')
-rw-r--r-- | tex/context/base/spac-adj.lua | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tex/context/base/spac-adj.lua b/tex/context/base/spac-adj.lua new file mode 100644 index 000000000..4cba2f91e --- /dev/null +++ b/tex/context/base/spac-adj.lua @@ -0,0 +1,59 @@ +if not modules then modules = { } end modules ['spac-adj'] = { + version = 1.001, + comment = "companion to spac-adj.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- sort of obsolete code + +local attribute = attributes.private('graphicvadjust') + +local nodecodes = nodes.nodecodes + +local hlist_code = nodecodes.hlist +local vlist_code = nodecodes.vlist + +local remove_node = nodes.remove +local hpack_node = node.hpack +local vpack_node = node.vpack +local has_attribute = node.has_attribute + +function nodes.handlers.graphicvadjust(head,groupcode) -- we can make an actionchain for mvl only + if groupcode == "" then -- mvl only + local h, p, done = head, nil, false + while h do + local id = h.id + if id == hlist_code or id == vlist_code then + local a = has_attribute(h,attribute) + if a then + if p then + local n + head, h, n = remove_node(head,h) + local pl = p.list + if n.width ~= 0 then + n = hpack_node(n,0,'exactly') -- todo: dir + end + if pl then + pl.prev = n + n.next = pl + end + p.list = n + done = true + else + -- can't happen + end + else + p = h + h = h.next + end + else + h = h.next + end + end + return head, done + else + return head, false + end +end |