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

Side by Side Diff: LayoutTests/fast/workers/resources/snap.js

Issue 474683003: Not for review - Rebase of crrev.com/62833003 Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: . Created 6 years, 1 month 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 (function(scope) {
2 'use strict';
3
4 var tokens = null;
5 var scroll = null;
6 var previous = 0;
7 var consecutiveSnappableFrames = 0;
8
9 function getClosestSnapPoint(oldscroll, delta) {
10 var diff = oldscroll % delta;
11 if (diff >= delta / 2) {
12 return oldscroll + (delta - diff);
13 }
14
15 return oldscroll - diff;
16 }
17
18 function getVelocity(distance) {
19 if (distance === 0)
20 return 0;
21 var sign = distance > 0 ? 1 : -1;
22
23 return distance / 5;
24 //return Math.log(distance + 1);
25 //return sign * (Math.log(Math.abs(distance)+0.0025)+2);
26 }
27
28 function shouldSnap(previous, current) {
29 var pixelThreshold = 0;
30 //var pixelThreshold = 10;
31 var frameThreshold = 10;
32
33 if (Math.abs(current - previous) <= pixelThreshold) {
34 consecutiveSnappableFrames++;
35 } else {
36 consecutiveSnappableFrames = 0;
37 }
38
39 return consecutiveSnappableFrames >= frameThreshold;
40 }
41
42 // An extremely cheesy animation.
43 function tick(context) {
44 var seconds = context.timestamp / 1000.0;
45 var oldscroll = context.getScalar(scroll);
46 var newscrollposition = oldscroll;
47
48 if (shouldSnap(previous, oldscroll)) {
49 console.log('good');
50 var snap = getClosestSnapPoint(oldscroll, 400);
51 var distance = snap - oldscroll;
52 var velocity = getVelocity(distance);
53 newscrollposition += velocity;
54 console.log("snap " + snap + ", distance " + distance + ", velocity " + velocity);
55
56 context.setScalar(scroll, newscrollposition);
57 } else {
58 console.log('bad ' + previous + ' ' + oldscroll);
59 }
60
61 previous = newscrollposition;
62 scope.teleportMessage(context, tick);
63 }
64
65 scope.onmessage = function(e) {
66 tokens = e.data;
67 scroll = tokens[0];
68 var context = new TeleportContext(tokens);
69 scope.teleportMessage(context, tick);
70 };
71
72 })(self);
OLDNEW
« no previous file with comments | « LayoutTests/fast/workers/resources/scrub.js ('k') | LayoutTests/fast/workers/resources/snap-points.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698