Toggle navigation
ivorium
iv_components
Example project
GitHub
Main Page
Modules
Classes
Files
File List
File Members
ivorium_graphics
Game
GlfwWindow.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
WindowListener.hpp
"
4
#include "
Window.hpp
"
5
#include "../OpenGL/RenderTarget.hpp"
6
#include <
ivorium_core/ivorium_core.hpp
>
7
#include <optional>
8
9
class
GLFWwindow;
10
11
namespace
iv
12
{
13
14
class
GlfwRenderTarget
:
public
RenderTarget
15
{
16
public
:
17
using
RenderTarget::set_geometry
;
18
using
RenderTarget::frame_setup
;
19
using
RenderTarget::frame_close
;
20
};
21
25
class
GlfwWindow
:
public
Window
26
{
27
public
:
28
GlfwWindow
( std::string
const
& window_title );
29
~GlfwWindow
();
30
31
void
loop
();
32
33
virtual
void
set_listener
(
WindowListener
* listener )
override
;
34
virtual
RenderTarget::Geometry
geometry
()
override
;
35
virtual
RenderTarget
*
render_target
()
override
;
36
virtual
bool
gpu_enabled
()
override
;
37
38
// InputSource
39
virtual
int2
input_position
(
Input::Key
key,
int
device_id )
override
;
40
virtual
float
input_value
(
Input::Key
key,
int
device_id )
override
;
41
virtual
unsigned
input_character
()
override
;
42
43
// window focus and geometry
44
static
void
S_FocusCallback
( GLFWwindow * window,
int
focused );
45
void
FocusCallback
(
int
focused );
46
47
static
void
S_ContentScaleCallback
( GLFWwindow * window,
float
xscale,
float
yscale );
48
void
ContentScaleCallback
(
float
xscale,
float
yscale );
49
50
static
void
S_SizeCallback
( GLFWwindow * window,
int
width,
int
height );
51
void
SizeCallback
(
int
width,
int
height );
52
53
static
void
S_FBSizeCallback
( GLFWwindow * window,
int
width,
int
height );
54
void
FBSizeCallback
(
int
width,
int
height );
55
56
// keyboard
57
static
void
S_KeyCallback
( GLFWwindow * window,
int
key,
int
scancode,
int
action,
int
mods );
58
void
KeyCallback
(
int
key,
int
scancode,
int
action,
int
mods );
59
60
// mouse
61
static
void
S_MouseButtonCallback
( GLFWwindow * window,
int
button,
int
action,
int
mods );
62
void
MouseButtonCallback
(
int
button,
int
action,
int
mods );
63
64
static
void
S_ScrollCallback
( GLFWwindow * window,
double
xoffset,
double
yoffset );
65
void
ScrollCallback
(
double
xoffset,
double
yoffset );
66
67
static
void
S_CharCallback
( GLFWwindow * window,
unsigned
int
codepoint );
68
void
CharCallback
(
unsigned
int
codepoint );
69
70
private
:
71
std::optional< Input::Key > KeyboardKey_GlfwToIvorium(
int
key );
72
std::optional< Input::Key > MouseButton_GlfwToIvorium(
int
button );
73
74
void
render();
75
76
private
:
77
//--- core members ---
78
GLFWwindow * window;
79
WindowListener
* listener;
80
81
GlfwRenderTarget
_render_target;
82
83
//--- partial states ---
84
double
_time_last;
85
86
bool
_focused;
87
unsigned
_current_character;
88
89
double
_floating_fps;
90
};
91
92
}