diff --git a/engine/include/nova/platform/window_api.h b/engine/include/nova/platform/window_api.h new file mode 100644 index 0000000..2d224d8 --- /dev/null +++ b/engine/include/nova/platform/window_api.h @@ -0,0 +1,11 @@ +/** + * Copyright (c) 2025, Jayden Grubb + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#pragma once + +namespace Nova { + enum class WindowAPI { WAYLAND, WIN32, X11 }; +} // namespace Nova diff --git a/engine/include/nova/platform/window_driver.h b/engine/include/nova/platform/window_driver.h index ffefc64..5ed626c 100644 --- a/engine/include/nova/platform/window_driver.h +++ b/engine/include/nova/platform/window_driver.h @@ -7,6 +7,7 @@ #pragma once #include +#include #include #include @@ -22,6 +23,9 @@ namespace Nova { static WindowDriver* create(); virtual ~WindowDriver() = default; + [[nodiscard]] virtual WindowAPI get_api() const = 0; + [[nodiscard]] virtual std::string get_api_name() const = 0; + virtual void poll_events() = 0; virtual void beep() = 0; diff --git a/engine/src/drivers/x11/window_driver.cpp b/engine/src/drivers/x11/window_driver.cpp index 0f17ffc..f3bf09e 100644 --- a/engine/src/drivers/x11/window_driver.cpp +++ b/engine/src/drivers/x11/window_driver.cpp @@ -46,6 +46,14 @@ X11WindowDriver::~X11WindowDriver() { } } +WindowAPI X11WindowDriver::get_api() const { + return WindowAPI::X11; +} + +std::string X11WindowDriver::get_api_name() const { + return "X11"; +} + void X11WindowDriver::poll_events() { while (XPending(m_display)) { XEvent event; diff --git a/engine/src/drivers/x11/window_driver.h b/engine/src/drivers/x11/window_driver.h index 8a10411..b9455cb 100644 --- a/engine/src/drivers/x11/window_driver.h +++ b/engine/src/drivers/x11/window_driver.h @@ -24,6 +24,9 @@ namespace Nova { X11WindowDriver(); ~X11WindowDriver() override; + [[nodiscard]] WindowAPI get_api() const override; + [[nodiscard]] std::string get_api_name() const override; + void poll_events() override; void beep() override;