⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soundbuffer.h

📁 这是一款2d游戏引擎
💻 H
字号:
/*  $Id: soundbuffer.h,v 1.20 2004/01/02 15:42:44 mbn Exp $
**
**  ClanLib Game SDK
**  Copyright (C) 2003  The ClanLib Team
**  For a total list of contributers see the file CREDITS.
**
**  This library is free software; you can redistribute it and/or
**  modify it under the terms of the GNU Lesser General Public
**  License as published by the Free Software Foundation; either
**  version 2.1 of the License, or (at your option) any later version.
**
**  This library is distributed in the hope that it will be useful,
**  but WITHOUT ANY WARRANTY; without even the implied warranty of
**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
**  Lesser General Public License for more details.
**
**  You should have received a copy of the GNU Lesser General Public
**  License along with this library; if not, write to the Free Software
**  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
**
*/

//! clanSound="Audio Mixing"
//! header=sound.h

#ifndef header_soundbuffer
#define header_soundbuffer

#if _MSC_VER > 1000
#pragma once
#endif

#include "soundbuffer_session.h"
#include "../Core/Resources/resource.h"

class CL_ResourceManager;
class CL_SoundOutput;
class CL_SoundProvider;
class CL_SoundBuffer_Session;
class CL_SoundFilter;
class CL_SoundBuffer_Generic;

class CL_SoundBuffer
//: Sample interface in ClanLib.
//- !group=Sound/Audio Mixing!
//- !header=sound.h!
//- <p>The CL_SoundBuffer class represents a sample in ClanLib. It can
//- either be static or streamed. The soundbuffer gets its sample data from
//- a soundprovider, that is passed during construction.</p>
//also: CL_SoundProvider
//also: CL_SoundProvider_Session
//also: CL_SoundBuffer_Session
{
//! Construction:
public:
	//: Construct sound buffer.
	//- <p>A sound buffer can be constructed either as static or
	//- streamed. If the sound buffer is loaded from resources, the
	//- buffer type is determined by the resource option 'stream'
	//- associated with the resource.</p>
	//-
	//- <p>CL_SoundBuffer's internals are reference counted, so the copy
	//- constructor will create a new soundbuffer object which shares
	//- the same buffer as the original one. This means that if the copy
	//- is modified, the original is affected as well.</p>
	//-
	//- <p>If <i>delete_provider</i> is true, the provider will be
	//- deleted when the soundbuffer is deleted.</p>
	
	CL_SoundBuffer();
	
	CL_SoundBuffer(
		const std::string &res_id,
		CL_ResourceManager *manager);

	CL_SoundBuffer(
		CL_SoundProvider *provider,
		bool delete_provider = false);

	CL_SoundBuffer(
		const std::string &filename,
		bool streamed = false,
		const std::string &format = "");

	CL_SoundBuffer(const CL_SoundBuffer &copy);

	virtual ~CL_SoundBuffer();

//! Attributes:
public:
	//: Returns the sound provider to be used for playback.
	CL_SoundProvider *get_sound_provider() const;

	//: Returns the start/default volume used when the buffer is played.
	float get_volume() const;

	//: Returns the default panning position when the buffer is played.
	float get_pan() const;

	//: Returns true if an instance of this soundbuffer is playing
	bool is_playing() const;

//! Operations:
public:
	//: Copy assignment operator.
	CL_SoundBuffer &operator =(const CL_SoundBuffer &copy);

	//: Sets the volume of the sound buffer in a relative measure (0->1)
	//- <p>A value of 0 will effectively mute the sound (although it will
	//- still be sampled), and a value of 1 will set the volume to "max".</p>
	//param new_volume: New volume of sound buffer. 
	void set_volume(float new_volume);

	//: Sets the panning of the sound buffer played in measures from -1 -> 1
	//- <p>Setting the pan with a value of -1 will pan the sound buffer to the
	//- extreme left (left speaker only), 1 will pan the sound buffer to the
	//- extreme right (right speaker only).</p>
	//param new_pan: New pan of the sound buffer played.
	void set_pan(float new_pan);

	//: Adds the sound filter to the sound buffer.
	//param filter: Sound filter to pass sound through.
	//param delete_filter: If true, the filter will be deleted when the sound output is destroyed.
	void add_filter(CL_SoundFilter *filter, bool delete_filter = false);

	//: Remove the sound filter from the sound buffer.
	void remove_filter(CL_SoundFilter *filter);

	//: Stops any sessions playing this soundbuffer
	void stop();

	//: Plays the soundbuffer on the specified soundcard.
	//param output: Sound output to be used - NULL means use the current selected sound output (CL_Sound::get_selected_output().
	//return: The playback session.
	CL_SoundBuffer_Session play(bool looping = false, CL_SoundOutput *output = 0);

	//: Prepares the soundbuffer for playback on the specified soundcard.
	//param output: Sound output to be used - NULL means use the current selected sound output (CL_Sound::get_selected_output().
	//return: The playback session.
	CL_SoundBuffer_Session prepare(bool looping = false, CL_SoundOutput *output = 0);

//! Implementation:
private:
	CL_Resource resource;

	CL_SoundBuffer_Generic *impl;
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -