hyporo-cpp/source/hyporo/gpu/window_system.hpp

62 lines
864 B
C++

#pragma once
#include "window.hpp"
#include "monitor.hpp"
#include "../hyplib/array/array.hpp"
#include <string>
namespace hpr::gpu
{
class WindowSystem : WindowContext
{
protected:
darray<Window> p_windows;
darray<Monitor> p_monitors;
protected:
WindowSystem();
WindowSystem(Provider provider);
virtual
~WindowSystem();
public:
// Global functions
static
void create(WindowSystem** ws, Provider provider);
static
void destroy(WindowSystem*& ws);
// Window interface
virtual
void newWindow(Window** window) = 0;
Window& window(int index);
void closeWindow(Window* window);
void destroyWindow(Window* window);
// Monitor interface
virtual
void newMonitor(Monitor** monitor) = 0;
Monitor& monitor(int index);
void destroyMonitor(Monitor* monitor);
};
}