Loading...
Searching...
No Matches
WindowBase.hpp
Go to the documentation of this file.
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2024 Laurent Gomila (laurent@sfml-dev.org)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#pragma once
26
28// Headers
31
35
36#include <SFML/System/Time.hpp>
38
39#include <memory>
40#include <optional>
41
42#include <cstdint>
43
44
45namespace sf
46{
47class Cursor;
48class String;
49class VideoMode;
50
51namespace priv
52{
53class WindowImpl;
54}
55
56class Event;
57
63{
64public:
73
90 WindowBase(VideoMode mode, const String& title, std::uint32_t style = Style::Default, State state = State::Windowed);
91
103 WindowBase(VideoMode mode, const String& title, State state);
104
111 explicit WindowBase(WindowHandle handle);
112
119 virtual ~WindowBase();
120
125 WindowBase(const WindowBase&) = delete;
126
131 WindowBase& operator=(const WindowBase&) = delete;
132
138
143 WindowBase& operator=(WindowBase&&) noexcept;
144
158 virtual void create(VideoMode mode, const String& title, std::uint32_t style = Style::Default, State state = State::Windowed);
159
166 virtual void create(WindowHandle handle);
167
178 virtual void close();
179
190 [[nodiscard]] bool isOpen() const;
191
212 [[nodiscard]] std::optional<Event> pollEvent();
213
238 [[nodiscard]] std::optional<Event> waitEvent(Time timeout = Time::Zero);
239
315 template <typename... Ts>
316 void handleEvents(Ts&&... handlers);
317
326 [[nodiscard]] Vector2i getPosition() const;
327
340 void setPosition(Vector2i position);
341
353 [[nodiscard]] Vector2u getSize() const;
354
363 void setSize(Vector2u size);
364
373 void setMinimumSize(const std::optional<Vector2u>& minimumSize);
374
383 void setMaximumSize(const std::optional<Vector2u>& maximumSize);
384
393 void setTitle(const String& title);
394
411 void setIcon(Vector2u size, const std::uint8_t* pixels);
412
421 void setVisible(bool visible);
422
431 void setMouseCursorVisible(bool visible);
432
444 void setMouseCursorGrabbed(bool grabbed);
445
462 void setMouseCursor(const Cursor& cursor);
463
476 void setKeyRepeatEnabled(bool enabled);
477
489 void setJoystickThreshold(float threshold);
490
505 void requestFocus();
506
518 [[nodiscard]] bool hasFocus() const;
519
532 [[nodiscard]] WindowHandle getNativeHandle() const;
533
544 [[nodiscard]] bool createVulkanSurface(const VkInstance& instance,
545 VkSurfaceKHR& surface,
546 const VkAllocationCallbacks* allocator = nullptr);
547
548protected:
557 virtual void onCreate();
558
566 virtual void onResize();
567
568private:
569 friend class Window;
570
583 void filterEvent(const Event& event);
584
589 void initialize();
590
592 // Member data
594 std::unique_ptr<priv::WindowImpl> m_impl;
595 Vector2u m_size;
596};
597
598} // namespace sf
599
600#include <SFML/Window/WindowBase.inl>
601
std::uint64_t VkSurfaceKHR
Definition Vulkan.hpp:47
VkInstance_T * VkInstance
Definition Vulkan.hpp:35
#define SFML_WINDOW_API
Cursor defines the appearance of a system cursor.
Definition Cursor.hpp:51
Defines a system event and its parameters.
Definition Event.hpp:47
Utility string class that automatically handles conversions between types and encodings.
Definition String.hpp:89
Represents a time value.
Definition Time.hpp:42
VideoMode defines a video mode (size, bpp)
Definition VideoMode.hpp:44
Window that serves as a base for other windows.
WindowBase()
Default constructor.
WindowBase(VideoMode mode, const String &title, State state)
Construct a new window.
WindowBase(const WindowBase &)=delete
Deleted copy constructor.
virtual ~WindowBase()
Destructor.
WindowBase(WindowHandle handle)
Construct the window from an existing control.
WindowBase(VideoMode mode, const String &title, std::uint32_t style=Style::Default, State state=State::Windowed)
Construct a new window.
WindowBase(WindowBase &&) noexcept
Move constructor.
WindowBase & operator=(const WindowBase &)=delete
Deleted copy assignment.
Window that serves as a target for OpenGL rendering.
State
Enumeration of the window states.
"platform-specific" WindowHandle