#include <SDL/SDL.h>
-#include <Moof/Exception.hh>
+#include <Moof/Core.hh>
namespace Mf {
typedef boost::shared_ptr<Video> VideoP;
-struct Video
+class Video
{
+public:
+
struct Attributes
{
// OpenGL attributes
bool cursorGrab;
Attributes();
- };
-
-
-private:
-
- void init(const Attributes& attribs);
- void recreateContext();
- void setOpenGLAttributes();
+ private:
- void setIcon();
-
- SDL_Surface* context_;
- unsigned flags_;
- Attributes attribs_;
+ Backend backend;
+ };
-public:
static VideoP alloc(const std::string& caption, const std::string& icon)
{
Video();
explicit Video(const Attributes& attribs);
- explicit Video(const std::string& caption, const std::string& icon);
+ Video(const std::string& caption, const std::string& icon);
~Video();
void setVideoMode(const long mode[3]);
void setCaption(const std::string& caption);
std::string getCaption() const;
+ const std::string& getIcon() const;
+
void setFull(bool full);
void toggleFull();
bool isFull() const;
void toggleCursorGrab();
bool isCursorGrab() const;
- void makeActive();
void swap();
int getWidth() const;
int getHeight() const;
+private:
- struct Exception : public Mf::Exception
- {
- explicit Exception(unsigned error) :
- Mf::Exception(error) {}
+ void init(const Attributes& attribs);
- void raise()
- {
- throw *this;
- }
- };
+ void recreateContext();
+ void setOpenGLAttributes();
+
+ void setIcon();
+
+ // TODO this implementation should be hidden
+
+ SDL_Surface* mContext;
+ unsigned mFlags;
+ Attributes mAttribs;
};
+extern Video* video;
+
+
} // namespace Mf
#endif // _MOOF_VIDEO_HH_