提交 22b39a9f 编写于 作者: A Adam Barth

Add RenderClip and use it in FixedHeightScrollable

In the future, we might want to extend this class to clip to a configurable
rect in addition to clipping to its bounds.

R=eseidel@chromium.org, ianh@google.com

Review URL: https://codereview.chromium.org/1145263006
上级 c0235079
......@@ -70,14 +70,11 @@ abstract class FixedHeightScrollable extends Scrollable {
}
}
// TODO(abarth): Add a clip.
return new BlockContainer(
children: [
new Transform(
transform: transform,
child: new BlockContainer(children: buildItems(itemNumber, drawCount))
)
]
return new Clip(
child: new Transform(
transform: transform,
child: new BlockContainer(children: buildItems(itemNumber, drawCount))
)
);
}
......
......@@ -352,6 +352,15 @@ abstract class OneChildRenderObjectWrapper extends RenderObjectWrapper {
}
}
class Clip extends OneChildRenderObjectWrapper {
RenderClip root;
Clip({ UINode child, Object key })
: super(child: child, key: key);
RenderClip createNode() => new RenderClip();
}
class Padding extends OneChildRenderObjectWrapper {
RenderPadding root;
final EdgeDims padding;
......
......@@ -215,6 +215,19 @@ class RenderSizedBox extends RenderProxyBox {
}
}
class RenderClip extends RenderProxyBox {
RenderClip({ RenderBox child }) : super(child);
void paint(RenderObjectDisplayList canvas) {
if (child != null) {
canvas.save();
canvas.clipRect(new sky.Rect.fromSize(size));
child.paint(canvas);
canvas.restore();
}
}
}
class RenderPadding extends RenderBox with RenderObjectWithChildMixin<RenderBox> {
RenderPadding({ EdgeDims padding, RenderBox child }) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册