Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: sky/sdk/lib/animation/scroll_behavior.dart

Issue 1223153004: Make the drawer, popup menus, dialogs, and settings page scrollable. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 6
7 import 'mechanics.dart'; 7 import 'mechanics.dart';
8 import 'generators.dart'; 8 import 'generators.dart';
9 9
10 const double _kScrollFriction = 0.005; 10 const double _kScrollFriction = 0.005;
11 const double _kOverscrollFriction = 0.075; 11 const double _kOverscrollFriction = 0.075;
12 const double _kBounceSlopeAngle = math.PI / 512.0; // radians 12 const double _kBounceSlopeAngle = math.PI / 512.0; // radians
13 13
14 abstract class ScrollBehavior { 14 abstract class ScrollBehavior {
15 Simulation release(Particle particle) => null; 15 Simulation release(Particle particle) => null;
16 16
17 // Returns the new scroll offset. 17 // Returns the new scroll offset.
18 double applyCurve(double scrollOffset, double scrollDelta); 18 double applyCurve(double scrollOffset, double scrollDelta);
19 } 19 }
20 20
21 class BoundedScrollBehavior extends ScrollBehavior { 21 class BoundedScrollBehavior extends ScrollBehavior {
22 BoundedScrollBehavior({this.minOffset: 0.0, this.maxOffset});
23
22 double minOffset; 24 double minOffset;
23 double maxOffset; 25 double maxOffset;
24 26
25 BoundedScrollBehavior({this.minOffset: 0.0, this.maxOffset});
26
27 double applyCurve(double scrollOffset, double scrollDelta) { 27 double applyCurve(double scrollOffset, double scrollDelta) {
28 double newScrollOffset = scrollOffset + scrollDelta; 28 double newScrollOffset = scrollOffset + scrollDelta;
29 if (minOffset != null) 29 if (minOffset != null)
30 newScrollOffset = math.max(minOffset, newScrollOffset); 30 newScrollOffset = math.max(minOffset, newScrollOffset);
31 if (maxOffset != null) 31 if (maxOffset != null)
32 newScrollOffset = math.min(maxOffset, newScrollOffset); 32 newScrollOffset = math.min(maxOffset, newScrollOffset);
33 return newScrollOffset; 33 return newScrollOffset;
34 } 34 }
35 } 35 }
36 36
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 // reduce the portion of scrollDelta that's applied beyond 0.0. We 106 // reduce the portion of scrollDelta that's applied beyond 0.0. We
107 // do similar things for overscroll in the other direction. 107 // do similar things for overscroll in the other direction.
108 if (newScrollOffset < 0.0) { 108 if (newScrollOffset < 0.0) {
109 newScrollOffset -= (newScrollOffset - math.min(0.0, scrollOffset)) / 2.0; 109 newScrollOffset -= (newScrollOffset - math.min(0.0, scrollOffset)) / 2.0;
110 } else if (newScrollOffset > maxScrollOffset) { 110 } else if (newScrollOffset > maxScrollOffset) {
111 newScrollOffset -= (newScrollOffset - math.max(maxScrollOffset, scrollOffs et)) / 2.0; 111 newScrollOffset -= (newScrollOffset - math.max(maxScrollOffset, scrollOffs et)) / 2.0;
112 } 112 }
113 return newScrollOffset; 113 return newScrollOffset;
114 } 114 }
115 } 115 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698