From c7ef9d0da705d8f27011fe41d2103c73aae42d2d Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 23 Oct 2019 02:33:07 +0200 Subject: Connect `iced_web` with `iced` properly --- src/lib.rs | 36 ++++++++++++++++++++++++++---------- src/web.rs | 1 + src/winit.rs | 11 +++++++++++ 3 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 src/web.rs create mode 100644 src/winit.rs (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 46574285..1bcdada2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,13 +1,8 @@ -pub use iced_wgpu::{Primitive, Renderer}; -pub use iced_winit::{ - button, slider, text, winit, Align, Background, Checkbox, Color, Image, - Justify, Length, Radio, Slider, Text, -}; +#[cfg_attr(target_arch = "wasm32", path = "web.rs")] +#[cfg_attr(not(target_arch = "wasm32"), path = "winit.rs")] +mod platform; -pub type Element<'a, Message> = iced_winit::Element<'a, Message, Renderer>; -pub type Row<'a, Message> = iced_winit::Row<'a, Message, Renderer>; -pub type Column<'a, Message> = iced_winit::Column<'a, Message, Renderer>; -pub type Button<'a, Message> = iced_winit::Button<'a, Message, Renderer>; +pub use platform::*; pub trait Application { type Message; @@ -20,12 +15,17 @@ pub trait Application { where Self: 'static + Sized, { - iced_winit::Application::run(Instance(self)) + #[cfg(not(target_arch = "wasm32"))] + iced_winit::Application::run(Instance(self)); + + #[cfg(target_arch = "wasm32")] + iced_web::Application::run(Instance(self)); } } struct Instance(A); +#[cfg(not(target_arch = "wasm32"))] impl iced_winit::Application for Instance where A: Application, @@ -41,3 +41,19 @@ where self.0.view() } } + +#[cfg(target_arch = "wasm32")] +impl iced_web::Application for Instance +where + A: Application, +{ + type Message = A::Message; + + fn update(&mut self, message: Self::Message) { + self.0.update(message); + } + + fn view(&mut self) -> Element { + self.0.view() + } +} diff --git a/src/web.rs b/src/web.rs new file mode 100644 index 00000000..31f1a6fc --- /dev/null +++ b/src/web.rs @@ -0,0 +1 @@ +pub use iced_web::*; diff --git a/src/winit.rs b/src/winit.rs new file mode 100644 index 00000000..64e301f4 --- /dev/null +++ b/src/winit.rs @@ -0,0 +1,11 @@ +pub use iced_wgpu::{Primitive, Renderer}; + +pub use iced_winit::{ + button, slider, text, winit, Align, Background, Checkbox, Color, Image, + Justify, Length, Radio, Slider, Text, +}; + +pub type Element<'a, Message> = iced_winit::Element<'a, Message, Renderer>; +pub type Row<'a, Message> = iced_winit::Row<'a, Message, Renderer>; +pub type Column<'a, Message> = iced_winit::Column<'a, Message, Renderer>; +pub type Button<'a, Message> = iced_winit::Button<'a, Message, Renderer>; -- cgit