00001 /* 00002 ** ClanLib SDK 00003 ** Copyright (c) 1997-2009 The ClanLib Team 00004 ** 00005 ** This software is provided 'as-is', without any express or implied 00006 ** warranty. In no event will the authors be held liable for any damages 00007 ** arising from the use of this software. 00008 ** 00009 ** Permission is granted to anyone to use this software for any purpose, 00010 ** including commercial applications, and to alter it and redistribute it 00011 ** freely, subject to the following restrictions: 00012 ** 00013 ** 1. The origin of this software must not be misrepresented; you must not 00014 ** claim that you wrote the original software. If you use this software 00015 ** in a product, an acknowledgment in the product documentation would be 00016 ** appreciated but is not required. 00017 ** 2. Altered source versions must be plainly marked as such, and must not be 00018 ** misrepresented as being the original software. 00019 ** 3. This notice may not be removed or altered from any source distribution. 00020 ** 00021 ** Note: Some of the libraries ClanLib may link to may have additional 00022 ** requirements or restrictions. 00023 ** 00024 ** File Author(s): 00025 ** 00026 ** Magnus Norddahl 00027 */ 00028 00031 00032 #pragma once 00033 00034 #include "api_sound.h" 00035 #include "../Core/Text/string_types.h" 00036 #include "../Core/System/sharedptr.h" 00037 #include "../Core/System/weakptr.h" 00038 00039 class CL_SoundFilter; 00040 class CL_SoundBuffer; 00041 class CL_SoundOutput_Description; 00042 class CL_SoundOutput_Impl; 00043 00049 class CL_API_SOUND CL_SoundOutput 00050 { 00053 00054 public: 00056 CL_SoundOutput(); 00057 00062 CL_SoundOutput(int mixing_frequency, int latency = 50); 00063 00067 CL_SoundOutput(const CL_SoundOutput_Description &desc); 00068 00072 CL_SoundOutput(const CL_SoundOutput ©); 00073 00074 virtual ~CL_SoundOutput(); 00075 00079 00080 public: 00082 const CL_String8 &get_name() const; 00083 00085 int get_mixing_frequency() const; 00086 00088 int get_mixing_latency() const; 00089 00091 float get_global_volume() const; 00092 00094 float get_global_pan() const; 00095 00099 00100 public: 00102 void stop_all(); 00103 00105 void set_global_volume(float volume); 00106 00108 void set_global_pan(float pan); 00109 00113 void add_filter(CL_SoundFilter &filter); 00114 00116 void remove_filter(CL_SoundFilter &filter); 00117 00121 00122 private: 00123 00127 CL_SoundOutput(const CL_WeakPtr<CL_SoundOutput_Impl> impl); 00128 00129 CL_SharedPtr<CL_SoundOutput_Impl> impl; 00130 00131 friend class CL_SoundBuffer; 00132 friend class CL_Sound; 00133 friend class CL_SoundBuffer_Session; 00135 }; 00136
1.4.6