Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/audaspace/include/fx/PlaybackManager.h')
-rw-r--r--extern/audaspace/include/fx/PlaybackManager.h156
1 files changed, 156 insertions, 0 deletions
diff --git a/extern/audaspace/include/fx/PlaybackManager.h b/extern/audaspace/include/fx/PlaybackManager.h
new file mode 100644
index 00000000000..f660568b8db
--- /dev/null
+++ b/extern/audaspace/include/fx/PlaybackManager.h
@@ -0,0 +1,156 @@
+/*******************************************************************************
+* Copyright 2015-2016 Juan Francisco Crespo Galán
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+******************************************************************************/
+
+#pragma once
+
+/**
+* @file PlaybackManager.h
+* @ingroup fx
+* The PlaybackManager class.
+*/
+
+#include "PlaybackCategory.h"
+#include "devices/IDevice.h"
+#include "ISound.h"
+
+#include <unordered_map>
+#include <memory>
+
+AUD_NAMESPACE_BEGIN
+
+/**
+* This class allows to control groups of playing sounds easily.
+* The sounds are part of categories.
+*/
+class AUD_API PlaybackManager
+{
+private:
+ /**
+ * Unordered map of categories, each category has different name.
+ */
+ std::unordered_map<unsigned int, std::shared_ptr<PlaybackCategory>> m_categories;
+
+ /**
+ * Device used for playback.
+ */
+ std::shared_ptr<IDevice> m_device;
+
+ /**
+ * The current key used for new categories.
+ */
+ unsigned int m_currentKey;
+
+ // delete copy constructor and operator=
+ PlaybackManager(const PlaybackManager&) = delete;
+ PlaybackManager& operator=(const PlaybackManager&) = delete;
+
+public:
+ /**
+ * Creates a new PlaybackManager.
+ * \param device A shared pointer to the device which will be used for playback.
+ */
+ PlaybackManager(std::shared_ptr<IDevice> device);
+
+ /**
+ * Adds an existent category to the manager and returns a key to access it.
+ * \param category The category to be added.
+ * \return The category key.
+ */
+ unsigned int addCategory(std::shared_ptr<PlaybackCategory> category);
+
+ /**
+ * Adds an existent category to the manager and returns a key to access it.
+ * \param volume The volume of the new category.
+ * \return The category key.
+ */
+ unsigned int addCategory(float volume);
+
+ /**
+ * Plays a sound and adds it to a new or existent category.
+ * \param sound The sound to be played and added to a category.
+ * \param catKey Key of the category.
+ * \return The handle of the playback; nullptr if the sound couldn't be played.
+ */
+ std::shared_ptr<IHandle> play(std::shared_ptr<ISound> sound, unsigned int catKey);
+
+ /**
+ * Resumes all the paused sounds of a category.
+ * \param catKey Key of the category.
+ * \return
+ * - true if succesful.
+ * - false if the category doesn't exist.
+ */
+ bool resume(unsigned int catKey);
+
+ /**
+ * Pauses all current playing sounds of a category.
+ * \param catKey Key of the category.
+ * \return
+ * - true if succesful.
+ * - false if the category doesn't exist.
+ */
+ bool pause(unsigned int catKey);
+
+ /**
+ * Retrieves the volume of a category.
+ * \param catKey Key of the category.
+ * \return The volume value of the category. If the category doesn't exist it returns a negative number.
+ */
+ float getVolume(unsigned int catKey);
+
+ /**
+ * Sets the volume for a category.
+ * \param volume The volume.
+ * \param catKey Key of the category.
+ * \return
+ * - true if succesful.
+ * - false if the category doesn't exist.
+ */
+ bool setVolume(float volume, unsigned int catKey);
+
+ /**
+ * Stops and erases a category of sounds.
+ * \param catKey Key of the category.
+ * \return
+ * - true if succesful.
+ * - false if the category doesn't exist.
+ */
+ bool stop(unsigned int catKey);
+
+ /**
+ * Removes all the invalid handles of all the categories.
+ * Only needed if individual sounds are stopped with their handles.
+ */
+ void clean();
+
+ /**
+ * Removes all the invalid handles of a category.
+ * Only needed if individual sounds are stopped with their handles.
+ * \param catKey Key of the category.
+ * \return
+ * - true if succesful.
+ * - false if the category doesn't exist.
+ */
+ bool clean(unsigned int catKey);
+
+ /**
+ * Retrieves the device of the PlaybackManager.
+ * \return A shared pointer to the device used by the playback manager.
+ */
+ std::shared_ptr<IDevice> getDevice();
+};
+
+AUD_NAMESPACE_END