summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2019-10-23 04:52:51 +0200
committerLibravatar GitHub <noreply@github.com>2019-10-23 04:52:51 +0200
commit4769272122e8cd0a4d666bb06c00cb27f8cad3c4 (patch)
tree68e513170347d804f55b3743f1fd960bbf700950 /src
parente95e656fcd780264f7a3c9a2ba3d0bd471d4894e (diff)
parent99e1a3780a1ea3ccb173d1fb4cbe889bb08b9643 (diff)
downloadiced-4769272122e8cd0a4d666bb06c00cb27f8cad3c4.tar.gz
iced-4769272122e8cd0a4d666bb06c00cb27f8cad3c4.tar.bz2
iced-4769272122e8cd0a4d666bb06c00cb27f8cad3c4.zip
Merge pull request #22 from hecrj/basic-renderer
Basic `wgpu` renderer
Diffstat (limited to '')
-rw-r--r--src/lib.rs59
-rw-r--r--src/web.rs1
-rw-r--r--src/winit.rs11
3 files changed, 71 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index e69de29b..1bcdada2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -0,0 +1,59 @@
+#[cfg_attr(target_arch = "wasm32", path = "web.rs")]
+#[cfg_attr(not(target_arch = "wasm32"), path = "winit.rs")]
+mod platform;
+
+pub use platform::*;
+
+pub trait Application {
+ type Message;
+
+ fn update(&mut self, message: Self::Message);
+
+ fn view(&mut self) -> Element<Self::Message>;
+
+ fn run(self)
+ where
+ Self: 'static + Sized,
+ {
+ #[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,
+{
+ type Renderer = Renderer;
+ 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()
+ }
+}
+
+#[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()
+ }
+}
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>;