/* * author: Patrick-Christopher Mattulat * e-mail: webmaster@lynarstudios.com */ #ifndef LS_ATLANTIS_ENGINE_WINDOW_SDL_WINDOW_API_HPP #define LS_ATLANTIS_ENGINE_WINDOW_SDL_WINDOW_API_HPP #include #include #include #include #include #include namespace ls::atlantis::window { class LS_ATLANTIS_DYNAMIC_GOAL SdlWindowApi : public ls::atlantis::interfaces::IWindowApi { public: SdlWindowApi(); explicit SdlWindowApi(const ::std::shared_ptr &_sdlApi); ~SdlWindowApi() override; [[nodiscard]] ls::atlantis::glossary::WindowApiTypes getWindowApiType() override; [[nodiscard]] ls::atlantis::interfaces::AStatusCode init() override; private: [[nodiscard]] ls::atlantis::interfaces::AStatusCode _createWindow(); [[nodiscard]] ls::atlantis::interfaces::AStatusCode _initApi() const; ::std::shared_ptr sdlApi{}; ::std::unique_ptr> window{nullptr, [](SDL_Window *) {}}; ls::atlantis::glossary::WindowApiTypes windowApiType{}; }; } #endif