未验证 提交 c1231527 编写于 作者: D Dan Field 提交者: GitHub

Make Rect and RRect use 64 bit doubles, and make them const-able (#8565)

* Make Rect and RRect 64bit and const-able
上级 934772dd
此差异已折叠。
......@@ -23,13 +23,13 @@ part of ui;
bool _rectIsValid(Rect rect) {
assert(rect != null, 'Rect argument was null.');
assert(!rect._value.any((double value) => value.isNaN), 'Rect argument contained a NaN value.');
assert(!rect.hasNaN, 'Rect argument contained a NaN value.');
return true;
}
bool _rrectIsValid(RRect rrect) {
assert(rrect != null, 'RRect argument was null.');
assert(!rrect._value.any((double value) => value.isNaN), 'RRect argument contained a NaN value.');
assert(!rrect.hasNaN, 'RRect argument contained a NaN value.');
return true;
}
......
......@@ -98,7 +98,7 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
EngineLayer pushClipRRect(RRect rrect, {Clip clipBehavior = Clip.antiAlias}) {
assert(clipBehavior != null);
assert(clipBehavior != Clip.none);
return _pushClipRRect(rrect._value, clipBehavior.index);
return _pushClipRRect(rrect._value32, clipBehavior.index);
}
EngineLayer _pushClipRRect(Float32List rrect, int clipBehavior) native 'SceneBuilder_pushClipRRect';
......
此差异已折叠。
......@@ -23,13 +23,13 @@ part of dart.ui;
bool _rectIsValid(Rect rect) {
assert(rect != null, 'Rect argument was null.');
assert(!rect._value.any((double value) => value.isNaN), 'Rect argument contained a NaN value.');
assert(!rect.hasNaN, 'Rect argument contained a NaN value.');
return true;
}
bool _rrectIsValid(RRect rrect) {
assert(rrect != null, 'RRect argument was null.');
assert(!rrect._value.any((double value) => value.isNaN), 'RRect argument contained a NaN value.');
assert(!rrect.hasNaN, 'RRect argument contained a NaN value.');
return true;
}
......@@ -2028,7 +2028,7 @@ class Path extends NativeFieldWrapperClass2 {
/// argument.
void addRRect(RRect rrect) {
assert(_rrectIsValid(rrect));
_addRRect(rrect._value);
_addRRect(rrect._value32);
}
void _addRRect(Float32List rrect) native 'Path_addRRect';
......@@ -3259,7 +3259,7 @@ class Canvas extends NativeFieldWrapperClass2 {
void clipRRect(RRect rrect, {bool doAntiAlias = true}) {
assert(_rrectIsValid(rrect));
assert(doAntiAlias != null);
_clipRRect(rrect._value, doAntiAlias);
_clipRRect(rrect._value32, doAntiAlias);
}
void _clipRRect(Float32List rrect, bool doAntiAlias) native 'Canvas_clipRRect';
......@@ -3336,7 +3336,7 @@ class Canvas extends NativeFieldWrapperClass2 {
void drawRRect(RRect rrect, Paint paint) {
assert(_rrectIsValid(rrect));
assert(paint != null);
_drawRRect(rrect._value, paint._objects, paint._data);
_drawRRect(rrect._value32, paint._objects, paint._data);
}
void _drawRRect(Float32List rrect,
List<dynamic> paintObjects,
......@@ -3351,7 +3351,7 @@ class Canvas extends NativeFieldWrapperClass2 {
assert(_rrectIsValid(outer));
assert(_rrectIsValid(inner));
assert(paint != null);
_drawDRRect(outer._value, inner._value, paint._objects, paint._data);
_drawDRRect(outer._value32, inner._value32, paint._objects, paint._data);
}
void _drawDRRect(Float32List outer,
Float32List inner,
......@@ -3651,7 +3651,7 @@ class Canvas extends NativeFieldWrapperClass2 {
}
final Int32List colorBuffer = colors.isEmpty ? null : _encodeColorList(colors);
final Float32List cullRectBuffer = cullRect?._value;
final Float32List cullRectBuffer = cullRect?._value32;
_drawAtlas(
paint._objects, paint._data, atlas, rstTransformBuffer, rectBuffer,
......@@ -3698,7 +3698,7 @@ class Canvas extends NativeFieldWrapperClass2 {
_drawAtlas(
paint._objects, paint._data, atlas, rstTransforms, rects,
colors, blendMode.index, cullRect?._value
colors, blendMode.index, cullRect?._value32
);
}
......
......@@ -8,7 +8,7 @@ import 'package:test/test.dart';
void main() {
test('rect accessors', () {
final Rect r = Rect.fromLTRB(1.0, 3.0, 5.0, 7.0);
const Rect r = Rect.fromLTRB(1.0, 3.0, 5.0, 7.0);
expect(r.left, equals(1.0));
expect(r.top, equals(3.0));
expect(r.right, equals(5.0));
......@@ -16,7 +16,7 @@ void main() {
});
test('rect created by width and height', () {
final Rect r = Rect.fromLTWH(1.0, 3.0, 5.0, 7.0);
const Rect r = Rect.fromLTWH(1.0, 3.0, 5.0, 7.0);
expect(r.left, equals(1.0));
expect(r.top, equals(3.0));
expect(r.right, equals(6.0));
......@@ -26,8 +26,8 @@ void main() {
});
test('rect intersection', () {
final Rect r1 = Rect.fromLTRB(0.0, 0.0, 100.0, 100.0);
final Rect r2 = Rect.fromLTRB(50.0, 50.0, 200.0, 200.0);
const Rect r1 = Rect.fromLTRB(0.0, 0.0, 100.0, 100.0);
const Rect r2 = Rect.fromLTRB(50.0, 50.0, 200.0, 200.0);
final Rect r3 = r1.intersect(r2);
expect(r3.left, equals(50.0));
expect(r3.top, equals(50.0));
......@@ -38,8 +38,8 @@ void main() {
});
test('rect expandToInclude overlapping rects', () {
final Rect r1 = Rect.fromLTRB(0.0, 0.0, 100.0, 100.0);
final Rect r2 = Rect.fromLTRB(50.0, 50.0, 200.0, 200.0);
const Rect r1 = Rect.fromLTRB(0.0, 0.0, 100.0, 100.0);
const Rect r2 = Rect.fromLTRB(50.0, 50.0, 200.0, 200.0);
final Rect r3 = r1.expandToInclude(r2);
expect(r3.left, equals(0.0));
expect(r3.top, equals(0.0));
......@@ -50,8 +50,8 @@ void main() {
});
test('rect expandToInclude crossing rects', () {
final Rect r1 = Rect.fromLTRB(50.0, 0.0, 50.0, 200.0);
final Rect r2 = Rect.fromLTRB(0.0, 50.0, 200.0, 50.0);
const Rect r1 = Rect.fromLTRB(50.0, 0.0, 50.0, 200.0);
const Rect r2 = Rect.fromLTRB(0.0, 50.0, 200.0, 50.0);
final Rect r3 = r1.expandToInclude(r2);
expect(r3.left, equals(0.0));
expect(r3.top, equals(0.0));
......@@ -70,7 +70,7 @@ void main() {
});
test('rounded rect created from rect and radii', () {
final Rect baseRect = Rect.fromLTWH(1.0, 3.0, 5.0, 7.0);
const Rect baseRect = Rect.fromLTWH(1.0, 3.0, 5.0, 7.0);
final RRect r = RRect.fromRectXY(baseRect, 1.0, 1.0);
expect(r.left, equals(1.0));
expect(r.top, equals(3.0));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册