diff options
author | 2019-10-29 02:00:17 +0100 | |
---|---|---|
committer | 2019-10-29 02:00:17 +0100 | |
commit | be488ac73837c9a741d900617840ee5c4ed74d61 (patch) | |
tree | a3326658670d96ec583255210a016e91240a447a /wgpu/src/renderer.rs | |
parent | 23ebfb707a52d03a7beceaa5e197b4491619ae1d (diff) | |
download | iced-be488ac73837c9a741d900617840ee5c4ed74d61.tar.gz iced-be488ac73837c9a741d900617840ee5c4ed74d61.tar.bz2 iced-be488ac73837c9a741d900617840ee5c4ed74d61.zip |
Draw scrollbar on top of scrollable content
Diffstat (limited to 'wgpu/src/renderer.rs')
-rw-r--r-- | wgpu/src/renderer.rs | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/wgpu/src/renderer.rs b/wgpu/src/renderer.rs index bb7cb858..f0be0860 100644 --- a/wgpu/src/renderer.rs +++ b/wgpu/src/renderer.rs @@ -47,7 +47,6 @@ pub struct Layer<'a> { quads: Vec<Quad>, images: Vec<Image>, text: Vec<wgpu_glyph::Section<'a>>, - layers: Vec<Layer<'a>>, } impl<'a> Layer<'a> { @@ -58,7 +57,6 @@ impl<'a> Layer<'a> { quads: Vec::new(), images: Vec::new(), text: Vec::new(), - layers: Vec::new(), } } } @@ -149,7 +147,8 @@ impl Renderer { depth_stencil_attachment: None, }); - let mut layer = Layer::new( + let mut layers = Vec::new(); + let mut current = Layer::new( Rectangle { x: 0, y: 0, @@ -159,8 +158,17 @@ impl Renderer { 0, ); - self.draw_primitive(primitive, &mut layer); - self.flush(target.transformation, &layer, &mut encoder, &frame.view); + self.draw_primitive(primitive, &mut current, &mut layers); + layers.push(current); + + for layer in layers { + self.flush( + target.transformation, + &layer, + &mut encoder, + &frame.view, + ); + } self.queue.submit(&[encoder.finish()]); @@ -171,13 +179,14 @@ impl Renderer { &mut self, primitive: &'a Primitive, layer: &mut Layer<'a>, + layers: &mut Vec<Layer<'a>>, ) { match primitive { Primitive::None => {} Primitive::Group { primitives } => { // TODO: Inspect a bit and regroup (?) for primitive in primitives { - self.draw_primitive(primitive, layer) + self.draw_primitive(primitive, layer, layers) } } Primitive::Text { @@ -277,9 +286,9 @@ impl Renderer { ); // TODO: Primitive culling - self.draw_primitive(content, &mut new_layer); + self.draw_primitive(content, &mut new_layer, layers); - layer.layers.push(new_layer); + layers.push(new_layer); } } } @@ -338,10 +347,6 @@ impl Renderer { ) .expect("Draw text"); } - - for layer in layer.layers.iter() { - self.flush(transformation, layer, encoder, target); - } } } |