GearEngine  0.0.1
Gear::WindowsWindow 클래스 참조

#include <WindowsWindow.h>

Gear::WindowsWindow에 대한 상속 다이어그램 :
Inheritance graph
Gear::WindowsWindow에 대한 협력 다이어그램:
Collaboration graph

클래스

struct  WindowData
 

Public 타입

using EventCallbackFn = std::function< void(Event &)>
 

Public 멤버 함수

 WindowsWindow (const WindowProps &props)
 
virtual ~WindowsWindow ()
 
void OnUpdate () override
 
unsigned int GetWidth () const override
 
unsigned int GetHeight () const override
 
void SetEventCallback (const EventCallbackFn &callback) override
 
void SetVSync (bool enabled) override
 
bool IsVSync () const override
 
virtual void * GetNativeWindow () const
 

정적 Public 멤버 함수

static WindowCreate (const WindowProps &props=WindowProps())
 

Private 멤버 함수

virtual void Init (const WindowProps &props)
 
virtual void Shutdown ()
 

Private 속성

GLFWwindow * m_Window
 
Scope< GraphicsContextm_Context
 
WindowData m_Data
 

상세한 설명

WindowsWindow.h 파일의 8 번째 라인에서 정의되었습니다.

멤버 타입정의 문서화

◆ EventCallbackFn

using Gear::Window::EventCallbackFn = std::function<void(Event&)>
inherited

Window.h 파일의 24 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ WindowsWindow()

Gear::WindowsWindow::WindowsWindow ( const WindowProps props)

WindowsWindow.cpp 파일의 24 번째 라인에서 정의되었습니다.

25  {
27 
28  Init(props);
29  }
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ~WindowsWindow()

Gear::WindowsWindow::~WindowsWindow ( )
virtual

WindowsWindow.cpp 파일의 31 번째 라인에서 정의되었습니다.

32  {
34 
35  Shutdown();
36  }
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 함수 문서화

◆ Create()

Window * Gear::Window::Create ( const WindowProps props = WindowProps())
staticinherited

WindowsWindow.cpp 파일의 19 번째 라인에서 정의되었습니다.

20  {
21  return new WindowsWindow(props);
22  }
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetHeight()

unsigned int Gear::WindowsWindow::GetHeight ( ) const
inlineoverridevirtual

Gear::Window를 구현.

WindowsWindow.h 파일의 16 번째 라인에서 정의되었습니다.

16 { return m_Data.Height; }

◆ GetNativeWindow()

virtual void* Gear::WindowsWindow::GetNativeWindow ( ) const
inlinevirtual

Gear::Window를 구현.

WindowsWindow.h 파일의 23 번째 라인에서 정의되었습니다.

23 { return m_Window; }

◆ GetWidth()

unsigned int Gear::WindowsWindow::GetWidth ( ) const
inlineoverridevirtual

Gear::Window를 구현.

WindowsWindow.h 파일의 15 번째 라인에서 정의되었습니다.

15 { return m_Data.Width; }

◆ Init()

void Gear::WindowsWindow::Init ( const WindowProps props)
privatevirtual

WindowsWindow.cpp 파일의 38 번째 라인에서 정의되었습니다.

39  {
41 
42  m_Data.Title = props.Title;
43  m_Data.Width = props.Width;
44  m_Data.Height = props.Height;
45 
46 
47  GR_CORE_INFO("Creating window {0} ({1}, {2})", props.Title, props.Width, props.Height);
48 
49  if (s_GLFWWindowCount == 0)
50  {
51  GR_PROFILE_SCOPE("glfwInit");
52  int success = glfwInit();
53  GR_CORE_ASSERT(success, "Could not initialize GLFW!");
54  glfwSetErrorCallback(GLFWErrorCallback);
55  }
56 
57  {
58  GR_PROFILE_SCOPE("glfwCreateWindow");
59  m_Window = glfwCreateWindow((int)props.Width, (int)props.Height, m_Data.Title.c_str(), nullptr, nullptr);
61  }
62 
63  m_Context = CreateScope<OpenGLContext>(m_Window);
64  m_Context->init();
65 
66  glfwSetWindowUserPointer(m_Window, &m_Data);
67  SetVSync(true);
68 
69  //Set GLFW callbacks
70  glfwSetWindowSizeCallback(m_Window, [](GLFWwindow* window, int width, int height)
71  {
72  WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window);
73  data.Width = width;
74  data.Height = height;
75 
76  WindowResizeEvent event(width, height);
77  data.EventCallback(event);
78  });
79 
80  glfwSetWindowCloseCallback(m_Window, [](GLFWwindow* window) {
81  WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window);
82  WindowCloseEvent event;
83  data.EventCallback(event);
84  });
85 
86  glfwSetKeyCallback(m_Window, [](GLFWwindow* window, int key, int scancode, int action, int mods) {
87  WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window);
88 
89  switch (action) {
90  case GLFW_PRESS:{
91  KeyPressedEvent event(key, 0);
92  data.EventCallback(event);
93  }
94  break;
95  case GLFW_RELEASE: {
96  KeyReleasedEvent event(key);
97  data.EventCallback(event);
98  }
99  break;
100  case GLFW_REPEAT: {
101  KeyPressedEvent event(key, 1);
102  data.EventCallback(event);
103  }
104  break;
105  }
106  });
107 
108  glfwSetCharCallback(m_Window, [](GLFWwindow* window, unsigned int keycode) {
109  WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window);
110 
111  KeyTypedEvent event(keycode);
112  data.EventCallback(event);
113  });
114 
115  glfwSetMouseButtonCallback(m_Window, [](GLFWwindow* window, int button, int action, int mods) {
116  WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window);
117 
118  switch (action)
119  {
120  case GLFW_PRESS: {
121  MouseButtonPressedEvent event(button);
122  data.EventCallback(event);
123  }
124  break;
125  case GLFW_RELEASE: {
126  MouseButtonReleasedEvent event(button);
127  data.EventCallback(event);
128  }
129  break;
130  }
131  });
132 
133  glfwSetScrollCallback(m_Window, [](GLFWwindow* window, double xOffset, double yOffset) {
134  WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window);
135 
136  MouseScrolledEvent event((float)xOffset, (float)yOffset);
137  data.EventCallback(event);
138  });
139 
140  glfwSetCursorPosCallback(m_Window, [](GLFWwindow* window, double xPos, double yPos) {
141  WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window);
142 
143  MouseMovedEvent event((float)xPos, (float)yPos);
144  data.EventCallback(event);
145  });
146  }
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ IsVSync()

