From 6cbf8df17a5e4b3902aafde795aa08c9f28d1530 Mon Sep 17 00:00:00 2001 From: Jayden Grubb Date: Sat, 12 Apr 2025 10:32:30 +1000 Subject: [PATCH] Add get_api() and get_api_name() to WindowDriver --- engine/include/nova/platform/window_api.h | 11 +++++++++++ engine/include/nova/platform/window_driver.h | 4 ++++ engine/src/drivers/x11/window_driver.cpp | 8 ++++++++ engine/src/drivers/x11/window_driver.h | 3 +++ 4 files changed, 26 insertions(+) create mode 100644 engine/include/nova/platform/window_api.h 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;