From 6cf7cd267b50fa68d7531655911620f17dde4a63 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Mon, 29 Jul 2024 23:03:57 -0400 Subject: window moving and focusing --- applications/goldman/source/renderer.hpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'applications/goldman/source/renderer.hpp') diff --git a/applications/goldman/source/renderer.hpp b/applications/goldman/source/renderer.hpp index 91afe88..c2e82b2 100644 --- a/applications/goldman/source/renderer.hpp +++ b/applications/goldman/source/renderer.hpp @@ -17,9 +17,6 @@ class renderer { int cursor_x; int cursor_y; - //bottom to top - std::list windows; - std::mutex mut; euler::syscall::stream_handle @@ -28,6 +25,12 @@ class renderer { void do_render(); public: + //all of the shown windows, sorted from furthest back to furthest front. + //while the renderer is not locked, the contents of this can change and + //iterators can be invalided. this should not be reordered, added to, or + //have elements removed from outside the renderer. + std::list windows; + renderer( daguerre::image &&framebuffer, daguerre::image &&background, @@ -53,8 +56,19 @@ public: euler::syscall::write_to_stream(dispatcher_handle_1, 1, &byte); } + //gets the current position of the cursor. this should + //only be called while the renderer is locked. + void get_cursor(int &x_out, int &y_out); + + //this adds x_offset and y_offset to the current cursor position, and then + //clamps the cursor position to have its top-left pixel inside the frame. + //this should only be called while the renderer is locked. void bump_cursor(int x_offset, int y_offset); + //moves the pointed to window to the front of the window stack. + //this should only be called while the renderer is locked. + void move_window_to_front(std::list::iterator w); + void add_window(window *w); void remove_window(window *w); -- cgit v1.2.3