• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution.
13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef AudioListener_h
30 #define AudioListener_h
31 
32 #include "FloatPoint3D.h"
33 #include <wtf/PassRefPtr.h>
34 #include <wtf/RefCounted.h>
35 
36 namespace WebCore {
37 
38 // AudioListener maintains the state of the listener in the audio scene as defined in the OpenAL specification.
39 
40 class AudioListener : public RefCounted<AudioListener> {
41 public:
create()42     static PassRefPtr<AudioListener> create()
43     {
44         return adoptRef(new AudioListener());
45     }
46 
47     // Position
setPosition(double x,double y,double z)48     void setPosition(double x, double y, double z) { setPosition(FloatPoint3D(x, y, z)); }
setPosition(const FloatPoint3D & position)49     void setPosition(const FloatPoint3D &position) { m_position = position; }
position()50     const FloatPoint3D& position() const { return m_position; }
51 
52     // Orientation
setOrientation(double x,double y,double z,double upX,double upY,double upZ)53     void setOrientation(double x, double y, double z, double upX, double upY, double upZ)
54     {
55         setOrientation(FloatPoint3D(x, y, z));
56         setUpVector(FloatPoint3D(upX, upY, upZ));
57     }
setOrientation(const FloatPoint3D & orientation)58     void setOrientation(const FloatPoint3D &orientation) { m_orientation = orientation; }
orientation()59     const FloatPoint3D& orientation() const { return m_orientation; }
60 
61     // Up-vector
setUpVector(const FloatPoint3D & upVector)62     void setUpVector(const FloatPoint3D &upVector) { m_upVector = upVector; }
upVector()63     const FloatPoint3D& upVector() const { return m_upVector; }
64 
65     // Velocity
setVelocity(double x,double y,double z)66     void setVelocity(double x, double y, double z) { setVelocity(FloatPoint3D(x, y, z)); }
setVelocity(const FloatPoint3D & velocity)67     void setVelocity(const FloatPoint3D &velocity) { m_velocity = velocity; }
velocity()68     const FloatPoint3D& velocity() const { return m_velocity; }
69 
70     // Doppler factor
setDopplerFactor(double dopplerFactor)71     void setDopplerFactor(double dopplerFactor) { m_dopplerFactor = dopplerFactor; }
dopplerFactor()72     double dopplerFactor() const { return m_dopplerFactor; }
73 
74     // Speed of sound
setSpeedOfSound(double speedOfSound)75     void setSpeedOfSound(double speedOfSound) { m_speedOfSound = speedOfSound; }
speedOfSound()76     double speedOfSound() const { return m_speedOfSound; }
77 
78 private:
79     AudioListener();
80 
81     // Position / Orientation
82     FloatPoint3D m_position;
83     FloatPoint3D m_orientation;
84     FloatPoint3D m_upVector;
85 
86     FloatPoint3D m_velocity;
87 
88     double m_dopplerFactor;
89     double m_speedOfSound;
90 };
91 
92 } // WebCore
93 
94 #endif // AudioListener_h
95