我在渲染树中有一个节点,根据它的子节点计算它的高度。允许位置和大小值为浮点值,舍入在渲染时完成。
def compute_size(self):
# Invokes compute_size() of child nodes.
super(InlineBoxNode, self).compute_size()
# Iterate over all children and compute the current nodes
# height.
self.h = 0
for node in self.children:
self.h += node.h
我面临的问题如下:想象一下两个节点是上面代码节点的子节点。两个孩子的身高都为10.5
。子节点布置在它们各自的先前节点之下,即节点2将被放置在y=10.5
。在渲染时10.5
变为11
。第二个节点现在位于y=11
并且有h=11
,即它的下边缘位于22
,而不是21
。 (见下图以供演示)
我认为这个问题可以通过舍入舍入(即相邻较低的整数值)来解决,但语义是否正确?
我刚刚意识到,即使是舍入,也只能解决它。第二个节点的下边缘现在位于20
,但21
是正确的。
答案 0 :(得分:3)
因此内部表示是浮点数,实际布局是以像素为单位。必须进行某种舍入。然后在添加之前进行相同的舍入操作,例如
self.h += int(node.h)
在你的情况下。