15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef DeviceMotionData_h 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define DeviceMotionData_h 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "platform/heap/Handle.h" 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink { 325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 33e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class WebDeviceMotionData; 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass DeviceMotionData FINAL : public GarbageCollected<DeviceMotionData> { 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 3709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci class Acceleration FINAL : public GarbageCollected<DeviceMotionData::Acceleration> { 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) public: 407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static Acceleration* create(bool canProvideX, double x, bool canProvideY, double y, bool canProvideZ, double z); 4109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void trace(Visitor*) { } 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool canProvideX() const { return m_canProvideX; } 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool canProvideY() const { return m_canProvideY; } 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool canProvideZ() const { return m_canProvideZ; } 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double x() const { return m_x; } 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double y() const { return m_y; } 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double z() const { return m_z; } 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) private: 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Acceleration(bool canProvideX, double x, bool canProvideY, double y, bool canProvideZ, double z); 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double m_x; 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double m_y; 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double m_z; 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_canProvideX; 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_canProvideY; 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_canProvideZ; 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci class RotationRate FINAL : public GarbageCollected<DeviceMotionData::RotationRate> { 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) public: 657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static RotationRate* create(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma); 6609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void trace(Visitor*) { } 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool canProvideAlpha() const { return m_canProvideAlpha; } 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool canProvideBeta() const { return m_canProvideBeta; } 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool canProvideGamma() const { return m_canProvideGamma; } 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double alpha() const { return m_alpha; } 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double beta() const { return m_beta; } 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double gamma() const { return m_gamma; } 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) private: 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RotationRate(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma); 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double m_alpha; 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double m_beta; 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double m_gamma; 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_canProvideAlpha; 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_canProvideBeta; 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_canProvideGamma; 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 887242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static DeviceMotionData* create(); 897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static DeviceMotionData* create( 907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Acceleration*, 917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Acceleration* accelerationIncludingGravity, 927242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RotationRate*, 9309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) bool canProvideInterval, 9409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) double interval); 957242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static DeviceMotionData* create(const WebDeviceMotionData&); 9609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void trace(Visitor*); 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) Acceleration* acceleration() const { return m_acceleration.get(); } 9909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) Acceleration* accelerationIncludingGravity() const { return m_accelerationIncludingGravity.get(); } 10009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) RotationRate* rotationRate() const { return m_rotationRate.get(); } 10153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool canProvideInterval() const { return m_canProvideInterval; } 10353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) double interval() const { return m_interval; } 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 105f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) bool canProvideEventData() const; 106f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DeviceMotionData(); 1097242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DeviceMotionData(Acceleration*, Acceleration* accelerationIncludingGravity, RotationRate*, bool canProvideInterval, double interval); 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Member<Acceleration> m_acceleration; 1127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Member<Acceleration> m_accelerationIncludingGravity; 1137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Member<RotationRate> m_rotationRate; 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_canProvideInterval; 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double m_interval; 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 118c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // DeviceMotionData_h 121