anaglym/AV.h
Josh Holtrop 6e502367bc moved sound callback into AV member function
git-svn-id: svn://anubis/anaglym/trunk@277 99a6e188-d820-4881-8870-2d33a10e2619
2010-06-16 03:47:45 +00:00

72 lines
1.9 KiB
C++

#ifndef VIDEO_H
#define VIDEO_H
#include "FileLoader/FileLoader.h"
#include "refptr/refptr.h"
#include <SDL.h>
#include <SDL_sound.h>
#define AV_SOUND_RATE 44100
class AV
{
public:
class Sound
{
public:
Sound(AV & av);
~Sound();
bool load(FileLoader & fileLoader,
const FileLoader::Path & path);
protected:
AV & m_av;
SDL_RWops * m_rwops;
Sound_Sample * m_ss;
};
AV();
~AV();
void start(int width = 0, int height = 0,
bool fullscreen = true, bool grab_input = true,
int samples = 4);
void stop();
int getDefaultWidth() { return m_defaultWidth; }
int getDefaultHeight() { return m_defaultHeight; }
void toggleFullScreen() { SDL_WM_ToggleFullScreen(m_surface); }
int getWidth() { return m_width; }
int getHeight() { return m_height; }
SDL_Surface * getSurface() { return m_surface; }
void setCursorVisible(bool visible)
{
SDL_ShowCursor(visible ? SDL_ENABLE : SDL_DISABLE);
}
bool getCursorVisible()
{
return SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE;
}
void setInputGrabbed(bool grabbed)
{
SDL_WM_GrabInput(grabbed ? SDL_GRAB_ON : SDL_GRAB_OFF);
}
bool getInputGrabbed()
{
return SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON;
}
refptr<Sound> createSound() { return new Sound(*this); }
friend void AV_sound_callback(void * userdata, Uint8 * stream, int len);
protected:
void playCallback(Uint8 * stream, int len);
int m_defaultWidth;
int m_defaultHeight;
int m_width;
int m_height;
SDL_Surface * m_surface;
bool m_fullscreen;
};
#endif