Releases: ColleagueRiley/RGFW
RGFW v1.6.0
This release has been focused on ensuring feature parity with GLFW, reviewing included features, and fixing bugs.
major changes:
- RGFW_monitorMode, allows gives the user more control the monitor's mode (size, refreshRate, RGB)
- lots of bug fixes
- more windowing functions and checking functions (floating, focus, aspectRatio, etc)
- RGFW_glHints and more OpenGL hint options (RGB, depth, robustness, release behavior, etc)
- more examples
breaking changes:
- Replace
RGFW_window_setBufferPtr
andRGFW_setBufferSize
withRGFW_window_initBuffer
,RGFW_window_initBufferSize
andRGFW_window_initBufferPtr
Also forces the user to runRGFW_window_initBuffer
to allocate a buffer - add
vector
for raw mouse data (sopoint
can be used to get the regular mouse point) - RGFW_setGLHint and RGFW_glHints enum
- change RGFW_window_fullscreen to RGFW_window_setFullscreen
- make RGFW_window_setFullscreen use exclusive fullscreen
- limit directX support to RGFW_window_createDXSwapChain, most of it should/can be handled by the user
- do not close the window until the (library) user closes it
- add RGFW_monitorMode, move monitor.rect to mode.area and x, y to monitor
- RGFW stalls on RGFW_quit
all changes:
fixes:
- fix wasm key event bug (key release events not being processed)
- fix xDND data restarts bug
- rewrite writeclipboard, ensure the selection is properly being handled and the clipboard is properly being saved after the window is closed
- review winapi window_setIcon (fixes HICON persistance issue)
- make sure RGFW_mousePosCallback is called even for raw input events (winapi)
- handle
WM_SYSKEYDOWN
andWM_SYSKEYUP
events (winapi) - skip x11 mouse button events if the mouse button > 5
- framework CoreVideo is needed to get the monitor's refresh rate (macOS)
- move WM_PAINT to WndProc callback
- ensure setFlag won't cause bugs when it's used to create a window
- update Vulkan example (fix crashes with certain drivers, have triangle follow mouse)
- ensure UTF8 support (winapi)
- make RGFW_window_setFullscreen use exclusive fullscreen
new features:
- add icon example
- add
RGFW_window_center
- add
RGFW_window_borderless
,RGFW_window_allowsDND
andRGFW_window_mouseHidden
for checking for args - add flags example
- fix
RGFW_window_setMaxSize
/RGFW_window_setMinSize
winapi, useSetPropA
GetPropA
to get the window inWndProc
- make RGFW_window_isMaximized actually maximize the window width the API
- fix RGFW_window_setBorder not working after window creation (X11)
- fix window flag bugs (macOS)
- RGFW_window_maximize uses
toggleFullScreen
if the window has no border (macOS) - add support for extra mouse buttons RGFW_mouseMisc1 - RGFW_mouseMisc5
- separate maximize and fullscreen functions
- add RGFW_window_setAspectRatio
- add
RGFW_window_focus
andRGFW_window_raise
- add
RGFW_window_isFloating
andRGFW_window_setFloating
- add
RGFW_getCurrent_OpenGL
- add
RGFW_setXInstName
- add
RGFW_window_setOpacity
- add
RGFW_getTimerFreq
andRGFW_getTimerValue
- add RGFW_window_scaleToMonitor AND RGFW_monitor_requestMode
- add monitor/monitor.c example to show monitor scaling.
- add RGFW_window_setFlags
- add RGFW_windowFloating flag
- add RGFW_COCOA_GRAPHICS_SWITCHING option
- add RGFW_setGLRGBA, RGFW_setGLAccumRGBA RGFW_setGLSRGB, RGFW_setGLRobustness, RGFW_setGLDebug, RGFW_setGLNoError
- add RGFW_setGLReleaseBehavior and RGFW_glRelease enum
- new opengl hint options:
RGFW_glRed, RGFW_glGreen, RGFW_glBlue, RGFW_glAlpha
RGFW_glDepth,
RGFW_glAccumRed, RGFW_glAccumGreen, RGFW_glAccumBlue, RGFW_glAccumAlpha
RGFW_glSRGB
RGFW_glRobustness
RGFW_glDebug
RGFW_glNoError
RGFW_glReleaseBehavior - add RGFW_scrollLock keycode and RGFW_modScrollLock mod key
- add
RGFW_monitorModeCompare
- Add refreshRate to RGFW_monitor
- allow seticon to be undone
- add
RGFW_window_setIconEx
(allows you to set titleBar icon, window icon or both) - add mode.red, mode.green, mode.blue
- add smooth-resize example
- Replace
RGFW_window_setBufferPtr
andRGFW_setBufferSize
withRGFW_window_initBuffer
,RGFW_window_initBufferSize
andRGFW_window_initBufferPtr
Also forces the user to runRGFW_window_initBuffer
to allocate a buffer - add
vector
for raw mouse data (sopoint
can be used to get the regular mouse point) - RGFW_setGLHint and RGFW_glHints enum
- add RGFW_monitorMode, move monitor.rect to mode.area and x, y to monitor
miscellaneous changes:
- Get rid of
RGFW_ALLOC_DROPFILES
(it's not actually useful) - Get rid of RGFW_allocator, most of the memory that needs to be allocated is optional and is allocated on init anyway.
- print errors in writeclipboard (X11)
- fix macOS titlebar api (borderless window)
- remove RGFW_mouseNone (fixes overflow bug, RGFW_mouseNone isn't used anyway)
- expose RGFW_moveToMacOSResourceDir to the public API
- change b8/b32 to single changeable bool type
RGFW_bool
, addRGFW_BOOL
macro for forcing an int to be bool - add
CONVENTIONS.md
- fix RGFW_window_eventWait, make sure RGFW_eventWaitNext is converted if it needs to be, ensure the correct time is used, (winapi, cocoa), make waitMS unsigned
- fix issues with examples compiling (macOS, wasm, X11)
- remove microui_demo on wasm site
- make the default bool type u8
- replace API calls in RGFW_window_getMousePoint with
win->_lastMousePoint
- ensure monitor functions can be used prior to window creation
- change RGFW_window_fullscreen to RGFW_window_setFullscreen
- limit directX support to RGFW_window_createDXSwapChain, most of it should/can be handled by the user
- do not close the window until the (library) user closes it
- RGFW stalls on RGFW_quit
What's Changed
- Debug Callback Implementation by @konopimi in #69
- Kpm vulkan pass mouse data to shader by @konopimi in #71
- X11 Clipboard rewrite by @ColleagueRiley in #72
- add support for extra mouse buttons by @ColleagueRiley in #77
- Window behavior review by @ColleagueRiley in #79
- review windowing by @ColleagueRiley in #80
- review opengl context creation by @ColleagueRiley in #82
- review monitor functions by @ColleagueRiley in #81
New Contributors
Full Changelog: 1.50...1.60
RGFW v1.5.0
RGFW 1.5.0 is released after 4 months of development and includes a lot of major changes!
This may not include all of the changes or breaking changes made.
This is because 1.5 is the first release, and I took releases and release notes more seriously.
In later commits, the CHANGELOG will be updated while the release is being worked on.
1.5 also has many breaking changes. These are essential changes for API consistency and to better expose functionality. Later releases will aim to have fewer breaking commits. I wanted to get as many of these changes out of the way as possible while the project is still relatively new.
major changes:
- gamepad rewrite
- keycode rewrite
- macOS gamepad support
- RGFW_allocator, RGFW_createWindowPtr, and better memory control
- monitor refinement
- A lot of bug fixes
breaking changes:
- gamepad rewrite changes JS/Joystick -> gamepad
- clipboard is now freed by RGFW
- rewrite keymods/ledState -> modState (Control, Shift, numlock, capslock, alt)
- RGFW_window_setMouse -> RGFW_loadMouse, RGFW_window_setMouse, RGFW_freeMouse
- make enum naming more consistent, make window args enums
RGFW_Key -> RGFW_key
RGFW_Control -> RGFW_control (for example)
RGFW_(ARG) -> RGFW_window(Arg)
RGFW_CENTER -> RGFW_windowCenter
- RGFW_window_setMouse -> RGFW_loadMouse, RGFW_window_setMouse, RGFW_freeMouse
all changes:
new features:
- RGFW_setClassName, allows program class (grouping) to be set
- start of MacOS EGL support
- add support for loading an icon from a .rc file
- add RGFW_allocator for runtime changes to the allocator
- add RGFW_readClipboardPtr to load clipboard data into a buffer, or send a NULL buffer to get the size
- RGFW_createWindowPtr to create a window without allocating a window struct
- add gamepad support for macOS (IOKit)
- Add XDL.h to this repo for optionally dynamically linking X11
- auto free clipboard (no need to free it yourself)
- RGFW_window_setBufferPtr to set win->buffer to your own pointer
- RGFW_window_setMouse -> RGFW_loadMouse, RGFW_window_setMouse, RGFW_freeMouse
- Wayland fallback
- fallback to X functions when Wayland function isn't yet supported (eg. clipboard)
- Fallback to X when Wayland compositor is not found (eg. when using an X11 server)
- Allow the user to switch to wayland/X during runtime (you have to compile with Wayland support (RGFW_WAYLAND))
bugs:
- Fix GLX runtime errors for certain GPUs
- Fix C++ support, mostly fixes warnings and errors
- fix ctypes, drop support for non stdint types (MSVC)
- fix RGFW_window_resize lock (when RGFW_noResize is enabled)
- fix xDND crash
- Fix multi-window bugs (macOS)
- fix event misses when the unknown event is sent
- fix scale/center order
- make it easier to add custom backends
- allow for less linking to be required (eg. -lopengl32 -lwimm, optional
RGFW_USE_XDL
)
reviews/rewrites - Wayland rewrite
- Integrate Wayland with X code, allow for callbacks
- monitor review
- SetProcessDPIAware, effective DPI
- fix scaling units and math
- refine monitor support
- fix RGFW_window_getMonitor
- fix hiDPI support (monitor.pixelRatio)
- fix transparency support (GLX) (WGL)
- Windows XP Support, don't call unsupport functions, testing
- remove weird tabbing synax (eg. extra tabbing in a #ifdef for functions)
- gamepad (joystick) review/rewrite
- rename joystick to gamepad
- fix emscripten gamepad, update gamepad api (whichAxis)
- Add L3 + L2 (gamepad)
- add connect, and disconnect events (RGFW_gamepadConnected / RGFW_gamepadDisconnected)
- change enums (RGFW_GP_A -> RGFW_gamepadA)
- support for gamepad names, types, refined axis checking, change mapping
- fix gamepad bugs and make gamepad support more stable overall
- get gamepad count
- RGFW_isPressedGamepad, RGFW_isHeldGamepad, RGFW_isReleasedGamepad, RGFW_wasPressedGamepad, RGFW_getGamepadAxis, RGFW_getGamepadName, RGFW_getGamepadCount, RGFW_getGamepadType
- keycode rewrite/review
- rewrite keycodes to use physical keycodes (event.key) and add keyChar for scancodes
- Ensure all functions use RGFWDEF
- Remove the convert key from the char function -> event.keyChar (keycode)
- refine RGFW raw input support
- dependency limiting
- get rid of CoreVideo dependency
- remove internal dependency on math.h
- allow for the use of the standard library to be limited
- make enum naming more consistent, make window args enums,
- rewrite keymods/ledState -> modState (Control, Shift, numlock, capslock, alt)
- Update UTF8 support
- Update Wayland support
new examples: - DOOM example on the website
- MicroUI example
- metal example
- fix Vulkan example
- add OSMesa example
- Add minimal linking
- Add custom backend example
- Add gamepad example
- Add no standard library example
What's Changed (pull requests)
- Fix casting warnings when building in MSVC by @JeffM2501 in #43
- fixed cross initialization with a jump to label in cpp by @DarekParodia in #44
- a more polished README.md by @TheYahton in #52
- unnecessary
static
keywords by @TheYahton in #54 - keycode rewrite by @ColleagueRiley in #53
- update RGFW gamepad support by @ColleagueRiley in #60
- Update simple example to add scancode by @zenitsuy in #61
- Gamepad update 2 by @ColleagueRiley in #62
- Update Wayland backend by @ColleagueRiley in #64
New Contributors
- @meshula made their first contribution in #38
- @TheLastVoyager made their first contribution in #42
- @JeffM2501 made their first contribution in #43
- @DarekParodia made their first contribution in #44
- @TheYahton made their first contribution in #52
- @ColleagueRiley made their first contribution in #53
- @zenitsuy made their first contribution in #61
Full Changelog: 1.06...1.50
RGFW 1.06
Quality of life update:
- more opengl options (core vs comp, disable double buffer, samples defaults to 0)
- deleted unneeded functions
- Experimental Wayland support
- re-done Makefile, with
- More MSVC support
- c++ support
- nuklear example
- Metal example
(Bug fixes)
- raw input data shouldn't be flipped
What's Changed
- fix: window not at the front on macOS by @omnisci3nce in #29
- fix(msvc): cpp cast error, .rh header redefinition warnings by @lesleyrs in #30
- fix: gl33 example by @lesleyrs in #31
- fix(windows): don't show dummy window on start by @lesleyrs in #32
New Contributors
- @omnisci3nce made their first contribution in #29
- @lesleyrs made their first contribution in #30
Full Changelog: 1.05...1.06
RGFW 1.05
- fixes a lot of bugs
- general quality of life/code updates
- HTML5 backend
- raw mouse input
Full Changelog: 1.00...1.05
RGFW 1.0
RGFW 1.0 is Finally out, with plenty of bug fixes and features being properly implemented on all OSes.
Plus a couple more features added for sake of completeness. Some reworking of functions and other cleaning of the RGFW codebase.
All of RGFW's basic features should be mostly finished now, the next release will focus on adding things not included in base RGFW 1.0.
What's Changed
Full Changelog: 0.99...1.00
RGFW binaries
What's Changed
- fixed issue with move and resize event on X11 by @Code-Nycticebus in #17
- Update RGFW.h by @robrohan in #18 (fixes bug with drag and drop data (X11))
- Keycodes are abstracted into an enum and a lookup table
- new events are added
New Contributors
- @Code-Nycticebus made their first contribution in #17
- @robrohan made their first contribution in #18
Full Changelog: 0.98...0.99
RGFW binaries
Full Changelog: 0.91...0.98
RGFW binaries
Full Changelog: 0.90...0.91
RGFW binaries
0.90 update build system