1/*
2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *  * Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 *  * Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include "config.h"
27#include "DeviceOrientationData.h"
28
29namespace WebCore {
30
31PassRefPtr<DeviceOrientationData> DeviceOrientationData::create()
32{
33    return adoptRef(new DeviceOrientationData);
34}
35
36#if PLATFORM(IOS)
37// FIXME: We should reconcile the iOS and OpenSource differences.
38PassRefPtr<DeviceOrientationData> DeviceOrientationData::create(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideCompassHeading, double compassHeading, bool canProvideCompassAccuracy, double compassAccuracy)
39{
40    return adoptRef(new DeviceOrientationData(canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma, canProvideCompassHeading, compassHeading, canProvideCompassAccuracy, compassAccuracy));
41}
42#else
43PassRefPtr<DeviceOrientationData> DeviceOrientationData::create(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideAbsolute, bool absolute)
44{
45    return adoptRef(new DeviceOrientationData(canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma, canProvideAbsolute, absolute));
46}
47#endif
48
49
50DeviceOrientationData::DeviceOrientationData()
51    : m_canProvideAlpha(false)
52    , m_canProvideBeta(false)
53    , m_canProvideGamma(false)
54#if !PLATFORM(IOS)
55    , m_canProvideAbsolute(false)
56#endif
57    , m_alpha(0)
58    , m_beta(0)
59    , m_gamma(0)
60#if PLATFORM(IOS)
61    , m_canProvideCompassHeading(false)
62    , m_canProvideCompassAccuracy(false)
63#else
64    , m_absolute(false)
65#endif
66{
67}
68
69#if PLATFORM(IOS)
70DeviceOrientationData::DeviceOrientationData(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideCompassHeading, double compassHeading, bool canProvideCompassAccuracy, double compassAccuracy)
71    : m_canProvideAlpha(canProvideAlpha)
72    , m_canProvideBeta(canProvideBeta)
73    , m_canProvideGamma(canProvideGamma)
74    , m_alpha(alpha)
75    , m_beta(beta)
76    , m_gamma(gamma)
77    , m_canProvideCompassHeading(canProvideCompassHeading)
78    , m_canProvideCompassAccuracy(canProvideCompassAccuracy)
79    , m_compassHeading(compassHeading)
80    , m_compassAccuracy(compassAccuracy)
81#else
82DeviceOrientationData::DeviceOrientationData(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma, bool canProvideAbsolute, bool absolute)
83    : m_canProvideAlpha(canProvideAlpha)
84    , m_canProvideBeta(canProvideBeta)
85    , m_canProvideGamma(canProvideGamma)
86    , m_canProvideAbsolute(canProvideAbsolute)
87    , m_alpha(alpha)
88    , m_beta(beta)
89    , m_gamma(gamma)
90    , m_absolute(absolute)
91#endif
92{
93}
94
95double DeviceOrientationData::alpha() const
96{
97    return m_alpha;
98}
99
100double DeviceOrientationData::beta() const
101{
102    return m_beta;
103}
104
105double DeviceOrientationData::gamma() const
106{
107    return m_gamma;
108}
109
110#if !PLATFORM(IOS)
111bool DeviceOrientationData::absolute() const
112{
113    return m_absolute;
114}
115#endif
116
117bool DeviceOrientationData::canProvideAlpha() const
118{
119    return m_canProvideAlpha;
120}
121
122bool DeviceOrientationData::canProvideBeta() const
123{
124    return m_canProvideBeta;
125}
126
127bool DeviceOrientationData::canProvideGamma() const
128{
129    return m_canProvideGamma;
130}
131
132#if PLATFORM(IOS)
133double DeviceOrientationData::compassHeading() const
134{
135    return m_compassHeading;
136}
137
138double DeviceOrientationData::compassAccuracy() const
139{
140    return m_compassAccuracy;
141}
142
143bool DeviceOrientationData::canProvideCompassHeading() const
144{
145    return m_canProvideCompassHeading;
146}
147
148bool DeviceOrientationData::canProvideCompassAccuracy() const
149{
150    return m_canProvideCompassAccuracy;
151}
152#endif
153
154#if !PLATFORM(IOS)
155bool DeviceOrientationData::canProvideAbsolute() const
156{
157    return m_canProvideAbsolute;
158}
159#endif
160
161} // namespace WebCore
162