#ifndef BLANK_APP_INIT_HPP_
#define BLANK_APP_INIT_HPP_
+#include "error.hpp"
+
+#include <al.h>
#include <SDL.h>
namespace blank {
-class GLContext;
-
-
class InitSDL {
public:
};
+class InitVideo {
+
+public:
+ InitVideo();
+ ~InitVideo();
+
+ InitVideo(const InitVideo &) = delete;
+ InitVideo &operator =(const InitVideo &) = delete;
+
+};
+
+
class InitIMG {
public:
};
+class InitNet {
+
+public:
+ InitNet();
+ ~InitNet();
+
+ InitNet(const InitNet &) = delete;
+ InitNet &operator =(const InitNet &) = delete;
+
+};
+
+
class InitTTF {
public:
};
+class InitAL {
+
+public:
+ InitAL();
+ ~InitAL() throw(AlutError);
+
+ InitAL(const InitAL &) = delete;
+ InitAL &operator =(const InitAL &) = delete;
+
+};
+
+
class InitGL {
public:
void GrabMouse();
void ReleaseMouse();
- GLContext CreateContext();
+ SDL_Window *Handle() { return handle; }
void Flip();
explicit GLContext(SDL_Window *);
~GLContext();
- GLContext(GLContext &&);
- GLContext &operator =(GLContext &&);
-
GLContext(const GLContext &) = delete;
GLContext &operator =(const GLContext &) = delete;
- static void EnableVSync();
- static void EnableDepthTest() noexcept;
- static void EnableBackfaceCulling() noexcept;
- static void EnableAlphaBlending() noexcept;
- static void EnableInvertBlending() noexcept;
- static void DisableBlending() noexcept;
-
- static void Clear() noexcept;
- static void ClearDepthBuffer() noexcept;
-
private:
- SDL_GLContext handle;
+ SDL_GLContext ctx;
};
};
+
+struct InitHeadless {
+
+ InitHeadless();
+
+ InitSDL init_sdl;
+ InitNet init_net;
+
+};
+
+struct Init {
+
+ Init(bool double_buffer = true, int sample_size = 1);
+
+ InitVideo init_video;
+ InitIMG init_img;
+ InitTTF init_ttf;
+ InitAL init_al;
+ InitGL init_gl;
+ Window window;
+ GLContext ctx;
+ InitGLEW init_glew;
+
+};
+
}
#endif