summaryrefslogtreecommitdiff
path: root/tex/context/base/spac-par.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/spac-par.lua')
-rw-r--r--tex/context/base/spac-par.lua59
1 files changed, 59 insertions, 0 deletions
diff --git a/tex/context/base/spac-par.lua b/tex/context/base/spac-par.lua
new file mode 100644
index 000000000..f695e11e9
--- /dev/null
+++ b/tex/context/base/spac-par.lua
@@ -0,0 +1,59 @@
+if not modules then modules = { } end modules ['spac-par'] = {
+ version = 1.001,
+ comment = "companion to spac-par.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