// This file is part of Desktop App Toolkit, // a set of libraries for developing nice desktop applications. // // For license and copyright information please follow this link: // https://github.com/desktop-app/legal/blob/master/LEGAL // #pragma once namespace Ui { class RpWindow; class RpWidget; } // namespace Ui namespace Ui::GL { enum class Backend; struct Capabilities; class Window final { public: Window(); explicit Window(Fn chooseBackend); ~Window(); [[nodiscard]] Backend backend() const; [[nodiscard]] not_null window() const; [[nodiscard]] not_null widget() const; private: [[nodiscard]] std::unique_ptr createWindow( const Fn &chooseBackend); [[nodiscard]] std::unique_ptr createNativeBodyWrap( const Fn &chooseBackend); Backend _backend = Backend(); const std::unique_ptr _window; const std::unique_ptr _bodyNativeWrap; const not_null _body; }; } // namespace Ui::GL