From 8d525bc1c3506f15a5f68672245f845cebe18eef Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 28 Oct 2021 17:33:57 +0200 Subject: More, todo interfaces --- src/window/Clipboard.cpp | 15 +++++++++++ src/window/Window.cpp | 65 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 src/window/Clipboard.cpp (limited to 'src/window') diff --git a/src/window/Clipboard.cpp b/src/window/Clipboard.cpp new file mode 100644 index 0000000..b5b156e --- /dev/null +++ b/src/window/Clipboard.cpp @@ -0,0 +1,15 @@ +#include "../../include/mglpp/window/Clipboard.hpp" + +namespace mgl { + // TODO: Implement + // static + void Clipboard::set_string(std::string str) { + + } + + // TODO: Implement + // static + std::string Clipboard::get_string() { + return ""; + } +} \ No newline at end of file diff --git a/src/window/Window.cpp b/src/window/Window.cpp index 79e015b..9e1fb75 100644 --- a/src/window/Window.cpp +++ b/src/window/Window.cpp @@ -4,7 +4,9 @@ #include "../../include/mglpp/graphics/Shader.hpp" extern "C" { +#include #include +#include } namespace mgl { @@ -22,6 +24,12 @@ namespace mgl { return mgl_window_create_with_params(&window, title, width, height, 0) == 0; } + bool Window::create(WindowHandle existing_window) { + if(window.window) + return false; + return mgl_window_init_from_existing_window(&window, existing_window) == 0; + } + bool Window::poll_event(Event &event) { if(!window.window) return false; @@ -31,7 +39,7 @@ namespace mgl { return mgl_window_poll_event(&window, &c_event); } - void Window::clear(mgl::Color color) { + void Window::clear(Color color) { if(!window.window) return; mgl_window_clear(&window, mgl_color{color.r, color.g, color.b, color.a}); @@ -40,10 +48,22 @@ namespace mgl { void Window::draw(Drawable &drawable, Shader *shader) { // TODO: Make the opengl context active for this thread and window, if it already isn't if(shader) - mgl::Shader::use(shader); + Shader::use(shader); drawable.draw(*this); if(shader) - mgl::Shader::use(nullptr); + Shader::use(nullptr); + } + + void Window::draw(const Vertex *vertices, size_t vertex_count, PrimitiveType primitive_type, Shader *shader) { + // TODO: Make the opengl context active for this thread and window, if it already isn't + if(shader) + Shader::use(shader); + + mgl_context *context = mgl_get_context(); + mgl_vertices_draw(context, (const mgl_vertex*)vertices, vertex_count, (mgl_primitive_type)primitive_type); + + if(shader) + Shader::use(nullptr); } void Window::display() { @@ -52,6 +72,41 @@ namespace mgl { mgl_window_display(&window); } + // TODO: Implement + bool Window::is_open() const { + return true; + } + + // TODO: Implement + bool Window::has_focus() const { + return true; + } + + // TODO: Implement + void Window::close() { + + } + + // TODO: Implement + void Window::set_title(const char *title) { + + } + + // TODO: Implement + void Window::set_framerate_limit(unsigned int fps) { + + } + + // TODO: Implement + void Window::set_key_repeat_enabled(bool enabled) { + + } + + // TODO: Implement + void Window::set_cursor_visible(bool visible) { + + } + vec2i Window::get_size() const { return { window.size.x, window.size.y }; } @@ -59,4 +114,8 @@ namespace mgl { vec2i Window::get_cursor_position() const { return { window.cursor_position.x, window.cursor_position.y }; } + + WindowHandle Window::get_system_handle() const { + return window.window; + } } \ No newline at end of file -- cgit v1.2.3