From 1c9ebd15bb0ada387038b7278226a557d0de92ad Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 3 Nov 2021 21:09:13 +0100 Subject: Add window set_view and get_view --- depends/mgl | 2 +- include/mglpp/window/Window.hpp | 15 +++++++++++++++ src/window/Window.cpp | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/depends/mgl b/depends/mgl index def772c..61279a1 160000 --- a/depends/mgl +++ b/depends/mgl @@ -1 +1 @@ -Subproject commit def772cc0efd7c22c6154c6d9f73df1a08fa2671 +Subproject commit 61279a1947328df0b8004edebcbe405ab7b1c09e diff --git a/include/mglpp/window/Window.hpp b/include/mglpp/window/Window.hpp index 88a025c..2ef6526 100644 --- a/include/mglpp/window/Window.hpp +++ b/include/mglpp/window/Window.hpp @@ -18,6 +18,11 @@ namespace mgl { class Shader; class Vertex; + struct View { + vec2i position; + vec2i size; + }; + class Window { public: class Delegate { @@ -49,6 +54,16 @@ namespace mgl { void set_cursor_visible(bool visible); vec2i get_size() const; vec2i get_cursor_position() const; + + /* + This should be called every frame to retain the view. + Make sure to set the view back to the previous view after rendering items + by saving the previous view with |get_view| and then call + |set_view| with that saved view. + */ + void set_view(const View &new_view); + View get_view(); + WindowHandle get_system_handle() const; private: mgl_window window; diff --git a/src/window/Window.cpp b/src/window/Window.cpp index 580737d..7f1fe38 100644 --- a/src/window/Window.cpp +++ b/src/window/Window.cpp @@ -112,6 +112,20 @@ namespace mgl { return { window.cursor_position.x, window.cursor_position.y }; } + void Window::set_view(const View &new_view) { + if(!window.window) + return; + mgl_window_set_view(&window, (mgl_view*)&new_view); + } + + View Window::get_view() { + View view; + if(!window.window) + return view; + mgl_window_get_view(&window, (mgl_view*)&view); + return view; + } + WindowHandle Window::get_system_handle() const { return window.window; } -- cgit v1.2.3