slight refactoring
This commit is contained in:
parent
e01df69575
commit
47d28b4f1e
8 changed files with 79 additions and 73 deletions
|
@ -39,11 +39,11 @@ public:
|
|||
void set_visible(bool is_visible);
|
||||
protected:
|
||||
|
||||
on_update_t _on_update;
|
||||
|
||||
struct impl;
|
||||
std::unique_ptr<impl> _impl;
|
||||
|
||||
on_update_t _on_update;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -84,9 +84,10 @@ std::string path::executable_path() const
|
|||
return result;
|
||||
}
|
||||
|
||||
std::string path::find_file(const std::string& filename) const
|
||||
std::string path::find_file(const std::string&) const
|
||||
{
|
||||
// for ()
|
||||
// TODO: Implement
|
||||
return std::string();
|
||||
}
|
||||
|
||||
path::path()
|
||||
|
|
|
@ -48,6 +48,11 @@ struct window::impl {
|
|||
|
||||
// window_context _context;
|
||||
|
||||
static void error_callback(int error, const char* description)
|
||||
{
|
||||
debug::e() << "GLFW error: " << description;
|
||||
}
|
||||
|
||||
static void drop_callback(GLFWwindow* window, int count, const char** paths)
|
||||
{
|
||||
// std::cout << __FUNCTION__ << std::endl;
|
||||
|
@ -73,12 +78,13 @@ struct window::impl {
|
|||
input::get()._mouse_position = pointd(xpos,ypos).cast<float>();
|
||||
}
|
||||
|
||||
|
||||
static void key_callback(GLFWwindow *window,int key, int scancode, int action, int mods)
|
||||
{
|
||||
input::get()._key_code = scancode;
|
||||
input::get()._key_pressed = action;
|
||||
// action 0,1,2
|
||||
// std::cout << __FUNCTION__ << action << std::endl;
|
||||
// std::cout << __FUNCTION__ << action << std::endl;
|
||||
}
|
||||
|
||||
// static void character_callback(GLFWwindow* window, unsigned int codepoint)
|
||||
|
@ -107,66 +113,69 @@ struct window::impl {
|
|||
// glViewport(0, 0, width, height);
|
||||
}
|
||||
|
||||
void update_display_list()
|
||||
{
|
||||
display::_displays.clear();
|
||||
void update_display_list()
|
||||
{
|
||||
display::_displays.clear();
|
||||
|
||||
// fetch all monitors
|
||||
int monitor_count = 0;
|
||||
GLFWmonitor** monitors = glfwGetMonitors(&monitor_count);
|
||||
// fetch all monitors
|
||||
int monitor_count = 0;
|
||||
GLFWmonitor** monitors = glfwGetMonitors(&monitor_count);
|
||||
|
||||
for (int i = 0; i < monitor_count;i++) {
|
||||
display d;
|
||||
d._name = std::string(glfwGetMonitorName(monitors[i]));
|
||||
for (int i = 0; i < monitor_count;i++) {
|
||||
display d;
|
||||
d._name = std::string(glfwGetMonitorName(monitors[i]));
|
||||
|
||||
display::_displays.push_back(d);
|
||||
display::_displays.push_back(d);
|
||||
|
||||
// debug::d() <<
|
||||
}
|
||||
// debug::d() <<
|
||||
}
|
||||
|
||||
// GLFWvidmode
|
||||
// glfwGetVideoModes() ... get all
|
||||
// glfwGetVideoMode( . get current
|
||||
// glfwGetMonitorPos(
|
||||
// glfwGetMonitorPhysicalSize(
|
||||
// glfwGetMonitorName();
|
||||
// GLFWvidmode
|
||||
// glfwGetVideoModes() ... get all
|
||||
// glfwGetVideoMode( . get current
|
||||
// glfwGetMonitorPos(
|
||||
// glfwGetMonitorPhysicalSize(
|
||||
// glfwGetMonitorName();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
impl(window& w)
|
||||
: _parent(w)
|
||||
{
|
||||
// initialize
|
||||
glfwInit();
|
||||
// initialize
|
||||
if (!glfwInit())
|
||||
{
|
||||
debug::e() << "Initalization error";
|
||||
}
|
||||
|
||||
update_display_list();
|
||||
update_display_list();
|
||||
|
||||
// request specific version 3.3
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
|
||||
//
|
||||
_window = glfwCreateWindow(640, 480, "pixwerxs", nullptr, nullptr);
|
||||
//
|
||||
_window = glfwCreateWindow(640, 480, "pixwerx", nullptr, nullptr);
|
||||
|
||||
// make window current
|
||||
glfwMakeContextCurrent(_window);
|
||||
// make window current
|
||||
glfwMakeContextCurrent(_window);
|
||||
|
||||
// load opengl
|
||||
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
|
||||
{
|
||||
debug::e() << "glad couldn't get OpenGL API";
|
||||
}
|
||||
// load opengl
|
||||
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
|
||||
{
|
||||
debug::e() << "glad couldn't get OpenGL API";
|
||||
}
|
||||
|
||||
// check Version
|
||||
int major, minor, rev;
|
||||
major = glfwGetWindowAttrib(_window, GLFW_CONTEXT_VERSION_MAJOR);
|
||||
minor = glfwGetWindowAttrib(_window, GLFW_CONTEXT_VERSION_MINOR);
|
||||
rev = glfwGetWindowAttrib(_window, GLFW_CONTEXT_REVISION);
|
||||
// check Version
|
||||
int major, minor, rev;
|
||||
major = glfwGetWindowAttrib(_window, GLFW_CONTEXT_VERSION_MAJOR);
|
||||
minor = glfwGetWindowAttrib(_window, GLFW_CONTEXT_VERSION_MINOR);
|
||||
rev = glfwGetWindowAttrib(_window, GLFW_CONTEXT_REVISION);
|
||||
|
||||
// maybe something to pass to the outside
|
||||
debug::d() << "OpenGL " << major << "." << minor << "." << rev;
|
||||
// maybe something to pass to the outside
|
||||
debug::d() << "OpenGL " << major << "." << minor << "." << rev;
|
||||
|
||||
glfwSetWindowUserPointer(_window,this);
|
||||
|
||||
|
@ -182,7 +191,10 @@ struct window::impl {
|
|||
glfwSetMouseButtonCallback(_window, mouse_button_callback);
|
||||
glfwSetScrollCallback(_window, scroll_callback);
|
||||
|
||||
// glfwSetWindowCloseCallback(_window,close_callback);
|
||||
|
||||
glfwSetErrorCallback(error_callback);
|
||||
|
||||
//glfwSetWindowCloseCallback(_window,close_callback);
|
||||
}
|
||||
|
||||
~impl()
|
||||
|
@ -192,24 +204,23 @@ struct window::impl {
|
|||
|
||||
bool update()
|
||||
{
|
||||
if (!glfwWindowShouldClose(_window)) {
|
||||
if (_window && !glfwWindowShouldClose(_window))
|
||||
{
|
||||
|
||||
|
||||
// reset input
|
||||
input::get().reset();
|
||||
|
||||
// get new events
|
||||
glfwPollEvents();
|
||||
// // reset input
|
||||
// input::get().reset();
|
||||
|
||||
_parent._on_update(_parent);
|
||||
|
||||
glfwSwapBuffers(_window);
|
||||
|
||||
// // get new events
|
||||
glfwPollEvents();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
void set_title(const std::string& title)
|
||||
|
@ -290,8 +301,6 @@ struct window::impl {
|
|||
//
|
||||
//
|
||||
//
|
||||
|
||||
|
||||
window::window()
|
||||
: _impl(std::make_unique<window::impl>(*this))
|
||||
, _on_update([](window&){})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue