diff options
Diffstat (limited to 'wgpu/src/renderer')
| -rw-r--r-- | wgpu/src/renderer/target.rs | 74 | ||||
| -rw-r--r-- | wgpu/src/renderer/widget.rs | 10 | ||||
| -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 72d77cc8..72d77cc8 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 deb8eae7..deb8eae7 100644 --- a/wgpu/src/renderer/text_input.rs +++ b/wgpu/src/renderer/widget/text_input.rs | 
