aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/je_window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Graphics/je_window.cpp')
-rw-r--r--src/libjin/Graphics/je_window.cpp130
1 files changed, 0 insertions, 130 deletions
diff --git a/src/libjin/Graphics/je_window.cpp b/src/libjin/Graphics/je_window.cpp
deleted file mode 100644
index c14d290..0000000
--- a/src/libjin/Graphics/je_window.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-#include "../core/je_configuration.h"
-#if defined(jin_graphics)
-
-#include <iostream>
-
-#include "../common/je_exception.h"
-#include "../utils/je_utils.h"
-#include "../audio/sdl/je_sdl_audio.h"
-#include "../utils/je_log.h"
-
-#include "shaders/je_shader.h"
-#include "je_window.h"
-#include "je_gl.h"
-#include "je_canvas.h"
-
-using namespace JinEngine::Graphics::Shaders;
-
-namespace JinEngine
-{
- namespace Graphics
- {
-
- bool Window::initSystem(const SettingBase* s)
- {
- jin_log_info("Initialize window system.");
-
- if (SDL_Init(SDL_INIT_VIDEO) < 0)
- return false;
-
- const Setting* setting = (Setting*)s;
- mSize.w = setting->width;
- mSize.h = setting->height;
- mFps = setting->fps;
- bool vsync = setting->vsync;
- const char* title = setting->title;
- const char* icon = setting->icon;
-
- if (mWnd)
- {
- SDL_DestroyWindow(mWnd);
- SDL_FlushEvent(SDL_WINDOWEVENT);
- }
-
- SDL_GLContext ctx = NULL;
-
- if (ctx)
- {
- SDL_GL_DeleteContext(ctx);
- }
-
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
- SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
- SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
-
- int wx = SDL_WINDOWPOS_UNDEFINED,
- wy = SDL_WINDOWPOS_UNDEFINED;
-
- int flag = SDL_WINDOW_HIDDEN | SDL_WINDOW_OPENGL;
- if (setting->fullscreen) flag |= SDL_WINDOW_FULLSCREEN;
- if (setting->resizable) flag |= SDL_WINDOW_RESIZABLE;
-
- mWnd = SDL_CreateWindow(title, wx, wy, mSize.w, mSize.h, flag);
- if (mWnd == NULL)
- return false;
-
- // Set window icon
- try
- {
- Bitmap* bitmap = Bitmap::createBitmap(icon);
- SDL_Surface *surface;
- Color* pixels = const_cast<Color*>(bitmap->getPixels());
- uint w = bitmap->getWidth(), h = bitmap->getHeight();
- surface = SDL_CreateRGBSurfaceFrom(
- pixels, w, h, 32, w * 4, Color::RMASK, Color::GMASK, Color::BMASK, Color::AMASK);
- SDL_SetWindowIcon(mWnd, surface);
- SDL_FreeSurface(surface);
- } catch (...) {}
-
- ctx = SDL_GL_CreateContext(mWnd);
- if (ctx == NULL)
- return false;
- SDL_GL_SetSwapInterval(vsync ? 1 : 0);
- SDL_GL_MakeCurrent(mWnd, ctx);
- // Default configuration
- gl.setClearColor(0, 0, 0, 0xff);
- glClear(GL_COLOR_BUFFER_BIT);
- gl.pushColor(0xff, 0xff, 0xff, 0xff);
- gl.enable(GL_BLEND);
- gl.enable(GL_TEXTURE_2D);
- gl.setBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- // Bind to default canvas
- Canvas::unbind();
- Shader::unuse();
- // Avoid white blinnk.
- swapBuffers();
-
- return true;
- }
-
- void Window::quitSystem()
- {
- jin_log_info("Quit window system.");
- // disable opengl
- gl.disable(GL_BLEND);
- gl.disable(GL_TEXTURE_2D);
- // close window
- SDL_DestroyWindow(mWnd);
- SDL_Quit();
- }
-
- void Window::swapBuffers()
- {
- if (mWnd)
- SDL_GL_SwapWindow(mWnd);
- }
-
- void Window::setTitle(const char* title)
- {
- SDL_SetWindowTitle(mWnd, title);
- };
-
- } // namespace Graphics
-} // namespace JinEngine
-
-#endif // defined(jin_graphics) \ No newline at end of file