#include "rendering/renderer.h" #include "scripting/PyInt.h" #include class python_screen_viewer { struct window_state { GLFWwindow *window = nullptr; glm::ivec2 window_size; glm::ivec2 fb_size; glm::ivec2 cursor_pos; glm::vec2 offset; glm::vec2 scale; std::unique_ptr ubo; std::unique_ptr shader; std::chrono::high_resolution_clock::time_point timestamp; window_state() = default; ~window_state(); }; std::vector> m_windows; std::shared_ptr m_rt; std::shared_ptr> m_touchlist; std::shared_ptr m_renderthread; gl::scene_ubs m_ubs; std::atomic_bool m_exit = false; void threadfunc(); public: python_screen_viewer(std::shared_ptr rt, std::shared_ptr> touchlist, std::string name); ~python_screen_viewer(); void notify_window_size(GLFWwindow *window, int w, int h); void notify_window_fb_size(GLFWwindow *window, int w, int h); void notify_cursor_pos(GLFWwindow *window, double x, double y); void notify_click(GLFWwindow *window, int button, int action); };