From ef056d84890e745010675e70f734f882f89356c2 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sat, 2 Nov 2019 20:20:35 +0100 Subject: Move `Target` to its own module --- wgpu/src/renderer.rs | 90 +++++++--------------------------------------------- 1 file changed, 12 insertions(+), 78 deletions(-) (limited to 'wgpu/src/renderer.rs') diff --git a/wgpu/src/renderer.rs b/wgpu/src/renderer.rs index 6e90c129..1988dfae 100644 --- a/wgpu/src/renderer.rs +++ b/wgpu/src/renderer.rs @@ -4,26 +4,19 @@ use iced_native::{ MouseCursor, Point, Rectangle, Widget, }; -use raw_window_handle::HasRawWindowHandle; use wgpu::{ Adapter, BackendBit, CommandEncoderDescriptor, Device, DeviceDescriptor, - Extensions, Limits, PowerPreference, Queue, RequestAdapterOptions, Surface, - SwapChain, SwapChainDescriptor, TextureFormat, TextureUsage, + Extensions, Limits, PowerPreference, Queue, RequestAdapterOptions, + TextureFormat, }; use wgpu_glyph::{GlyphBrush, GlyphBrushBuilder, Section}; use std::{cell::RefCell, rc::Rc}; -mod button; -mod checkbox; -mod column; -mod image; -mod radio; -mod row; -mod scrollable; -mod slider; -mod text; -mod text_input; +mod target; +mod widget; + +pub use target::Target; pub struct Renderer { device: Device, @@ -34,62 +27,6 @@ pub struct Renderer { glyph_brush: Rc>>, } -pub struct Target { - surface: Surface, - width: u16, - height: u16, - transformation: Transformation, - swap_chain: SwapChain, -} - -impl iced_native::renderer::Target for Target { - type Renderer = Renderer; - - fn new( - window: &W, - width: u16, - height: u16, - renderer: &Renderer, - ) -> Target { - let surface = Surface::create(window); - - let swap_chain = renderer.device.create_swap_chain( - &surface, - &SwapChainDescriptor { - usage: TextureUsage::OUTPUT_ATTACHMENT, - format: TextureFormat::Bgra8UnormSrgb, - width: u32::from(width), - height: u32::from(height), - present_mode: wgpu::PresentMode::Vsync, - }, - ); - - 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 = renderer.device.create_swap_chain( - &self.surface, - &SwapChainDescriptor { - usage: TextureUsage::OUTPUT_ATTACHMENT, - format: TextureFormat::Bgra8UnormSrgb, - width: u32::from(width), - height: u32::from(height), - present_mode: wgpu::PresentMode::Vsync, - }, - ); - } -} - pub struct Layer<'a> { bounds: Rectangle, y_offset: u32, @@ -153,7 +90,9 @@ impl Renderer { ) -> MouseCursor { log::debug!("Drawing"); - let frame = target.swap_chain.get_next_texture(); + let (width, height) = target.dimensions(); + let transformation = target.transformation(); + let frame = target.next_frame(); let mut encoder = self .device @@ -181,8 +120,8 @@ impl Renderer { Rectangle { x: 0, y: 0, - width: u32::from(target.width), - height: u32::from(target.height), + width: u32::from(width), + height: u32::from(height), }, 0, )); @@ -190,12 +129,7 @@ impl Renderer { self.draw_primitive(primitive, &mut layers); for layer in layers { - self.flush( - target.transformation, - &layer, - &mut encoder, - &frame.view, - ); + self.flush(transformation, &layer, &mut encoder, &frame.view); } self.queue.submit(&[encoder.finish()]); -- cgit