summaryrefslogtreecommitdiffstats
path: root/wgpu/src/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'wgpu/src/renderer')
-rw-r--r--wgpu/src/renderer/target.rs74
-rw-r--r--wgpu/src/renderer/widget.rs10
-rw-r--r--wgpu/src/renderer/widget/button.rs (renamed from wgpu/src/renderer/button.rs)0
-rw-r--r--wgpu/src/renderer/widget/checkbox.rs (renamed from wgpu/src/renderer/checkbox.rs)0
-rw-r--r--wgpu/src/renderer/widget/column.rs (renamed from wgpu/src/renderer/column.rs)0
-rw-r--r--wgpu/src/renderer/widget/image.rs (renamed from wgpu/src/renderer/image.rs)0
-rw-r--r--wgpu/src/renderer/widget/radio.rs (renamed from wgpu/src/renderer/radio.rs)0
-rw-r--r--wgpu/src/renderer/widget/row.rs (renamed from wgpu/src/renderer/row.rs)0
-rw-r--r--wgpu/src/renderer/widget/scrollable.rs (renamed from wgpu/src/renderer/scrollable.rs)0
-rw-r--r--wgpu/src/renderer/widget/slider.rs (renamed from wgpu/src/renderer/slider.rs)0
-rw-r--r--wgpu/src/renderer/widget/text.rs (renamed from wgpu/src/renderer/text.rs)0
-rw-r--r--wgpu/src/renderer/widget/text_input.rs (renamed from wgpu/src/renderer/text_input.rs)0
12 files changed, 84 insertions, 0 deletions
diff --git a/wgpu/src/renderer/target.rs b/wgpu/src/renderer/target.rs
new file mode 100644
index 00000000..d9d05bf0
--- /dev/null
+++ b/wgpu/src/renderer/target.rs
@@ -0,0 +1,74 @@
+use crate::{Renderer, Transformation};
+
+use raw_window_handle::HasRawWindowHandle;
+
+pub struct Target {
+ surface: wgpu::Surface,
+ width: u16,
+ height: u16,
+ transformation: Transformation,
+ swap_chain: wgpu::SwapChain,
+}
+
+impl Target {
+ pub fn dimensions(&self) -> (u16, u16) {
+ (self.width, self.height)
+ }
+
+ pub fn transformation(&self) -> Transformation {
+ self.transformation
+ }
+
+ pub fn next_frame(&mut self) -> wgpu::SwapChainOutput {
+ self.swap_chain.get_next_texture()
+ }
+}
+
+impl iced_native::renderer::Target for Target {
+ type Renderer = Renderer;
+
+ fn new<W: HasRawWindowHandle>(
+ window: &W,
+ width: u16,
+ height: u16,
+ renderer: &Renderer,
+ ) -> Target {
+ let surface = wgpu::Surface::create(window);
+ let swap_chain =
+ new_swap_chain(&surface, width, height, &renderer.device);
+
+ Target {
+ surface,
+ width,
+ height,
+ transformation: Transformation::orthographic(width, height),
+ swap_chain,
+ }
+ }
+
+ fn resize(&mut self, width: u16, height: u16, renderer: &Renderer) {
+ self.width = width;
+ self.height = height;
+ self.transformation = Transformation::orthographic(width, height);
+ self.swap_chain =
+ new_swap_chain(&self.surface, width, height, &renderer.device);
+ }
+}
+
+fn new_swap_chain(
+ surface: &wgpu::Surface,
+ width: u16,
+ height: u16,
+ device: &wgpu::Device,
+) -> wgpu::SwapChain {
+ device.create_swap_chain(
+ &surface,
+ &wgpu::SwapChainDescriptor {
+ usage: wgpu::TextureUsage::OUTPUT_ATTACHMENT,
+ format: wgpu::TextureFormat::Bgra8UnormSrgb,
+ width: u32::from(width),
+ height: u32::from(height),
+ present_mode: wgpu::PresentMode::Vsync,
+ },
+ )
+}
diff --git a/wgpu/src/renderer/widget.rs b/wgpu/src/renderer/widget.rs
new file mode 100644
index 00000000..52410bee
--- /dev/null
+++ b/wgpu/src/renderer/widget.rs
@@ -0,0 +1,10 @@
+mod button;
+mod checkbox;
+mod column;
+mod image;
+mod radio;
+mod row;
+mod scrollable;
+mod slider;
+mod text;
+mod text_input;
diff --git a/wgpu/src/renderer/button.rs b/wgpu/src/renderer/widget/button.rs
index ad2186d6..ad2186d6 100644
--- a/wgpu/src/renderer/button.rs
+++ b/wgpu/src/renderer/widget/button.rs
diff --git a/wgpu/src/renderer/checkbox.rs b/wgpu/src/renderer/widget/checkbox.rs
index ea7a4c0b..ea7a4c0b 100644
--- a/wgpu/src/renderer/checkbox.rs
+++ b/wgpu/src/renderer/widget/checkbox.rs
diff --git a/wgpu/src/renderer/column.rs b/wgpu/src/renderer/widget/column.rs
index cac6da77..cac6da77 100644
--- a/wgpu/src/renderer/column.rs
+++ b/wgpu/src/renderer/widget/column.rs
diff --git a/wgpu/src/renderer/image.rs b/wgpu/src/renderer/widget/image.rs
index 0e312706..0e312706 100644
--- a/wgpu/src/renderer/image.rs
+++ b/wgpu/src/renderer/widget/image.rs
diff --git a/wgpu/src/renderer/radio.rs b/wgpu/src/renderer/widget/radio.rs
index 97b4f70e..97b4f70e 100644
--- a/wgpu/src/renderer/radio.rs
+++ b/wgpu/src/renderer/widget/radio.rs
diff --git a/wgpu/src/renderer/row.rs b/wgpu/src/renderer/widget/row.rs
index bbfef9a1..bbfef9a1 100644
--- a/wgpu/src/renderer/row.rs
+++ b/wgpu/src/renderer/widget/row.rs
diff --git a/wgpu/src/renderer/scrollable.rs b/wgpu/src/renderer/widget/scrollable.rs
index 360759a5..360759a5 100644
--- a/wgpu/src/renderer/scrollable.rs
+++ b/wgpu/src/renderer/widget/scrollable.rs
diff --git a/wgpu/src/renderer/slider.rs b/wgpu/src/renderer/widget/slider.rs
index 4ae3abc4..4ae3abc4 100644
--- a/wgpu/src/renderer/slider.rs
+++ b/wgpu/src/renderer/widget/slider.rs
diff --git a/wgpu/src/renderer/text.rs b/wgpu/src/renderer/widget/text.rs
index 82f75f09..82f75f09 100644
--- a/wgpu/src/renderer/text.rs
+++ b/wgpu/src/renderer/widget/text.rs
diff --git a/wgpu/src/renderer/text_input.rs b/wgpu/src/renderer/widget/text_input.rs
index cff8bf23..cff8bf23 100644
--- a/wgpu/src/renderer/text_input.rs
+++ b/wgpu/src/renderer/widget/text_input.rs