Index: sky/sdk/lib/framework/rendering/stack.dart |
diff --git a/sky/sdk/lib/framework/rendering/stack.dart b/sky/sdk/lib/framework/rendering/stack.dart |
deleted file mode 100644 |
index ed8377b00e580465a4e43e4f0b472cd29f2ab2ed..0000000000000000000000000000000000000000 |
--- a/sky/sdk/lib/framework/rendering/stack.dart |
+++ /dev/null |
@@ -1,199 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-import 'dart:math' as math; |
- |
-import 'box.dart'; |
-import 'object.dart'; |
- |
-class StackParentData extends BoxParentData with ContainerParentDataMixin<RenderBox> { |
- double top; |
- double right; |
- double bottom; |
- double left; |
- |
- void merge(StackParentData other) { |
- if (other.top != null) |
- top = other.top; |
- if (other.right != null) |
- right = other.right; |
- if (other.bottom != null) |
- bottom = other.bottom; |
- if (other.left != null) |
- left = other.left; |
- super.merge(other); |
- } |
- |
- bool get isPositioned => top != null || right != null || bottom != null || left != null; |
- |
- String toString() => '${super.toString()}; top=$top; right=$right; bottom=$bottom, left=$left'; |
-} |
- |
-class RenderStack extends RenderBox with ContainerRenderObjectMixin<RenderBox, StackParentData>, |
- RenderBoxContainerDefaultsMixin<RenderBox, StackParentData> { |
- RenderStack({ |
- List<RenderBox> children |
- }) { |
- if (children != null) |
- children.forEach((child) { add(child); }); |
- } |
- |
- void setParentData(RenderBox child) { |
- if (child.parentData is! StackParentData) |
- child.parentData = new StackParentData(); |
- } |
- |
- |
- double getMinIntrinsicWidth(BoxConstraints constraints) { |
- double width = constraints.minWidth; |
- RenderBox child = firstChild; |
- while (child != null) { |
- assert(child.parentData is StackParentData); |
- if (!child.parentData.isPositioned) |
- width = math.max(width, child.getMinIntrinsicWidth(constraints)); |
- child = child.parentData.nextSibling; |
- } |
- assert(width == constraints.constrainWidth(width)); |
- return width; |
- } |
- |
- double getMaxIntrinsicWidth(BoxConstraints constraints) { |
- bool hasNonPositionedChildren = false; |
- double width = constraints.minWidth; |
- RenderBox child = firstChild; |
- while (child != null) { |
- assert(child.parentData is StackParentData); |
- if (!child.parentData.isPositioned) { |
- hasNonPositionedChildren = true; |
- width = math.max(width, child.getMaxIntrinsicWidth(constraints)); |
- } |
- child = child.parentData.nextSibling; |
- } |
- if (!hasNonPositionedChildren) |
- return constraints.constrainWidth(double.INFINITY); |
- assert(width == constraints.constrainWidth(width)); |
- return width; |
- } |
- |
- double getMinIntrinsicHeight(BoxConstraints constraints) { |
- double height = constraints.minHeight; |
- RenderBox child = firstChild; |
- while (child != null) { |
- assert(child.parentData is StackParentData); |
- if (!child.parentData.isPositioned) |
- height = math.max(height, child.getMinIntrinsicHeight(constraints)); |
- child = child.parentData.nextSibling; |
- } |
- assert(height == constraints.constrainHeight(height)); |
- return height; |
- } |
- |
- double getMaxIntrinsicHeight(BoxConstraints constraints) { |
- bool hasNonPositionedChildren = false; |
- double height = constraints.minHeight; |
- RenderBox child = firstChild; |
- while (child != null) { |
- assert(child.parentData is StackParentData); |
- if (!child.parentData.isPositioned) { |
- hasNonPositionedChildren = true; |
- height = math.max(height, child.getMaxIntrinsicHeight(constraints)); |
- } |
- child = child.parentData.nextSibling; |
- } |
- if (!hasNonPositionedChildren) |
- return constraints.constrainHeight(double.INFINITY); |
- assert(height == constraints.constrainHeight(height)); |
- return height; |
- } |
- |
- void performLayout() { |
- bool hasNonPositionedChildren = false; |
- |
- double width = 0.0; |
- double height = 0.0; |
- |
- RenderBox child = firstChild; |
- while (child != null) { |
- assert(child.parentData is StackParentData); |
- final StackParentData parentData = child.parentData; |
- |
- if (!parentData.isPositioned) { |
- hasNonPositionedChildren = true; |
- |
- child.layout(constraints, parentUsesSize: true); |
- parentData.position = Point.origin; |
- |
- final Size childSize = child.size; |
- width = math.max(width, childSize.width); |
- height = math.max(height, childSize.height); |
- } |
- |
- child = parentData.nextSibling; |
- } |
- |
- if (hasNonPositionedChildren) |
- size = new Size(width, height); |
- else |
- size = constraints.constrain(Size.infinite); |
- |
- assert(size.width < double.INFINITY); |
- assert(size.height < double.INFINITY); |
- assert(size.width == constraints.constrainWidth(width)); |
- assert(size.height == constraints.constrainHeight(height)); |
- |
- BoxConstraints innerConstraints = new BoxConstraints.loose(size); |
- |
- child = firstChild; |
- while (child != null) { |
- assert(child.parentData is StackParentData); |
- final StackParentData parentData = child.parentData; |
- |
- if (parentData.isPositioned) { |
- BoxConstraints childConstraints = innerConstraints; |
- |
- if (parentData.left != null && parentData.right != null) |
- childConstraints = childConstraints.applyWidth(parentData.right - parentData.left); |
- else if (parentData.left != null) |
- childConstraints = childConstraints.applyMaxWidth(size.width - parentData.left); |
- else if (parentData.right != null) |
- childConstraints = childConstraints.applyMaxWidth(size.width - parentData.right); |
- |
- if (parentData.top != null && parentData.bottom != null) |
- childConstraints = childConstraints.applyHeight(parentData.bottom - parentData.top); |
- else if (parentData.top != null) |
- childConstraints = childConstraints.applyMaxHeight(size.height - parentData.top); |
- else if (parentData.bottom != null) |
- childConstraints = childConstraints.applyMaxHeight(size.width - parentData.bottom); |
- |
- child.layout(childConstraints); |
- |
- double x = 0.0; |
- if (parentData.left != null) |
- x = parentData.left; |
- else if (parentData.right != null) |
- x = size.width - parentData.right - child.size.width; |
- assert(x >= 0.0 && x + child.size.width <= size.width); |
- |
- double y = 0.0; |
- if (parentData.top != null) |
- y = parentData.top; |
- else if (parentData.bottom != null) |
- y = size.height - parentData.bottom - child.size.height; |
- assert(y >= 0.0 && y + child.size.height <= size.height); |
- |
- parentData.position = new Point(x, y); |
- } |
- |
- child = parentData.nextSibling; |
- } |
- } |
- |
- void hitTestChildren(HitTestResult result, { Point position }) { |
- defaultHitTestChildren(result, position: position); |
- } |
- |
- void paint(RenderObjectDisplayList canvas) { |
- defaultPaint(canvas); |
- } |
-} |