hx3d  1
2D/3D Simple Game Framework
music.cpp
1 /*
2  Music management.
3  Copyright (C) 2015 Denis BOURGE
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
18  USA
19 */
20 
21 #include "hx3d/audio/music.hpp"
22 
23 #include "hx3d/utils/file.hpp"
24 
25 namespace hx3d {
26 namespace audio {
27 
28 Music::Music(): _music(nullptr), _file(nullptr) {}
29 
30 Music::Music(const std::string pathToFile) {
31  initialize(pathToFile);
32 }
33 
34 Music::~Music() {
35  Mix_FreeMusic(_music);
36 }
37 
38 void Music::initialize(const std::string pathToFile) {
39  _file = File::loadBinaryFile(pathToFile);
40 
41  SDL_RWops* musicOps = SDL_RWFromConstMem(_file->getData(), _file->getSize());
42  _music = Mix_LoadMUS_RW(musicOps, 1);
43 }
44 
45 void Music::play() {
46  if (_music) {
47  Mix_PlayMusic(_music, 1);
48  }
49 }
50 
51 void Music::stop() {
52  if (_music) {
53  Mix_HaltMusic();
54  }
55 }
56 
58  return Mix_PlayingMusic() != 0;
59 }
60 
61 } /* audio */
62 } /* hx3d */
void stop()
Stop the music.
Definition: music.cpp:51
void initialize(const std::string pathToFile)
Initialize a music with a path.
Definition: music.cpp:38
bool isPlaying()
Test if the music is playing.
Definition: music.cpp:57
hx3d framework namespace
Definition: audio.hpp:26
Music()
Create an uninitialized music.
Definition: music.cpp:28
static Ptr< File > loadBinaryFile(std::string path)
Load a binary file from a path.
Definition: file.cpp:62
void play()
Play the music.
Definition: music.cpp:45