Connect iced_web with iced properly
This commit is contained in:
parent
871eb41430
commit
c7ef9d0da7
5 changed files with 42 additions and 22 deletions
36
src/lib.rs
36
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: Application>(A);
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
impl<A> iced_winit::Application for Instance<A>
|
||||
where
|
||||
A: Application,
|
||||
|
|
@ -41,3 +41,19 @@ where
|
|||
self.0.view()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
impl<A> iced_web::Application for Instance<A>
|
||||
where
|
||||
A: Application,
|
||||
{
|
||||
type Message = A::Message;
|
||||
|
||||
fn update(&mut self, message: Self::Message) {
|
||||
self.0.update(message);
|
||||
}
|
||||
|
||||
fn view(&mut self) -> Element<Self::Message> {
|
||||
self.0.view()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
src/web.rs
Normal file
1
src/web.rs
Normal file
|
|
@ -0,0 +1 @@
|
|||
pub use iced_web::*;
|
||||
11
src/winit.rs
Normal file
11
src/winit.rs
Normal file
|
|
@ -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>;
|
||||
Loading…
Add table
Add a link
Reference in a new issue