diff options
author | 2019-10-06 19:22:25 +0200 | |
---|---|---|
committer | 2019-10-06 19:22:25 +0200 | |
commit | 7765e6da50a3448501ee1b639e580c94a4fbda8a (patch) | |
tree | f87278ce34cb7bde4648c8303048bb51221ef1dd /wgpu | |
parent | 5a5ca34b5fcab9266359d3f0885782969f8c058e (diff) | |
download | iced-7765e6da50a3448501ee1b639e580c94a4fbda8a.tar.gz iced-7765e6da50a3448501ee1b639e580c94a4fbda8a.tar.bz2 iced-7765e6da50a3448501ee1b639e580c94a4fbda8a.zip |
Draft `Box` primitive
Diffstat (limited to 'wgpu')
-rw-r--r-- | wgpu/src/lib.rs | 2 | ||||
-rw-r--r-- | wgpu/src/primitive.rs | 11 | ||||
-rw-r--r-- | wgpu/src/renderer.rs | 3 | ||||
-rw-r--r-- | wgpu/src/renderer/button.rs | 38 |
4 files changed, 44 insertions, 10 deletions
diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 9a2a336f..d5cfee64 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -3,5 +3,5 @@ mod primitive; mod renderer; pub use mouse_cursor::MouseCursor; -pub use primitive::Primitive; +pub use primitive::{Background, Primitive}; pub use renderer::{Renderer, Target}; diff --git a/wgpu/src/primitive.rs b/wgpu/src/primitive.rs index 04b2e99f..e9ab100e 100644 --- a/wgpu/src/primitive.rs +++ b/wgpu/src/primitive.rs @@ -1,4 +1,4 @@ -use iced_native::Rectangle; +use iced_native::{Color, Rectangle}; #[derive(Debug, Clone)] pub enum Primitive { @@ -11,4 +11,13 @@ pub enum Primitive { bounds: Rectangle, size: f32, }, + Box { + bounds: Rectangle, + background: Background, + }, +} + +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum Background { + Color(Color), } diff --git a/wgpu/src/renderer.rs b/wgpu/src/renderer.rs index df8887e3..56986bd1 100644 --- a/wgpu/src/renderer.rs +++ b/wgpu/src/renderer.rs @@ -144,6 +144,9 @@ impl Renderer { scale: wgpu_glyph::Scale { x: *size, y: *size }, ..Default::default() }), + Primitive::Box { bounds, background } => { + // TODO: Batch boxes and draw them all at once + } } } } diff --git a/wgpu/src/renderer/button.rs b/wgpu/src/renderer/button.rs index 24bc1de6..b9dfb9ac 100644 --- a/wgpu/src/renderer/button.rs +++ b/wgpu/src/renderer/button.rs @@ -1,18 +1,40 @@ -use crate::{Primitive, Renderer}; -use iced_native::{button, Button, Layout, Node, Point, Style}; +use crate::{Background, Primitive, Renderer}; +use iced_native::{button, Button, Color, Layout, Length, Node, Point, Style}; impl button::Renderer for Renderer { - fn node<Message>(&self, _button: &Button<Message>) -> Node { - Node::new(Style::default()) + fn node<Message>(&self, button: &Button<Message>) -> Node { + let style = Style::default() + .width(button.width) + .min_height(Length::Units(30)) + .min_width(Length::Units(100)) + .align_self(button.align_self); + + Node::new(style) } fn draw<Message>( &mut self, - _button: &Button<Message>, - _layout: Layout<'_>, + button: &Button<Message>, + layout: Layout<'_>, _cursor_position: Point, ) -> Self::Primitive { - // TODO - Primitive::None + Primitive::Group { + primitives: vec![ + Primitive::Box { + bounds: layout.bounds(), + background: Background::Color(Color { + r: 0.0, + b: 1.0, + g: 0.0, + a: 1.0, + }), + }, + Primitive::Text { + content: button.label.clone(), + size: 20.0, + bounds: layout.bounds(), + }, + ], + } } } |