All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.10.0 - 2025-03-18
- New
dev
branch for active development. - New
ModifierKey::test_any
andModifierKey::test_all
member functions. - Proper unit tests for inputs functionalities.
- New changelog file.
- Error handling for
GLFW_INVALID_VALUE
andGLFW_INVALID_ENUM
addingInvalidValue
andInvalidEnum
class respectively.
- Fix off-by-one error on
pressed_buttons
andreleased_button
member functions for bothKeyStateRecord
andMouseButtonStateRecord
. - Incorrect logger formatting for internal error.
- Missing
error.hpp
include inglfw_cpp.hpp
header.
- Replace variadics functions to single parameter
std::initializer_list
andstd::span
forModifierKey
functions. - Make ModifierKey default constructible.
- Make ModifierKey constructor explicit.
- Make
ModifierKey::test
function take only single parameter. - Make
set_value
,set
, andunset
member functions ofKeyStateRecord
andMouseButtonStateRecord
return its instance to allow chaining. - Make
IEventInterceptor
and its derivatives a class. - Promote the severity of internal error from Error to Critical.
- Add
ErrorCode
enumeration as an alternative type safe GLFW error code. - Add
ErrorCode
information inside theglfw_cpp::Error
class that can be queried withcode()
member function.
0.9.0 - 2025-01-26
- New
Window::toggle_vsync
andWindow::toggle_capture_mouse
member functions. - Extra functionality for ImGui binding for GLFW.
- Make
Window::enqueue_task
takes astd::function<void(Window&)>
instead ofstd::function<void()>
. - Make
IEventInterceptor
abstract class destructor public virtual. - Add
IEventInterceptor*
as first argument forInstance::create_window_manager
function
0.8.0 - 2025-01-17
- Update code style from mainly
camelCase
andPascalCase
tosnake_case
andPascalCase
for variables/functions and types respectively.
0.7.1 - 2025-01-06
- Ability to peek last events through
Window::events
function without polling. - New fields for
Window
events that represent changes/difference. - Ability to directly visit all
Events
inEventQueue
usingEventQueue::visit
member function.
0.7.0 - 2024-10-31
- New
Monitor
entry forWindow
'sProperties
. - New
IEventInterceptor
abstract class for intercepting events polled byWindowManager
. - New
DefaultEventInterceptor
concrete class derived fromIEventInterceptor
that does nothing in its interception. - Proper Doxygen documentation.
- Proper GLFW error handling.
- Add LICENSE.
- Make enumerations PascalCase instead of UPPERCASE to fix naming issue on Windows platform.
- Update the event handling mechanism to be compatible with the act of intercepting them.
- Update the underlying value for enums and wrapper class related to input.
- Make
WindowManager
created fromInstance::create_window_manager
astd::shared_ptr
. - Update README.md.
- Update examples.
0.6.0 - 2024-05-28
- New delta fields for
CursorMoved
event. - New
EventQueue
as an abstraction tostd::vector<Event>
using circular buffer internally. - Ability to destroy
Window
instance and reset to uninitialized state usingWindow::destroy
function. - Minimal error handling.
- Data race when exchanging tasks queue.
- Missing initializer for
FramebufferSize
atWindow
creation. - Example files paths pointing to nonexsistent files.
- Update examples.
0.5.0 - 2024-05-13
- New
Attribute
as fields onWindow
'sProperties
- New APIs for
Window
manipulation:iconify
,restore
,maximize
,show
,hide
, andfocus
. - Clipboard and time API from the underlying GLFW library.
- Ability to lock aspect ratio just like in GLFW.
- New forward compat field to OpenGL API.
- New
FramebufferSize
field onWindow
'sProperties
. - New
Overloaded
helper struct forstd::variant
visitor.
- Missing default initializer for
Window
's fields.
- Make
Window
's default constructor public. - Name the unnamed structs on
Window
'sProperties
. - Move the
Window
's callback set calls fromwindow.cpp
towindow_manager.cpp
just before theWindow
instance created. - OpenGL API defaults to version 3.3.
- Reorder
Instance::LogLevel
enumerations with lower value represent lower severity. - Update examples.
GLFW.h
header include dependency oninput.hpp
.vk::initVulkanLoader
function.
0.4.0 - 2024-05-09
- New APIs for using
Window
manually:use
,poll
,display
,shouldClose
. - Vulkan usage example.
- Erroneous implementation of
WindowManager::hasWindowOpened
function. - Vulkan include issue.
- Update README.md.
- Lower the GLFW version requirement.
0.3.0 - 2024-05-08
- New
KeyStateRecord
struct as field onWindow
'sProperties
for tracking which key is pressed at the last poll. - New
MouseButtonStateRecord
struct as field onWindow
'sProperties
for tracking which button is pressed at the last poll.
- Update README.md.
- Update examples.
0.2.0 - 2024-05-07
- New
m_pos
andm_dimension
fields onWindow
'sProperties
. - New
Monitor
struct as a wrapper toGLFWmonitor*
. - New
m_monitor
andm_share
fields onWindowHint
- New events:
MonitorConnected
,FileDropped
,JoystickConnected
,WindowMaximized
, andWindowScaleChanged
.
- Missing includes and extra includes.
- Rework the event handling mechanism from callback-based to poll-based.
- Update README.md.
- Update examples.
- Update window creation logic to include sharing and monitor data.
- Rename
Context
toInstance
to avoid confusion with OpenGL context.
0.1.0 - 2024-05-02
- New
Context
class that wraps the entire GLFW instance in a RAII class instead of global state. - New
Window
class wrapper forGLFWwindow*
. - New
WindowManager
class to group multipleWindow
s and poll events from OS. - New Vulkan support.
- New examples code.
- New README.md.