• R/O
  • SSH
  • HTTPS

qrobosdk: コミット


コミットメタ情報

リビジョン10 (tree)
日時2008-05-10 05:14:47
作者satofumi

ログメッセージ

add sound classes

変更サマリ

差分

--- trunk/samples/luabind_test/hello.cpp (revision 9)
+++ trunk/samples/luabind_test/hello.cpp (revision 10)
@@ -1,6 +1,6 @@
11 /*!
22 \file
3- \brief Luabin を用いて C++ 関数を lua に公開する例
3+ \brief Luabind を用いて C++ 関数を lua に公開する例
44
55 \author Satofumi KAMIMURA
66
--- trunk/libs/system/sdl/Delay.cpp (revision 9)
+++ trunk/libs/system/sdl/Delay.cpp (revision 10)
@@ -1,6 +1,6 @@
11 /*!
22 \file
3- \brief 待機
3+ \brief 待機関数
44
55 \author Satofumi KAMIMURA
66
--- trunk/libs/system/Delay.h (revision 9)
+++ trunk/libs/system/Delay.h (revision 10)
@@ -3,7 +3,7 @@
33
44 /*!
55 \file
6- \brief 待機
6+ \brief 待機関数
77
88 \author Satofumi KAMIMURA
99
--- trunk/libs/sound/CdromPlay.h (nonexistent)
+++ trunk/libs/sound/CdromPlay.h (revision 10)
@@ -0,0 +1,39 @@
1+#ifndef CDROM_PLAY_H
2+#define CDROM_PLAY_H
3+
4+/*!
5+ \file
6+ \brief CD-ROM の再生
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+*/
12+
13+#include <memory>
14+
15+
16+namespace qrk {
17+ class CdromPlay {
18+ CdromPlay(const CdromPlay& rhs);
19+ CdromPlay& operator = (const CdromPlay& rhs);
20+
21+ struct pImpl;
22+ const std::auto_ptr<pImpl> pimpl;
23+
24+ public:
25+ CdromPlay(void);
26+ ~CdromPlay(void);
27+ const char* what(void);
28+
29+ // !!! static で、ドライブ数を返す。初期化に注意
30+ // !!! 指定トラックの再生 / 指定範囲の再生
31+ // !!! 再生中か、を返す
32+ // !!! void stop(void);
33+ // !!! void pause(void);
34+ // !!! void resume(void);
35+ // !!! void eject(void);
36+ };
37+};
38+
39+#endif /* !CDROM_PLAY_H */
--- trunk/libs/sound/SdlMixerInit.h (nonexistent)
+++ trunk/libs/sound/SdlMixerInit.h (revision 10)
@@ -0,0 +1,37 @@
1+#ifndef SDL_MIXER_INIT_H
2+#define SDL_MIXER_INIT_H
3+
4+/*!
5+ \file
6+ \brief SDL_mixer の初期化
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+*/
12+
13+#include <memory>
14+
15+
16+namespace qrk {
17+ /*!
18+ \brief SDL_MIXER システムの初期化クラス
19+ */
20+ class SdlMixerInit {
21+ SdlMixerInit(const SdlMixerInit& rhs);
22+ SdlMixerInit& operator = (const SdlMixerInit& rhs);
23+
24+ struct pImpl;
25+ const std::auto_ptr<pImpl> pimpl;
26+
27+ public:
28+ enum {
29+ ChannelNum = 8,
30+ };
31+
32+ SdlMixerInit(void);
33+ ~SdlMixerInit(void);
34+ };
35+};
36+
37+#endif /* !SDL_MIXER_INIT_H */
--- trunk/libs/sound/VolumeCtrl.h (nonexistent)
+++ trunk/libs/sound/VolumeCtrl.h (revision 10)
@@ -0,0 +1,46 @@
1+#ifndef VOLUME_CTRL_H
2+#define VOLUME_CTRL_H
3+
4+/*!
5+ \file
6+ \brief 音量の調整
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+*/
12+
13+#include <memory>
14+
15+
16+namespace qrk {
17+ class VolumeCtrl {
18+ VolumeCtrl(const VolumeCtrl& rhs);
19+ VolumeCtrl& operator = (const VolumeCtrl& rhs);
20+
21+ struct pImpl;
22+ const std::auto_ptr<pImpl> pimpl;
23+
24+ public:
25+ VolumeCtrl(void);
26+ ~VolumeCtrl(void);
27+
28+ /*!
29+ \brief 全体の音量設定
30+
31+ \param percent [i] 音量の設定割合
32+
33+ \attention 未実装
34+ */
35+ void setVolume(size_t percent);
36+
37+ /*!
38+ \brief ミュート指定
39+
40+ \attention 未実装
41+ */
42+ void mute(void);
43+ };
44+};
45+
46+#endif /* !VOLUME_CTRL_H */
--- trunk/libs/sound/VolumeChangeInterface.h (nonexistent)
+++ trunk/libs/sound/VolumeChangeInterface.h (revision 10)
@@ -0,0 +1,26 @@
1+#ifndef VOLUME_CHANGE_INTERFACE_H
2+#define VOLUME_CHANGE_INTERFACE_H
3+
4+/*!
5+ \file
6+ \brief 音量変更のインターフェース
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+*/
12+
13+namespace qrk {
14+
15+ /*!
16+ \brief 音量変更のインターフェース
17+ */
18+ class VolumeChangeInterface {
19+ public:
20+ virtual ~VolumeChangeInterface(void) {}
21+
22+ void setVolume(size_t percent);
23+ };
24+};
25+
26+#endif /* !VOLUME_CHANGE_INTERFACE_H */
--- trunk/libs/sound/SdlAudioInit.cpp (nonexistent)
+++ trunk/libs/sound/SdlAudioInit.cpp (revision 10)
@@ -0,0 +1,43 @@
1+/*!
2+ \file
3+ \brief SDL_AUDIO システムの初期化
4+
5+ \author Satofumi KAMIMURA
6+
7+ $Id$
8+*/
9+
10+#include <SDL.h>
11+#include "SdlInit.h"
12+#include "SdlAudioInit.h"
13+
14+using namespace qrk;
15+
16+
17+struct SdlAudioInit::pImpl : private SdlInit {
18+ static bool initialized_;
19+
20+ void init(void) {
21+ if (initialized_) {
22+ return;
23+ }
24+ initialized_ = (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) ? false : true;
25+ }
26+
27+ void quit(void) {
28+ // !!! 今のところ、この処理が明示的に呼ばれることは想定していない
29+ SDL_QuitSubSystem(SDL_INIT_AUDIO);
30+ initialized_ = false;
31+ }
32+};
33+bool SdlAudioInit::pImpl::initialized_ = false;
34+
35+
36+SdlAudioInit::SdlAudioInit(void) : pimpl(new pImpl) {
37+ pimpl->init();
38+}
39+
40+
41+SdlAudioInit::~SdlAudioInit(void) {
42+ // exit() 時に SdlInit の実装内で SDL_Quit() が呼ばれるはずなので、何もしない
43+}
--- trunk/libs/sound/CdromPlay.cpp (nonexistent)
+++ trunk/libs/sound/CdromPlay.cpp (revision 10)
@@ -0,0 +1,33 @@
1+/*!
2+ \file
3+ \brief CD-ROM の再生
4+
5+ \author Satofumi KAMIMURA
6+
7+ $Id$
8+*/
9+
10+#include "CdromPlay.h"
11+#include "SdlAudioInit.h"
12+#include "VolumeChangeInterface.h"
13+
14+using namespace qrk;
15+
16+
17+struct CdromPlay::pImpl : private SdlAudioInit, public VolumeChangeInterface {
18+};
19+
20+
21+CdromPlay::CdromPlay(void) : pimpl(new pImpl) {
22+}
23+
24+
25+CdromPlay::~CdromPlay(void) {
26+}
27+
28+
29+const char* CdromPlay::what(void) {
30+
31+ // !!!
32+ return "Not implemented.";
33+}
--- trunk/libs/sound/SdlMixerInit.cpp (nonexistent)
+++ trunk/libs/sound/SdlMixerInit.cpp (revision 10)
@@ -0,0 +1,49 @@
1+/*!
2+ \file
3+ \brief SDL_mixer の初期化
4+
5+ \author Satofumi KAMIMURA
6+
7+ $Id$
8+*/
9+
10+#include <SDL_mixer.h>
11+#include "SdlAudioInit.h"
12+#include "SdlMixerInit.h"
13+
14+using namespace qrk;
15+
16+
17+struct SdlMixerInit::pImpl : private SdlAudioInit {
18+ static bool initialized_;
19+
20+ static void cleanUp(void) {
21+ Mix_AllocateChannels(0);
22+ }
23+
24+ pImpl(void) {
25+ if (initialized_) {
26+ return;
27+ }
28+
29+ if (Mix_OpenAudio(MIX_DEFAULT_FREQUENCY,
30+ MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 1024) < 0) {
31+ // !!! 例外を投げるべきかも
32+ return;
33+ }
34+ atexit(Mix_CloseAudio);
35+
36+ Mix_AllocateChannels(ChannelNum);
37+ atexit(cleanUp);
38+ initialized_ = true;
39+ }
40+};
41+bool SdlMixerInit::pImpl::initialized_ = false;
42+
43+
44+SdlMixerInit::SdlMixerInit(void) : pimpl(new pImpl) {
45+}
46+
47+
48+SdlMixerInit::~SdlMixerInit(void) {
49+}
--- trunk/libs/sound/Makefile (nonexistent)
+++ trunk/libs/sound/Makefile (revision 10)
@@ -0,0 +1,35 @@
1+# Makefile for libs/sound
2+# Satofumi KAMIMURA
3+# $Id$
4+
5+# Compile options
6+CC = ${CXX}
7+CXXFLAGS = -g -O0 -Wall -Werror ${INCLUDES} `sdl-config --cflags`
8+INCLUDES = -I../system/sdl
9+
10+# Target
11+SOUND_LIB = sound.a
12+TARGET = ${SOUND_LIB}
13+
14+all : ${TARGET}
15+
16+clean :
17+ ${RM} *.o ${TARGET}
18+
19+depend :
20+ makedepend -Y -- ${INCLUDES} -- ${wildcard *.h *.cpp}
21+
22+.PHONY : all clean depend
23+######################################################################
24+${SOUND_LIB} : \
25+ ${SOUND_LIB}(SdlAudioInit.o) \
26+ ${SOUND_LIB}(SdlMixerInit.o) \
27+ ${SOUND_LIB}(VolumeCtrl.o) \
28+ ${SOUND_LIB}(CdromPlay.o)
29+
30+# DO NOT DELETE
31+
32+CdromPlay.o: CdromPlay.h SdlAudioInit.h VolumeChangeInterface.h
33+SdlAudioInit.o: ../system/sdl/SdlInit.h SdlAudioInit.h
34+SdlMixerInit.o: SdlAudioInit.h SdlMixerInit.h
35+VolumeCtrl.o: VolumeCtrl.h
--- trunk/libs/sound/VolumeCtrl.cpp (nonexistent)
+++ trunk/libs/sound/VolumeCtrl.cpp (revision 10)
@@ -0,0 +1,46 @@
1+/*!
2+ \file
3+ \brief 音量の調整
4+
5+ \author Satofumi KAMIMURA
6+
7+ $Id$
8+*/
9+
10+#include "VolumeCtrl.h"
11+
12+using namespace qrk;
13+
14+
15+struct VolumeCtrl::pImpl {
16+ // !!! ボリューム管理
17+ // !!! オブジェクトの登録。(CD-ROM, Music, Effect)
18+
19+ pImpl(void) {
20+ }
21+
22+ static pImpl* getObject(void) {
23+ static pImpl singleton;
24+ return &singleton;
25+ }
26+};
27+
28+
29+VolumeCtrl::VolumeCtrl(void) : pimpl(pImpl::getObject()) {
30+}
31+
32+
33+VolumeCtrl::~VolumeCtrl(void) {
34+}
35+
36+
37+void VolumeCtrl::setVolume(size_t percent) {
38+
39+ // !!!
40+}
41+
42+
43+void VolumeCtrl::mute(void) {
44+
45+ // !!!
46+}
--- trunk/libs/sound/SdlAudioInit.h (nonexistent)
+++ trunk/libs/sound/SdlAudioInit.h (revision 10)
@@ -0,0 +1,34 @@
1+#ifndef SDL_AUDIO_INIT_H
2+#define SDL_AUDIO_INIT_H
3+
4+/*!
5+ \file
6+ \brief SDL_AUDIO システムの初期化
7+
8+ \author Satofumi KAMIMURA
9+
10+ $Id$
11+*/
12+
13+#include <memory>
14+
15+
16+namespace qrk {
17+
18+ /*!
19+ \brief SDL_AUDIO システムの初期化クラス
20+ */
21+ class SdlAudioInit {
22+ SdlAudioInit(const SdlAudioInit& rhs);
23+ SdlAudioInit& operator = (const SdlAudioInit& rhs);
24+
25+ struct pImpl;
26+ const std::auto_ptr<pImpl> pimpl;
27+
28+ public:
29+ SdlAudioInit(void);
30+ ~SdlAudioInit(void);
31+ };
32+};
33+
34+#endif /* !SDL_AUDIO_INIT_H */
--- trunk/libs/Makefile (revision 9)
+++ trunk/libs/Makefile (revision 10)
@@ -4,4 +4,4 @@
44
55 include ../handover.mk
66
7-TARGET_DIR = system/ gui/
7+TARGET_DIR = system/ gui/ sound/
旧リポジトリブラウザで表示