Skip to content

Releases: ColleagueRiley/RGFW

RGFW v1.6.0

25 Feb 18:58
Compare
Choose a tag to compare

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 and RGFW_setBufferSize with RGFW_window_initBuffer, RGFW_window_initBufferSize and RGFW_window_initBufferPtr
    Also forces the user to run RGFW_window_initBuffer to allocate a buffer
  • add vector for raw mouse data (so point 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 and WM_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 and RGFW_window_mouseHidden for checking for args
  • add flags example
  • fix RGFW_window_setMaxSize / RGFW_window_setMinSize winapi, use SetPropA GetPropA to get the window in WndProc
  • 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 and RGFW_window_raise
  • add RGFW_window_isFloatingand RGFW_window_setFloating
  • add RGFW_getCurrent_OpenGL
  • add RGFW_setXInstName
  • add RGFW_window_setOpacity
  • add RGFW_getTimerFreq and RGFW_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 and RGFW_setBufferSize with RGFW_window_initBuffer, RGFW_window_initBufferSize and RGFW_window_initBufferPtr
    Also forces the user to run RGFW_window_initBuffer to allocate a buffer
  • add vector for raw mouse data (so point 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, add RGFW_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

New Contributors

Full Changelog: 1.50...1.60

RGFW v1.5.0

14 Jan 11:43
Compare
Choose a tag to compare

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)

New Contributors

Full Changelog: 1.06...1.50

RGFW 1.06

14 Aug 21:12
b3b1be4
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: 1.05...1.06

RGFW 1.05

24 Jul 20:04
Compare
Choose a tag to compare
  • 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

05 Jul 23:00
Compare
Choose a tag to compare

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

26 Jun 23:44
Compare
Choose a tag to compare

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

Full Changelog: 0.98...0.99

RGFW binaries

08 Jun 18:27
Compare
Choose a tag to compare

Full Changelog: 0.91...0.98

RGFW binaries

01 Jun 23:54
Compare
Choose a tag to compare

Full Changelog: 0.90...0.91

RGFW binaries

11 May 02:19
Compare
Choose a tag to compare
0.90

update build system