OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 import 'dart:math' as math; | 5 import 'dart:math' as math; |
6 import 'dart:sky' as sky; | 6 import 'dart:sky' as sky; |
7 import 'object.dart'; | 7 import 'object.dart'; |
8 import '../painting/box_painter.dart'; | 8 import '../painting/box_painter.dart'; |
9 import 'package:vector_math/vector_math.dart'; | 9 import 'package:vector_math/vector_math.dart'; |
10 import 'package:sky/framework/net/image_cache.dart' as image_cache; | 10 import 'package:sky/framework/net/image_cache.dart' as image_cache; |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 maxWidth: maxWidth, | 127 maxWidth: maxWidth, |
128 minHeight: minHeight, | 128 minHeight: minHeight, |
129 maxHeight: math.min(maxHeight, height)); | 129 maxHeight: math.min(maxHeight, height)); |
130 } | 130 } |
131 | 131 |
132 final double minWidth; | 132 final double minWidth; |
133 final double maxWidth; | 133 final double maxWidth; |
134 final double minHeight; | 134 final double minHeight; |
135 final double maxHeight; | 135 final double maxHeight; |
136 | 136 |
137 static double _clamp({double min: 0.0, double value: 0.0, double max: double.I
NFINITY}) { | |
138 assert(min != null); | |
139 assert(value != null); | |
140 assert(max != null); | |
141 return math.max(min, math.min(max, value)); | |
142 } | |
143 | |
144 double constrainWidth(double width) { | 137 double constrainWidth(double width) { |
145 return _clamp(min: minWidth, max: maxWidth, value: width); | 138 return clamp(min: minWidth, max: maxWidth, value: width); |
146 } | 139 } |
147 | 140 |
148 double constrainHeight(double height) { | 141 double constrainHeight(double height) { |
149 return _clamp(min: minHeight, max: maxHeight, value: height); | 142 return clamp(min: minHeight, max: maxHeight, value: height); |
150 } | 143 } |
151 | 144 |
152 Size constrain(Size size) { | 145 Size constrain(Size size) { |
153 return new Size(constrainWidth(size.width), constrainHeight(size.height)); | 146 return new Size(constrainWidth(size.width), constrainHeight(size.height)); |
154 } | 147 } |
155 | 148 |
156 bool get isInfinite => maxWidth >= double.INFINITY || maxHeight >= double.INFI
NITY; | 149 bool get isInfinite => maxWidth >= double.INFINITY || maxHeight >= double.INFI
NITY; |
157 | 150 |
158 int get hashCode { | 151 int get hashCode { |
159 int value = 373; | 152 int value = 373; |
(...skipping 23 matching lines...) Expand all Loading... |
183 String toString() => 'position=$position'; | 176 String toString() => 'position=$position'; |
184 } | 177 } |
185 | 178 |
186 abstract class RenderBox extends RenderObject { | 179 abstract class RenderBox extends RenderObject { |
187 | 180 |
188 void setParentData(RenderObject child) { | 181 void setParentData(RenderObject child) { |
189 if (child.parentData is! BoxParentData) | 182 if (child.parentData is! BoxParentData) |
190 child.parentData = new BoxParentData(); | 183 child.parentData = new BoxParentData(); |
191 } | 184 } |
192 | 185 |
193 // getMinIntrinsicWidth() should return the minimum width that this box could | 186 // getMinIntrinsicWidth() should return the minimum width that this box could |
194 // be without failing to render its contents within itself. | 187 // be without failing to render its contents within itself. |
195 double getMinIntrinsicWidth(BoxConstraints constraints) { | 188 double getMinIntrinsicWidth(BoxConstraints constraints) { |
196 return constraints.constrainWidth(0.0); | 189 return constraints.constrainWidth(0.0); |
197 } | 190 } |
198 | 191 |
199 // getMaxIntrinsicWidth() should return the smallest width beyond which | 192 // getMaxIntrinsicWidth() should return the smallest width beyond which |
200 // increasing the width never decreases the height. | 193 // increasing the width never decreases the height. |
201 double getMaxIntrinsicWidth(BoxConstraints constraints) { | 194 double getMaxIntrinsicWidth(BoxConstraints constraints) { |
202 return constraints.constrainWidth(0.0); | 195 return constraints.constrainWidth(0.0); |
203 } | 196 } |
204 | 197 |
205 // getMinIntrinsicHeight() should return the minimum height that this box coul
d | 198 // getMinIntrinsicHeight() should return the minimum height that this box coul
d |
206 // be without failing to render its contents within itself. | 199 // be without failing to render its contents within itself. |
207 double getMinIntrinsicHeight(BoxConstraints constraints) { | 200 double getMinIntrinsicHeight(BoxConstraints constraints) { |
208 return constraints.constrainHeight(0.0); | 201 return constraints.constrainHeight(0.0); |
209 } | 202 } |
210 | 203 |
211 // getMaxIntrinsicHeight should return the smallest height beyond which | 204 // getMaxIntrinsicHeight should return the smallest height beyond which |
212 // increasing the height never decreases the width. | 205 // increasing the height never decreases the width. |
213 // If the layout algorithm used is width-in-height-out, i.e. the height | 206 // If the layout algorithm used is width-in-height-out, i.e. the height |
214 // depends on the width and not vice versa, then this will return the same | 207 // depends on the width and not vice versa, then this will return the same |
215 // as getMinIntrinsicHeight(). | 208 // as getMinIntrinsicHeight(). |
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 | 944 |
952 void defaultPaint(RenderObjectDisplayList canvas) { | 945 void defaultPaint(RenderObjectDisplayList canvas) { |
953 RenderBox child = firstChild; | 946 RenderBox child = firstChild; |
954 while (child != null) { | 947 while (child != null) { |
955 assert(child.parentData is ParentDataType); | 948 assert(child.parentData is ParentDataType); |
956 canvas.paintChild(child, child.parentData.position); | 949 canvas.paintChild(child, child.parentData.position); |
957 child = child.parentData.nextSibling; | 950 child = child.parentData.nextSibling; |
958 } | 951 } |
959 } | 952 } |
960 } | 953 } |
OLD | NEW |