mirror of
https://github.com/flutter/flutter.git
synced 2026-02-11 13:22:46 +08:00
* Manually fix every use of Point.x and Point.y
Some of these were moved to dx/dy, but not all.
* Manually convert uses of the old gradient API
* Remove old reference to Point.
* Mechanical changes
I applied the following at the root of the Flutter repository:
git ls-files -z | xargs -0 sed -i 's/\bPoint[.]origin\b/Offset.zero/g'
git ls-files -z | xargs -0 sed -i 's/\bPoint[.]lerp\b/Offset.lerp/g'
git ls-files -z | xargs -0 sed -i 's/\bnew Point\b/new Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bconst Point\b/const Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bstatic Point /static Offset /g'
git ls-files -z | xargs -0 sed -i 's/\bfinal Point /final Offset /g'
git ls-files -z | xargs -0 sed -i 's/^\( *\)Point /\1Offset /g'
git ls-files -z | xargs -0 sed -i 's/ui[.]Point\b/ui.Offset/g'
git ls-files -z | xargs -0 sed -i 's/(Point\b/(Offset/g'
git ls-files -z | xargs -0 sed -i 's/\([[{,]\) Point\b/\1 Offset/g'
git ls-files -z | xargs -0 sed -i 's/@required Point\b/@required Offset/g'
git ls-files -z | xargs -0 sed -i 's/<Point>/<Offset>/g'
git ls-files -z | xargs -0 sed -i 's/[.]toOffset()//g'
git ls-files -z | xargs -0 sed -i 's/[.]toPoint()//g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point, /show /g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point;/show Offset;/g'
* Mechanical changes - dartdocs
I applied the following at the root of the Flutter repository:
git ls-files -z | xargs -0 sed -i 's/\ba \[Point\]/an [Offset]/g'
git ls-files -z | xargs -0 sed -i 's/\[Point\]/[Offset]/g'
* Further improvements and a test
* Fix minor errors from rebasing...
* Roll engine
506 lines
25 KiB
Dart
506 lines
25 KiB
Dart
// 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 'package:flutter/rendering.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import 'rendering_tester.dart';
|
|
|
|
void main() {
|
|
test('RenderViewport basic test - no children', () {
|
|
final RenderViewport root = new RenderViewport(
|
|
offset: new ViewportOffset.zero(),
|
|
);
|
|
layout(root);
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
});
|
|
|
|
test('RenderViewport basic test - down', () {
|
|
RenderBox a, b, c, d, e;
|
|
final RenderViewport root = new RenderViewport(
|
|
offset: new ViewportOffset.zero(),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: a = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: b = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: c = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: d = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: e = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
],
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 400.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 400.0));
|
|
expect(b.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 800.0));
|
|
expect(c.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 1000.0));
|
|
expect(d.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 1000.0));
|
|
expect(e.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 1000.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(200.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -200.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 200.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(600.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -600.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -200.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 200.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -900.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -500.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -100.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 300.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
|
|
final HitTestResult result = new HitTestResult();
|
|
root.hitTest(result, position: const Offset(130.0, 150.0));
|
|
expect(result.path.first.target, equals(c));
|
|
});
|
|
|
|
test('RenderViewport basic test - up', () {
|
|
RenderBox a, b, c, d, e;
|
|
final RenderViewport root = new RenderViewport(
|
|
axisDirection: AxisDirection.up,
|
|
offset: new ViewportOffset.zero(),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: a = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: b = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: c = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: d = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: e = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
],
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 200.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -200.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(200.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 400.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(600.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 800.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 400.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 1100.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 700.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 300.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -100.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
|
|
final HitTestResult result = new HitTestResult();
|
|
root.hitTest(result, position: const Offset(150.0, 350.0));
|
|
expect(result.path.first.target, equals(c));
|
|
});
|
|
|
|
test('RenderViewport basic test - right', () {
|
|
RenderBox a, b, c, d, e;
|
|
final RenderViewport root = new RenderViewport(
|
|
axisDirection: AxisDirection.right,
|
|
offset: new ViewportOffset.zero(),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: a = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: b = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: c = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: d = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: e = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
],
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(400.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(200.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(-200.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(200.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(600.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(600.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(-600.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(-200.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(200.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(600.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(-900.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(-500.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(-100.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(300.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(700.0, 0.0));
|
|
|
|
final HitTestResult result = new HitTestResult();
|
|
root.hitTest(result, position: const Offset(150.0, 450.0));
|
|
expect(result.path.first.target, equals(c));
|
|
});
|
|
|
|
test('RenderViewport basic test - left', () {
|
|
RenderBox a, b, c, d, e;
|
|
final RenderViewport root = new RenderViewport(
|
|
axisDirection: AxisDirection.left,
|
|
offset: new ViewportOffset.zero(),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: a = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: b = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: c = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: d = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: e = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
],
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(400.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(200.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(600.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(200.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(-200.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(600.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(1000.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(600.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(200.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(-200.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(1300.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(900.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(500.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(100.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(-300.0, 0.0));
|
|
|
|
final HitTestResult result = new HitTestResult();
|
|
root.hitTest(result, position: const Offset(550.0, 150.0));
|
|
expect(result.path.first.target, equals(c));
|
|
});
|
|
|
|
// TODO(ianh): test anchor
|
|
// TODO(ianh): test center
|
|
// TODO(ianh): test semantics
|
|
|
|
test('RenderShrinkWrappingViewport basic test - no children', () {
|
|
final RenderShrinkWrappingViewport root = new RenderShrinkWrappingViewport(
|
|
offset: new ViewportOffset.zero(),
|
|
);
|
|
layout(root);
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
});
|
|
|
|
test('RenderShrinkWrappingViewport basic test - down', () {
|
|
RenderBox a, b, c, d, e;
|
|
final RenderShrinkWrappingViewport root = new RenderShrinkWrappingViewport(
|
|
offset: new ViewportOffset.zero(),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: a = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: b = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: c = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: d = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: e = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
],
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 400.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 400.0));
|
|
expect(b.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 800.0));
|
|
expect(c.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 1000.0));
|
|
expect(d.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 1000.0));
|
|
expect(e.localToGlobal(const Offset(800.0, 400.0)), const Offset(800.0, 1000.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(200.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -200.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 200.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(600.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -600.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -200.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 200.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -900.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -500.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -100.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 300.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 600.0));
|
|
|
|
final HitTestResult result = new HitTestResult();
|
|
root.hitTest(result, position: const Offset(130.0, 150.0));
|
|
expect(result.path.first.target, equals(c));
|
|
});
|
|
|
|
test('RenderShrinkWrappingViewport basic test - up', () {
|
|
RenderBox a, b, c, d, e;
|
|
final RenderShrinkWrappingViewport root = new RenderShrinkWrappingViewport(
|
|
axisDirection: AxisDirection.up,
|
|
offset: new ViewportOffset.zero(),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: a = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: b = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: c = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: d = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
new RenderSliverToBoxAdapter(child: e = new RenderSizedBox(const Size(100.0, 400.0))),
|
|
],
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 200.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -200.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(200.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 400.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(600.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 800.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 400.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 1100.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 700.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 300.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -100.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, -400.0));
|
|
|
|
final HitTestResult result = new HitTestResult();
|
|
root.hitTest(result, position: const Offset(150.0, 350.0));
|
|
expect(result.path.first.target, equals(c));
|
|
});
|
|
|
|
test('RenderShrinkWrappingViewport basic test - right', () {
|
|
RenderBox a, b, c, d, e;
|
|
final RenderShrinkWrappingViewport root = new RenderShrinkWrappingViewport(
|
|
axisDirection: AxisDirection.right,
|
|
offset: new ViewportOffset.zero(),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: a = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: b = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: c = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: d = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: e = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
],
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(400.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(200.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(-200.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(200.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(600.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(600.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(-600.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(-200.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(200.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(600.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(800.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(-900.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(-500.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(-100.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(300.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(700.0, 0.0));
|
|
|
|
final HitTestResult result = new HitTestResult();
|
|
root.hitTest(result, position: const Offset(150.0, 450.0));
|
|
expect(result.path.first.target, equals(c));
|
|
});
|
|
|
|
test('RenderShrinkWrappingViewport basic test - left', () {
|
|
RenderBox a, b, c, d, e;
|
|
final RenderShrinkWrappingViewport root = new RenderShrinkWrappingViewport(
|
|
axisDirection: AxisDirection.left,
|
|
offset: new ViewportOffset.zero(),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: a = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: b = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: c = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: d = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: e = new RenderSizedBox(const Size(400.0, 100.0))),
|
|
],
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(400.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(0.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(200.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(600.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(200.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(-200.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(600.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(1000.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(600.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(200.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(-200.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(-400.0, 0.0));
|
|
|
|
root.offset = new ViewportOffset.fixed(900.0);
|
|
pumpFrame();
|
|
expect(a.localToGlobal(const Offset(0.0, 0.0)), const Offset(1300.0, 0.0));
|
|
expect(b.localToGlobal(const Offset(0.0, 0.0)), const Offset(900.0, 0.0));
|
|
expect(c.localToGlobal(const Offset(0.0, 0.0)), const Offset(500.0, 0.0));
|
|
expect(d.localToGlobal(const Offset(0.0, 0.0)), const Offset(100.0, 0.0));
|
|
expect(e.localToGlobal(const Offset(0.0, 0.0)), const Offset(-300.0, 0.0));
|
|
|
|
final HitTestResult result = new HitTestResult();
|
|
root.hitTest(result, position: const Offset(550.0, 150.0));
|
|
expect(result.path.first.target, equals(c));
|
|
});
|
|
|
|
test('RenderShrinkWrappingViewport shrinkwrap test - 1 child', () {
|
|
RenderBox child;
|
|
final RenderBox root = new RenderPositionedBox(
|
|
child: child = new RenderShrinkWrappingViewport(
|
|
axisDirection: AxisDirection.left,
|
|
offset: new ViewportOffset.fixed(200.0),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: new RenderSizedBox(const Size(400.0, 100.0))),
|
|
],
|
|
),
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
expect(child.size.width, equals(400.0));
|
|
expect(child.size.height, equals(600.0));
|
|
});
|
|
|
|
test('RenderShrinkWrappingViewport shrinkwrap test - 2 children', () {
|
|
RenderBox child;
|
|
final RenderBox root = new RenderPositionedBox(
|
|
child: child = new RenderShrinkWrappingViewport(
|
|
axisDirection: AxisDirection.right,
|
|
offset: new ViewportOffset.fixed(200.0),
|
|
children: <RenderSliver>[
|
|
new RenderSliverToBoxAdapter(child: new RenderSizedBox(const Size(300.0, 100.0))),
|
|
new RenderSliverToBoxAdapter(child: new RenderSizedBox(const Size(150.0, 100.0))),
|
|
],
|
|
),
|
|
);
|
|
layout(root);
|
|
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
expect(child.size.width, equals(450.0));
|
|
expect(child.size.height, equals(600.0));
|
|
});
|
|
}
|