浮点布局和舍入

时间:2013-01-11 17:08:27

标签: python layout rendering

我在渲染树中有一个节点,根据它的子节点计算它的高度。允许位置和大小值为浮点值,舍入在渲染时完成。

    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。 (见下图以供演示)

我认为这个问题可以通过舍入舍入(即相邻较低的整数值)来解决,但语义是否正确?

enter image description here


修改

我刚刚意识到,即使是舍入,也只能解决它。第二个节点的下边缘现在位于20,但21是正确的。

enter image description here

1 个答案:

答案 0 :(得分:3)

因此内部表示是浮点数,实际布局是以像素为单位。必须进行某种舍入。然后在添加之前进行相同的舍入操作,例如

self.h += int(node.h)

在你的情况下。