Commit graph

290 commits

Author SHA1 Message Date
Daniel Collin 849a640eb5 Clamp height in Image_Center 2020-05-23 12:37:25 +02:00
Antonino Siena 31d872353c
Use xkbcommon's function to convert a keysym to a unicode point (#184)
* Use xkbcommon's function to convert a keysym to a unicode point

* Simplified code_point check

Co-authored-by: Antonino Siena <a.siena@gmx.de>
2020-05-21 09:46:05 +02:00
Arif Roktim adffe0814f
Remove usage of the time crate (#183)
Replace calls to time::precise_time_s with std::time::Instant.

Also replaced the type of a time variable with std::time::Duration
because it played nicely with using Instant
2020-05-21 09:42:43 +02:00
Cameron McCormack 2c3fc9526c
comment fix (#178) 2020-05-04 13:19:45 +02:00
Nelson Chen 542da074fe
Delete old menu system sketch code from 4 years ago (#180)
It's commented out and successor menu code is in.
2020-05-04 13:19:15 +02:00
Antonino Siena b4adefd9d9
[WIP] Cursor visibility (#170)
* Cursor visibility

* Implement cursor visiblity for X11 and Wayland

* Implement cursor visibility for Windows

* Implement cursor visibility on Redox

* Implement cursor visiblity for OSX

* Semicolons

* Wrong method

* Missing argument

Co-authored-by: Antonino Siena <a.siena@gmx.de>
2020-04-21 15:13:12 +02:00
Christofer Nolander f769fe60ca
Implemented std::error::Error for minifb::Error (#168)
* Implemented std::error::Error for minifb::Error

* Fix rustfmt
2020-04-20 07:11:10 +02:00
Antonino Siena d2fe8c0469
Transparency (#164)
* Add transparency field to WindowOptions

* Add transparency example

* Implement transparency on Wayland

* Improvements

* [WIP] X11 transparency

* Restructure

* Redox implement transparency

* Update src/lib.rs

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

* Rust-2018 changes

* Fixed issue

* cargo fmt

* [WIP] Implement alpha transparency for windows

* Staging Windows code

* Transparency is currently unimplemented on Windows

* Add note

* Dont use assertions

* Correction

Co-authored-by: Antonino Siena <a.siena@gmx.de>
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
2020-04-15 15:11:23 +02:00
Antonino Siena 29a4c5d9df
Implement borderless on X11 (#165)
* Wayland implementation restructuration

* Moved previous X11 code into own module

* Moved some data into a common struct between wayland and x11

* Added glue

* Moved common unix functions into module

* Revert commits

* Update x11.rs

* Update x11.rs

* Cargo fmt

* Cargo fmt

* Initial Wayland struct and constructors

* Create Wayland window first

* Window::new constructor and removed error type

* Complete window creation

* More docs

* Fixed window creation

* Proper window creation

* Added byteorder

* Disallow resize and set_title

* Implement is_open() and get_window_handle()

* Fixed get_size() and implemented set_position()

* Wayland set_position was missing

* Added WIP update methods

* Improved update methods

* Added more prototype functions

* Get Keyboard and Mouse device

* outsource input device creation

* get proper mouse positions

* Properly get scroll wheel

* Implement HasRawWindowHandle for Wayland Window

* Implemented updaterate methods

* is active method

* More key handler methods

* Retrieve all events from keyboard and mouse

* Added more DisplayInfo methods

* Improvements for event handling

* Partial support for scaling

* Properly update buffer

* More imports

* Styling, etc.

* Merge

* More code to update the framebuffer

* Added scaling again

* Readded better event handling

* Properly render all colors as non-transparent ones

* Clear all events after being read

* update_with_buffer_stride is not WIP anymore

* Assume a connected keyboard and pointer device

* Moved keyboard and pointer from DisplayInfo into Window

* Support resizing and checking if the window is still open

* Rendering performance improvement

* Less warnings and some comments

* Byteorder now required anymore

* Not anymore resizing the ShmPool below its previous size and remove WlBuffers when told to

* Removed more magic numbers and added comments

* Proper size check of the buffer size

* Less conversions

* save the previous framebuffer size in DisplayInfo instead of seeking the fd

* Set the pixelformat statically depending on whether alpha channel is allowed or not

* Set the fd length only again when the size really changes

* Save resizability so that the size of the window doesnt get changed.

* Fix rerendering issue

* Fix rerendering issue

* Using unstable protocol to support server-side decorations

* Outsource buffer creation code

* Small improvements and comments

* Replaced usage of atomic types

* Cleanup

* Outsource Input handling into own struct

* Use mspc channels instead of Vec for input handling

* Implemented set_cursor_style()

* Proper cursorstyle into string decoding

* Implemented mouse buttons

* Scroll wheel fix

* Handle scroll events

* Updated code for new version of the wayland crate

* Reset scroll after each update

* Starting on keymap support with xkb

* Revert 19a590a

* Add missing bracket

* added missing minimum version for surface.damage_buffer()

* Fix for corrupted pointer images

* Implement scaling

* Remove comments

* Acknowledge only the last configure event when redrawing

* Assign the closure to the toplevel only once

* Own function for buffer filtering

* Dont truncate the fd anymore

* Proper damage surface

* Preventg display from getting dropped first

* custom BufferPool implementation

* Unneccessary printlns

* ack configure before committing

* set active field when keyboard focus enters/leaves the surface

* save modifiers each time they are changed

* Requires xkbcommon-sys to retrieve the keymap - will later be removed

* Prototype function to convert a key

* simplify keymap creation

* handle key event

* simplify button state evaluation

* Create wl_seat earlier so events are not getting missed

* Added key conversions and key offset

* Cargo fmt

* Update keyhandler

* Renaming

* Update xkb keys

* Input callback

* Numpad corrections

* Remove publicity from functions

* Retrieve input devices as early as possible

* TODO

* Small cleanup

* Proper key modifiers update

* Scale::FitScreen cant be implemented for now

* finish menu functions(copied from x11)

* Clean up some stuff

* unused variables

* Less warnings

* Comments and Variable naming improvements

* retrieve toplevel info now with an own method

* Constants

* Remove unused function

* Unused field

* Unused let binding

* Improve code readability

* Change note

* Comments

* Opinionated cleanup

* Comment out unused variables

Might be used later on

* Mouse buttons with boolean state

* Prototype UnixMenu functions

* Renaming

* unimplemented functions

* actually unimplemented

* Minor formatting change

* Remove unused fields

Even if they will be used later on, this would be a breaking change.
It's unnecessary to keep these around no matter what the future may
hold.

* Less unwraping now

* Feature gate x11 and wayland, both enabled by default

* Feature gate dependencies

* Menu is now is a new file for both x11 and wayland

* Feature gate everything

* Cargo fmt

* Simplify conditions

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

* Missing paranthesis

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

* Cargo fmt

* Proper debug message

* wayland deps

* xkb dev lib

* Update Cargo.toml

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

* Update .github/workflows/ci.yml

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

* Implement borderless on X11

Co-authored-by: Antonino Siena <a.siena@gmx.de>
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
2020-04-14 16:36:54 +02:00
Antonino Siena f97d90b7a7
[Testing] Implement is_active() on windows and x11 (#163)
* X11 implement is_active()

* winapi implement is_active()

Co-authored-by: Antonino Siena <a.siena@gmx.de>
2020-04-06 08:21:03 +02:00
Daniel Collin ed24e436f0 Bump to 0.16.0 2020-04-05 07:34:50 +02:00
Antonino Siena d77e559b0f
Wayland support (#141)
* Wayland implementation restructuration

* Moved previous X11 code into own module

* Moved some data into a common struct between wayland and x11

* Added glue

* Moved common unix functions into module

* Revert commits

* Update x11.rs

* Update x11.rs

* Cargo fmt

* Cargo fmt

* Initial Wayland struct and constructors

* Create Wayland window first

* Window::new constructor and removed error type

* Complete window creation

* More docs

* Fixed window creation

* Proper window creation

* Added byteorder

* Disallow resize and set_title

* Implement is_open() and get_window_handle()

* Fixed get_size() and implemented set_position()

* Wayland set_position was missing

* Added WIP update methods

* Improved update methods

* Added more prototype functions

* Get Keyboard and Mouse device

* outsource input device creation

* get proper mouse positions

* Properly get scroll wheel

* Implement HasRawWindowHandle for Wayland Window

* Implemented updaterate methods

* is active method

* More key handler methods

* Retrieve all events from keyboard and mouse

* Added more DisplayInfo methods

* Improvements for event handling

* Partial support for scaling

* Properly update buffer

* More imports

* Styling, etc.

* Merge

* More code to update the framebuffer

* Added scaling again

* Readded better event handling

* Properly render all colors as non-transparent ones

* Clear all events after being read

* update_with_buffer_stride is not WIP anymore

* Assume a connected keyboard and pointer device

* Moved keyboard and pointer from DisplayInfo into Window

* Support resizing and checking if the window is still open

* Rendering performance improvement

* Less warnings and some comments

* Byteorder now required anymore

* Not anymore resizing the ShmPool below its previous size and remove WlBuffers when told to

* Removed more magic numbers and added comments

* Proper size check of the buffer size

* Less conversions

* save the previous framebuffer size in DisplayInfo instead of seeking the fd

* Set the pixelformat statically depending on whether alpha channel is allowed or not

* Set the fd length only again when the size really changes

* Save resizability so that the size of the window doesnt get changed.

* Fix rerendering issue

* Fix rerendering issue

* Using unstable protocol to support server-side decorations

* Outsource buffer creation code

* Small improvements and comments

* Replaced usage of atomic types

* Cleanup

* Outsource Input handling into own struct

* Use mspc channels instead of Vec for input handling

* Implemented set_cursor_style()

* Proper cursorstyle into string decoding

* Implemented mouse buttons

* Scroll wheel fix

* Handle scroll events

* Updated code for new version of the wayland crate

* Reset scroll after each update

* Starting on keymap support with xkb

* Revert 19a590a

* Add missing bracket

* added missing minimum version for surface.damage_buffer()

* Fix for corrupted pointer images

* Implement scaling

* Remove comments

* Acknowledge only the last configure event when redrawing

* Assign the closure to the toplevel only once

* Own function for buffer filtering

* Dont truncate the fd anymore

* Proper damage surface

* Preventg display from getting dropped first

* custom BufferPool implementation

* Unneccessary printlns

* ack configure before committing

* set active field when keyboard focus enters/leaves the surface

* save modifiers each time they are changed

* Requires xkbcommon-sys to retrieve the keymap - will later be removed

* Prototype function to convert a key

* simplify keymap creation

* handle key event

* simplify button state evaluation

* Create wl_seat earlier so events are not getting missed

* Added key conversions and key offset

* Cargo fmt

* Update keyhandler

* Renaming

* Update xkb keys

* Input callback

* Numpad corrections

* Remove publicity from functions

* Retrieve input devices as early as possible

* TODO

* Small cleanup

* Proper key modifiers update

* Scale::FitScreen cant be implemented for now

* finish menu functions(copied from x11)

* Clean up some stuff

* unused variables

* Less warnings

* Comments and Variable naming improvements

* retrieve toplevel info now with an own method

* Constants

* Remove unused function

* Unused field

* Unused let binding

* Improve code readability

* Change note

* Comments

* Opinionated cleanup

* Comment out unused variables

Might be used later on

* Mouse buttons with boolean state

* Prototype UnixMenu functions

* Renaming

* unimplemented functions

* actually unimplemented

* Minor formatting change

* Remove unused fields

Even if they will be used later on, this would be a breaking change.
It's unnecessary to keep these around no matter what the future may
hold.

* Less unwraping now

* Feature gate x11 and wayland, both enabled by default

* Feature gate dependencies

* Menu is now is a new file for both x11 and wayland

* Feature gate everything

* Cargo fmt

* Simplify conditions

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

* Missing paranthesis

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

* Cargo fmt

* Proper debug message

* wayland deps

* xkb dev lib

* Update Cargo.toml

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

* Update .github/workflows/ci.yml

Co-Authored-By: Cole Helbling <cole.e.helbling@outlook.com>

Co-authored-by: Antonino Siena <a.siena@gmx.de>
Co-authored-by: Cole Helbling <cole.e.helbling@outlook.com>
2020-04-05 06:49:25 +02:00
phillvancejr 3d5ae73135
Removed NSLog(@"Names %@", [g_library functionNames]); debug call from src/native/macosx/MacMiniFB.m (#156) 2020-03-31 16:24:21 +02:00
dependabot-preview[bot] 880e8db6df
Update wayland-protocols requirement from 0.24 to 0.25 (#142)
Updates the requirements on [wayland-protocols](https://github.com/smithay/wayland-rs) to permit the latest version.
- [Release notes](https://github.com/smithay/wayland-rs/releases)
- [Changelog](https://github.com/Smithay/wayland-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smithay/wayland-rs/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-31 09:05:19 +02:00
Daniel Collin 1f21794c8c
Lint fix again 2020-03-31 07:40:11 +02:00
Daniel Collin 434ba591f2
Fixed lint error 2020-03-31 07:35:59 +02:00
phillvancejr fbf1d54db6
Added Topmost/Always on Top functionality to MacOS (#154)
* Added a topmost property to WindowOptons and initialized it to false in WindowOption's default method

* Added an mfb_topmost function that sets the window's floating level to NSFloatingWindowLevel so it will be topmost

* Added an extern definition of mfb_topmost and conditionally call it if WindowOptions.topmost is true

* changing mfb_topmost first arg name from win to window to staty consistent with rust extern declaration
2020-03-31 07:28:52 +02:00
dependabot-preview[bot] e6514ba553
Update wayland-client requirement from 0.24 to 0.25 (#143)
Updates the requirements on [wayland-client](https://github.com/smithay/wayland-rs) to permit the latest version.
- [Release notes](https://github.com/smithay/wayland-rs/releases)
- [Changelog](https://github.com/Smithay/wayland-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smithay/wayland-rs/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-20 14:01:44 +01:00
MikaelUrankar 9dcde0c913
Add support for armv6, armv7 and aarch64 on FreeBSD (#149) 2020-03-20 13:56:42 +01:00
Lev Eniseev 096147f288
Change Error to use custom fmt::Debug messages (#152)
std::error::Error::description is deprecated, so I changed the
fmt::Display implementation to rely on fmt::Debug implementation, which,
in turn, return human-readable messages like description was doing
2020-03-18 18:53:24 +01:00
Alex Melville 8ee5269fa2
add get_keys_released method to Window (#151) 2020-03-17 18:17:04 +01:00
dependabot-preview[bot] 9d5529422c
Update png requirement from 0.15 to 0.16 (#146)
Updates the requirements on [png](https://github.com/image-rs/image-png) to permit the latest version.
- [Release notes](https://github.com/image-rs/image-png/releases)
- [Changelog](https://github.com/image-rs/image-png/blob/master/CHANGES.md)
- [Commits](https://github.com/image-rs/image-png/compare/v0.15.0...v0.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 08:54:20 +01:00
Daniel Collin 882e7bc7ad Bump to 0.15.3 2020-01-21 22:13:19 +01:00
Daniel Collin acc25a0176 Added NSView for raw_window_handle on macOS 2020-01-21 22:11:46 +01:00
Daniel Collin b310fd372c Bump to 0.15.2 2020-01-21 21:35:53 +01:00
Daniel Collin 635e2a58e0 Fixed block forever on macOS 2020-01-21 21:32:37 +01:00
Antonino Siena 0a72653310 Restructure Unix implementation in preparation for Wayland support
* Wayland implementation restructuration

* Moved previous X11 code into own module

* Moved some data into a common struct between wayland and x11

* Added glue

* Moved common unix functions into module

* Revert commits

* Update x11.rs

* Update x11.rs

* Cargo fmt

* Cargo fmt
2020-01-18 09:15:15 +01:00
Daniel Collin 703477f742 Removed required version 2020-01-10 09:55:56 +01:00
Daniel Collin c95faa8c50 Added default rustfmt config 2020-01-02 16:20:37 +01:00
Daniel Collin 6d616640dc Rustfmt pass 2020-01-01 09:53:28 +01:00
Daniel Collin e02b44629c Add check for rustfmt 2020-01-01 09:51:10 +01:00
Antonino Siena 51bdfcc5ca Moved codebase to edition 2018 (#127)
* Moved to Rust edition 2018

* Changed redox code as well

* Undo typo

* Another correction
2019-12-30 19:34:27 +01:00
Daniel Collin 5cf1708938 Bump to 0.15.1 2019-12-27 13:28:49 +01:00
Daniel Collin 745cfec45e Added proper access to HasRawWindowHandle 2019-12-27 13:26:41 +01:00
Daniel Collin cf64bf872b Removed non-needed file 2019-12-16 13:57:49 +01:00
Daniel Collin be316da65a
Update CHANGELOG.md 2019-12-16 09:49:52 +01:00
Daniel Collin 84242d62b7 rustfmt pass 2019-12-16 08:41:06 +01:00
Daniel Collin fd3852e5fd
Update CHANGELOG.md 2019-12-16 08:27:44 +01:00
Daniel Collin 8b3c2e9b37
Merge dev -> master (#119)
* Deprecated update_with_buffer and added a temporary (update_with_buffer_size) for now. This will later be removed and the update_with_buffer is requiring the size to bu suplied

* Reparation for 0.14 release

* Missed one case

* Minor cleanup

* Switch to C scalar for Unix + rename

Reason is so we can always use optimized scalar even in debug.
Also removed _size so only update_with_buffer(..) takes width, height of the input buffer

* Implemented AspectRatio aware scale on nix

* Implemented image center

* Added UpperLeft center mode for unix

* Moving macOS over to sized update

* Fixed resize not working on macOS

* WIP on macOS

* More WIP on macOS version

* Bunch of macOS updates and fixes

* Fixed broken bg color on macOS

* Windows fixes WIP

* Remove some spamming

* More windows fixes

* Windows fixes for cursor and warnings

* Some cleanup

* rustfmt pass

* Fixed typo

* Added support for limiting update rate

* Added update rate to Windows

* Added update rate to macOS

* Misc fixes

* Fixed resources and maintance badge

* Updated readme

* Updated changelog

* Added rate limit
2019-12-16 08:24:48 +01:00
Daniel Collin f181e2d67c Fixed resize not working on macOS 2019-12-07 20:11:11 +01:00
Daniel Collin 01e0ead2ad fixed typo 2019-12-03 15:36:55 +01:00
Daniel Collin daa57e9fa9 Set arrow as default cursor on Windows 2019-12-03 15:31:45 +01:00
Daniel Collin 5772cc5380
Merge dev -> master (#111)
* Deprecated update_with_buffer and added a temporary (update_with_buffer_size) for now. This will later be removed and the update_with_buffer is requiring the size to bu suplied

* Reparation for 0.14 release

* Missed one case
2019-12-03 15:24:03 +01:00
Daniel Collin a2633f78ad
Raw window handle (#110)
* Added support for raw-window-handle

Ref #104

* Fixed some typos

* Fixed more typos

* windows fix

* Another windows fix

* Another typo

* More typos

* More windwos fixes

* Yet anonther Windows fix
2019-12-02 15:51:46 +01:00
Florian Blasius 9c86b47ec5 Add support for raspberry pi. (#108) 2019-11-29 19:54:52 +01:00
Daniel Collin 8de9567541 rustfmt pass 2019-11-27 08:03:33 +01:00
Daniel Collin 38fa50a4ef rustfmt 2019-11-27 07:59:15 +01:00
mishazawa 8d8c8a56db Add example Julia set (#106) 2019-11-27 07:57:32 +01:00
Daniel Collin bac71b2979
Switched from Travis/Appveyor to GH Actions (#103)
* Inital CI for GH

* Added Windows and macOS

* Lets try again

* Readme now points to GH CI

* Removed travis and appveor configs
2019-11-11 15:29:43 +01:00
Gary Guo bf4eb2d092 Handle missing Alt keys in X11 (#99) 2019-11-04 08:15:19 +01:00