summaryrefslogtreecommitdiffstats
path: root/wgpu/src/renderer/widget/checkbox.rs
diff options
context:
space:
mode:
Diffstat (limited to 'wgpu/src/renderer/widget/checkbox.rs')
-rw-r--r--wgpu/src/renderer/widget/checkbox.rs62
1 files changed, 17 insertions, 45 deletions
diff --git a/wgpu/src/renderer/widget/checkbox.rs b/wgpu/src/renderer/widget/checkbox.rs
index aedb821c..54b4b1cc 100644
--- a/wgpu/src/renderer/widget/checkbox.rs
+++ b/wgpu/src/renderer/widget/checkbox.rs
@@ -1,63 +1,35 @@
use crate::{Primitive, Renderer};
use iced_native::{
- checkbox, layout, text, text::HorizontalAlignment, text::VerticalAlignment,
- Align, Background, Checkbox, Column, Layout, Length, MouseCursor, Point,
- Rectangle, Row, Text, Widget,
+ checkbox, Background, HorizontalAlignment, MouseCursor, Rectangle,
+ VerticalAlignment,
};
const SIZE: f32 = 28.0;
impl checkbox::Renderer for Renderer {
- fn layout<Message>(
- &self,
- checkbox: &Checkbox<Message>,
- limits: &layout::Limits,
- ) -> layout::Node {
- Row::<(), Self>::new()
- .spacing(15)
- .align_items(Align::Center)
- .push(
- Column::new()
- .width(Length::Units(SIZE as u16))
- .height(Length::Units(SIZE as u16)),
- )
- .push(Text::new(&checkbox.label))
- .layout(self, limits)
+ fn default_size(&self) -> u32 {
+ SIZE as u32
}
- fn draw<Message>(
+ fn draw(
&mut self,
- checkbox: &Checkbox<Message>,
- layout: Layout<'_>,
- cursor_position: Point,
+ bounds: Rectangle,
+ is_checked: bool,
+ is_mouse_over: bool,
+ (label, _): Self::Output,
) -> Self::Output {
- let bounds = layout.bounds();
- let mut children = layout.children();
-
- let checkbox_layout = children.next().unwrap();
- let label_layout = children.next().unwrap();
- let checkbox_bounds = checkbox_layout.bounds();
-
- let (label, _) = text::Renderer::draw(
- self,
- &Text::new(&checkbox.label),
- label_layout,
- );
-
- let is_mouse_over = bounds.contains(cursor_position);
-
let (checkbox_border, checkbox_box) = (
Primitive::Quad {
- bounds: checkbox_bounds,
+ bounds,
background: Background::Color([0.6, 0.6, 0.6].into()),
border_radius: 6,
},
Primitive::Quad {
bounds: Rectangle {
- x: checkbox_bounds.x + 1.0,
- y: checkbox_bounds.y + 1.0,
- width: checkbox_bounds.width - 2.0,
- height: checkbox_bounds.height - 2.0,
+ x: bounds.x + 1.0,
+ y: bounds.y + 1.0,
+ width: bounds.width - 2.0,
+ height: bounds.height - 2.0,
},
background: Background::Color(
if is_mouse_over {
@@ -73,12 +45,12 @@ impl checkbox::Renderer for Renderer {
(
Primitive::Group {
- primitives: if checkbox.is_checked {
+ primitives: if is_checked {
let check = Primitive::Text {
content: crate::text::CHECKMARK_ICON.to_string(),
font: crate::text::BUILTIN_ICONS,
- size: checkbox_bounds.height * 0.7,
- bounds: checkbox_bounds,
+ size: bounds.height * 0.7,
+ bounds: bounds,
color: [0.3, 0.3, 0.3].into(),
horizontal_alignment: HorizontalAlignment::Center,
vertical_alignment: VerticalAlignment::Center,