Window.hpp
Go to the documentation of this file.
1 #ifndef _QUORI_FACE_WINDOW_HPP_
2 #define _QUORI_FACE_WINDOW_HPP_
3 
4 #include <cstdint>
5 #include <string>
6 #include <memory>
7 #include <functional>
8 
9 #include "Monitor.hpp"
10 
11 struct GLFWwindow;
12 
13 namespace quori_face
14 {
15  class WindowManager;
16 
21  class Window : public std::enable_shared_from_this<Window>
22  {
23  public:
24  friend class WindowManager;
25 
26  typedef std::shared_ptr<Window> Ptr;
27  typedef std::shared_ptr<const Window> ConstPtr;
28 
29  ~Window();
30 
36  void close();
37 
42  bool isClosed() const;
43 
44  static void pollEvents();
45 
46  std::uint32_t getWidth() const;
47  std::uint32_t getHeight() const;
48 
49  void bind();
50  void unbind();
51  void swapBuffers();
52 
53  void execute(const std::function<void ()> &f);
54 
55  template<typename T>
56  T execute(const std::function<T ()> &f)
57  {
58  std::uint8_t t[sizeof(T)];
59  execute(std::bind([&]() {
60  new (t) T(f());
61  }));
62 
63  T &tt = *reinterpret_cast<T *>(t);
64  T ret(tt);
65  tt.~T();
66  return ret;
67  }
68 
69  void draw(const std::function<void ()> &f);
70 
71  template<typename... Args>
72  static Ptr open(Args &&...args)
73  {
74  return Ptr(new Window(args...));
75  }
76 
77  private:
78  Window(const std::uint32_t width, const std::uint32_t height, const std::string &name);
79  Window(const std::uint32_t width, const std::uint32_t height, const std::string &name, const Monitor::ConstPtr &monitor);
80 
81  GLFWwindow *getHandle();
82  const GLFWwindow *getHandle() const;
83 
84  void close_impl();
85 
86  GLFWwindow *window_;
87  };
88 }
89 
90 #endif
width
GLint GLsizei width
Definition: glcorearb.h:251
quori_face::Window::draw
void draw(const std::function< void()> &f)
Definition: Window.cpp:119
quori_face::Window::window_
GLFWwindow * window_
Definition: Window.hpp:86
string
GLsizei const GLchar *const * string
Definition: glcorearb.h:790
quori_face::Window::getHeight
std::uint32_t getHeight() const
Definition: Window.cpp:76
quori_face::Window::ConstPtr
std::shared_ptr< const Window > ConstPtr
Definition: Window.hpp:27
Monitor.hpp
quori_face::Window::close_impl
void close_impl()
Definition: Window.cpp:127
quori_face::Window::isClosed
bool isClosed() const
Definition: Window.cpp:57
quori_face::Window::unbind
void unbind()
Definition: Window.cpp:100
quori_face::Window::execute
T execute(const std::function< T()> &f)
Definition: Window.hpp:56
height
GLint GLsizei GLsizei height
Definition: glcorearb.h:251
quori_face
Definition: Cache.hpp:9
quori_face::Window::execute
void execute(const std::function< void()> &f)
Definition: Window.cpp:110
quori_face::Window::open
static Ptr open(Args &&...args)
Definition: Window.hpp:72
name
GLuint const GLchar * name
Definition: glcorearb.h:762
quori_face::Window::getWidth
std::uint32_t getWidth() const
Definition: Window.cpp:67
quori_face::Window::swapBuffers
void swapBuffers()
Definition: Window.cpp:105
quori_face::Window
Definition: Window.hpp:21
quori_face::WindowManager
Definition: WindowManager.hpp:15
quori_face::Window::bind
void bind()
Definition: Window.cpp:95
quori_face::Window::Ptr
std::shared_ptr< Window > Ptr
Definition: Window.hpp:26
quori_face::Window::pollEvents
static void pollEvents()
Definition: Window.cpp:62
quori_face::Window::~Window
~Window()
Definition: Window.cpp:45
args
f
GLdouble f
Definition: glcorearb.h:291
quori_face::Window::close
void close()
Definition: Window.cpp:51
quori_face::Monitor::ConstPtr
std::shared_ptr< const Monitor > ConstPtr
Definition: Monitor.hpp:20
quori_face::Window::Window
Window(const std::uint32_t width, const std::uint32_t height, const std::string &name)
Definition: Window.cpp:20
quori_face::Window::getHandle
GLFWwindow * getHandle()
Definition: Window.cpp:85


quori_face
Author(s):
autogenerated on Wed Mar 2 2022 00:53:20