bool Gear::WindowsWindow::IsVSync ( ) const
overridevirtual

Gear::Window를 구현.

WindowsWindow.cpp 파일의 182 번째 라인에서 정의되었습니다.

183  {
184  return m_Data.VSync;
185  }

◆ OnUpdate()

void Gear::WindowsWindow::OnUpdate ( )
overridevirtual

Gear::Window를 구현.

WindowsWindow.cpp 파일의 161 번째 라인에서 정의되었습니다.

162  {
164 
165  glfwPollEvents();
166  m_Context->SwapBuffers();
167 
168  }

◆ SetEventCallback()

void Gear::WindowsWindow::SetEventCallback ( const EventCallbackFn callback)
inlineoverridevirtual

Gear::Window를 구현.

WindowsWindow.h 파일의 19 번째 라인에서 정의되었습니다.

19 { m_Data.EventCallback = callback; }

◆ SetVSync()

void Gear::WindowsWindow::SetVSync ( bool  enabled)
overridevirtual

Gear::Window를 구현.

WindowsWindow.cpp 파일의 170 번째 라인에서 정의되었습니다.

171  {
173 
174  if (enabled)
175  glfwSwapInterval(1);
176  else
177  glfwSwapInterval(0);
178 
179  m_Data.VSync = enabled;
180  }
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Shutdown()

void Gear::WindowsWindow::Shutdown ( )
privatevirtual

WindowsWindow.cpp 파일의 148 번째 라인에서 정의되었습니다.

149  {
151 
152  glfwDestroyWindow(m_Window);
154 
155  if (s_GLFWWindowCount == 0)
156  {
157  glfwTerminate();
158  }
159  }
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ m_Context

Scope<GraphicsContext> Gear::WindowsWindow::m_Context
private

WindowsWindow.h 파일의 31 번째 라인에서 정의되었습니다.

◆ m_Data

WindowData Gear::WindowsWindow::m_Data
private

WindowsWindow.h 파일의 41 번째 라인에서 정의되었습니다.

◆ m_Window

GLFWwindow* Gear::WindowsWindow::m_Window
private

WindowsWindow.h 파일의 29 번째 라인에서 정의되었습니다.


이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.:
Gear::WindowsWindow::m_Context
Scope< GraphicsContext > m_Context
Definition: WindowsWindow.h:31
Gear::WindowsWindow::WindowData::Width
unsigned int Width
Definition: WindowsWindow.h:35
Gear::WindowsWindow::Init
virtual void Init(const WindowProps &props)
Definition: WindowsWindow.cpp:38
Gear::WindowsWindow::m_Window
GLFWwindow * m_Window
Definition: WindowsWindow.h:29
Gear::WindowsWindow::WindowData::Title
std::string Title
Definition: WindowsWindow.h:34
GR_PROFILE_FUNCTION
#define GR_PROFILE_FUNCTION()
Definition: Instrumentor.h:131
Gear::WindowsWindow::m_Data
WindowData m_Data
Definition: WindowsWindow.h:41
GR_PROFILE_SCOPE
#define GR_PROFILE_SCOPE(name)
Definition: Instrumentor.h:130
Gear::WindowsWindow::WindowData::VSync
bool VSync
Definition: WindowsWindow.h:36
Gear::GLFWErrorCallback
static void GLFWErrorCallback(int error, const char *description)
Definition: WindowsWindow.cpp:14
GR_CORE_ASSERT
#define GR_CORE_ASSERT(x,...)
Definition: Core.h:68
GR_CORE_INFO
#define GR_CORE_INFO(...)
Definition: Log.h:27
Gear::WindowsWindow::SetVSync
void SetVSync(bool enabled) override
Definition: WindowsWindow.cpp:170
Gear::WindowsWindow::Shutdown
virtual void Shutdown()
Definition: WindowsWindow.cpp:148
Gear::WindowsWindow::WindowData::Height
unsigned int Height
Definition: WindowsWindow.h:35
Gear::WindowsWindow::WindowData::EventCallback
EventCallbackFn EventCallback
Definition: WindowsWindow.h:38
Gear::s_GLFWWindowCount
static uint8_t s_GLFWWindowCount
Definition: WindowsWindow.cpp:12