summaryrefslogtreecommitdiffstats
path: root/wgpu
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-06 19:22:25 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-06 19:22:25 +0200
commit7765e6da50a3448501ee1b639e580c94a4fbda8a (patch)
treef87278ce34cb7bde4648c8303048bb51221ef1dd /wgpu
parent5a5ca34b5fcab9266359d3f0885782969f8c058e (diff)
downloadiced-7765e6da50a3448501ee1b639e580c94a4fbda8a.tar.gz
iced-7765e6da50a3448501ee1b639e580c94a4fbda8a.tar.bz2
iced-7765e6da50a3448501ee1b639e580c94a4fbda8a.zip
Draft `Box` primitive
Diffstat (limited to 'wgpu')
-rw-r--r--wgpu/src/lib.rs2
-rw-r--r--wgpu/src/primitive.rs11
-rw-r--r--wgpu/src/renderer.rs3
-rw-r--r--wgpu/src/renderer/button.rs38
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(),
+ },
+ ],
+ }
}
}