Orientation support -- vlist

This commit is contained in:
Marcel Krüger 2020-07-27 15:54:19 +02:00
parent 905058fe4c
commit f5af2bd668

View File

@ -168,7 +168,7 @@ end
local function boxrotation(p, list, x, y)
local orientation, xoff, yoff, woff, hoff, doff = getorientation(list)
if not orientation then return x, y, getwidth(list) end
if not orientation then return x, y, direct.getwhd(list) end
x, y = x + xoff, y + yoff
local baseorientation = orientation & 0xF
local v_anchor = (orientation & 0xF0) >> 4
@ -205,9 +205,7 @@ local function boxrotation(p, list, x, y)
end
if flipped then
write_matrix(-1, 0, 0, -1, 2*x, 2*y, p)
return x - woff, y, woff
else
return x, y, woff
x, y = x - woff, y
end
else -- vertical
if v_anchor == 0 then
@ -240,12 +238,13 @@ local function boxrotation(p, list, x, y)
end
if flipped then
write_matrix(0, 1, -1, 0, x+y, y-x, p)
return x, y - hoff, woff
x, y = x, y - hoff
else
write_matrix(0, -1, 1, 0, x-y, x+y, p)
return x - woff, y + doff, woff
x, y = x - woff, y + doff
end
end
return x, y, woff, hoff, doff
end
local function endboxrotation(p, list, x, y)
@ -358,8 +357,10 @@ function nodehandler.vlist(p, list, x, y0, outerlist, origin, level)
x = x + getshift(list)
end
end
y0 = y0 + getheight(list)
local width, height
x, y0, width, height = boxrotation(p, list, x, y0)
local y = y0
y = y + height
for n in traverse(getlist(list)) do
local d, h, _ = 0, direct.effective_glue(n, list) or math.tointeger(getkern(n))
if not h then
@ -369,6 +370,7 @@ function nodehandler.vlist(p, list, x, y0, outerlist, origin, level)
nodehandler[getid(n)](p, n, x, (y+.5)//1, list, y0, level+1)
y = y - (d or 0)
end
endboxrotation(p, list, x, y0)
end
do
local rulesubtypes = {}