mirror of
https://github.com/rust-windowing/winit.git
synced 2026-06-26 22:53:15 -04:00
* partial implementation for emscripten
this pull request contain a partial but working implementation of emscripten backend
some implementations may be controversial.
here some implementation detail:
* cursor state:
* on grab: emscripten request pointer lock deferred and also set a callback when pointer lock change
the callback request pointer lock deferred.
* on hide: `emscripten_hide_mouse` exist but not `emscripten_show_mouse`
a pull request has been open on october 2016 but never been merged
so I copied the javascript function and put it in emscripten_asm_const function
* fullscreen: if fullscreen is requested then it request fullscreen deferred and set a callback on fullscreen change
the callback request fullscreen deferred
* run forever: this method use emscripten main loop to run an infinite loop
* keyboard callback doesn't consume the event. I think it is more apopriate as in desktop environment it is the same, is it ?
* emscripten dir is added in example and contains html pages
Some things that are not implemented:
* lots of events
* min and max dimension can be implemented with a callback that listen to size change and resize if dimension out of bound
* title may be implemented using javascript to change document.title
* Use std::os::raw in the emscripten bindings
* Fix emscripten code
* Update code
* Add CI
* Remove the emscripten-specific examples
* Add some information to the README
26 lines
810 B
Rust
26 lines
810 B
Rust
pub use self::platform::*;
|
|
|
|
#[cfg(target_os = "windows")]
|
|
#[path="windows/mod.rs"]
|
|
mod platform;
|
|
#[cfg(any(target_os = "linux", target_os = "dragonfly", target_os = "freebsd", target_os = "openbsd"))]
|
|
#[path="linux/mod.rs"]
|
|
mod platform;
|
|
#[cfg(target_os = "macos")]
|
|
#[path="macos/mod.rs"]
|
|
mod platform;
|
|
#[cfg(target_os = "android")]
|
|
#[path="android/mod.rs"]
|
|
mod platform;
|
|
#[cfg(target_os = "ios")]
|
|
#[path="ios/mod.rs"]
|
|
mod platform;
|
|
#[cfg(target_os = "emscripten")]
|
|
#[path="emscripten/mod.rs"]
|
|
mod platform;
|
|
|
|
#[cfg(all(not(target_os = "ios"), not(target_os = "windows"), not(target_os = "linux"),
|
|
not(target_os = "macos"), not(target_os = "android"), not(target_os = "dragonfly"),
|
|
not(target_os = "freebsd"), not(target_os = "openbsd"), not(target_os = "emscripten")))]
|
|
use this_platform_is_not_supported;
|