1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/child/fling_curve_configuration.h" 6 7 #include "base/logging.h" 8 #include "content/child/touch_fling_gesture_curve.h" 9 #include "third_party/WebKit/public/platform/WebGestureCurve.h" 10 11 namespace content { 12 13 FlingCurveConfiguration::FlingCurveConfiguration() { } 14 15 FlingCurveConfiguration::~FlingCurveConfiguration() { } 16 17 void FlingCurveConfiguration::SetCurveParameters( 18 const std::vector<float>& new_touchpad, 19 const std::vector<float>& new_touchscreen) { 20 DCHECK(new_touchpad.size() >= 3); 21 DCHECK(new_touchscreen.size() >= 3); 22 base::AutoLock scoped_lock(lock_); 23 touchpad_coefs_ = new_touchpad; 24 touchscreen_coefs_ = new_touchscreen; 25 } 26 27 blink::WebGestureCurve* FlingCurveConfiguration::CreateCore( 28 const std::vector<float>& coefs, 29 const blink::WebFloatPoint& velocity, 30 const blink::WebSize& cumulativeScroll) { 31 float p0, p1, p2; 32 33 { 34 base::AutoLock scoped_lock(lock_); 35 p0 = coefs[0]; 36 p1 = coefs[1]; 37 p2 = coefs[2]; 38 } 39 40 return TouchFlingGestureCurve::Create(velocity, p0, p1, p2, 41 cumulativeScroll); 42 } 43 44 blink::WebGestureCurve* FlingCurveConfiguration::CreateForTouchPad( 45 const blink::WebFloatPoint& velocity, 46 const blink::WebSize& cumulativeScroll) { 47 return CreateCore(touchpad_coefs_, velocity, cumulativeScroll); 48 } 49 50 blink::WebGestureCurve* FlingCurveConfiguration::CreateForTouchScreen( 51 const blink::WebFloatPoint& velocity, 52 const blink::WebSize& cumulativeScroll) { 53 return CreateCore(touchscreen_coefs_, velocity, cumulativeScroll); 54 } 55 56 } // namespace content 57