2

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

    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. 子节点被布置在它们各自的前一个节点之下,即节点二将被放置在y=10.5。在渲染时10.5变为11. 第二个节点现在是 aty=11并且 has h=11,即它的底边是 at 22,不是21。(见下图演示)

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

在此处输入图像描述


编辑

我刚刚意识到,即使只有四舍五入也不能解决它。第二个节点的底边现在位于20,但21应该是正确的。

在此处输入图像描述

4

1 回答 1

3

所以内部表示是浮动的,实际布局是像素。必须有某种四舍五入。然后在添加之前进行相同的舍入操作,例如

self.h += int(node.h)

在你的情况下。

于 2013-01-11T17:28:22.800 回答