Implement Widget::draw for custom_widget example
This commit is contained in:
parent
945f69e567
commit
95acc1deb8
2 changed files with 19 additions and 22 deletions
|
|
@ -8,4 +8,3 @@ publish = false
|
||||||
[dependencies]
|
[dependencies]
|
||||||
iced = { path = "../.." }
|
iced = { path = "../.." }
|
||||||
iced_native = { path = "../../native" }
|
iced_native = { path = "../../native" }
|
||||||
iced_graphics = { path = "../../graphics" }
|
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,11 @@ mod circle {
|
||||||
// Of course, you can choose to make the implementation renderer-agnostic,
|
// Of course, you can choose to make the implementation renderer-agnostic,
|
||||||
// if you wish to, by creating your own `Renderer` trait, which could be
|
// if you wish to, by creating your own `Renderer` trait, which could be
|
||||||
// implemented by `iced_wgpu` and other renderers.
|
// implemented by `iced_wgpu` and other renderers.
|
||||||
use iced_graphics::renderer::{self, Renderer};
|
use iced_native::layout::{self, Layout};
|
||||||
use iced_graphics::Backend;
|
use iced_native::renderer;
|
||||||
use iced_native::{
|
use iced_native::{
|
||||||
layout, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
|
Background, Color, Element, Hasher, Length, Point, Rectangle, Size,
|
||||||
|
Widget,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct Circle {
|
pub struct Circle {
|
||||||
|
|
@ -25,9 +26,9 @@ mod circle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<Message, B> Widget<Message, Renderer<B>> for Circle
|
impl<Message, Renderer> Widget<Message, Renderer> for Circle
|
||||||
where
|
where
|
||||||
B: Backend,
|
Renderer: renderer::Renderer,
|
||||||
{
|
{
|
||||||
fn width(&self) -> Length {
|
fn width(&self) -> Length {
|
||||||
Length::Shrink
|
Length::Shrink
|
||||||
|
|
@ -39,7 +40,7 @@ mod circle {
|
||||||
|
|
||||||
fn layout(
|
fn layout(
|
||||||
&self,
|
&self,
|
||||||
_renderer: &Renderer<B>,
|
_renderer: &Renderer,
|
||||||
_limits: &layout::Limits,
|
_limits: &layout::Limits,
|
||||||
) -> layout::Node {
|
) -> layout::Node {
|
||||||
layout::Node::new(Size::new(self.radius * 2.0, self.radius * 2.0))
|
layout::Node::new(Size::new(self.radius * 2.0, self.radius * 2.0))
|
||||||
|
|
@ -53,30 +54,27 @@ mod circle {
|
||||||
|
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_renderer: &mut Renderer<B>,
|
renderer: &mut Renderer,
|
||||||
_style: &renderer::Style,
|
_style: &renderer::Style,
|
||||||
_layout: Layout<'_>,
|
layout: Layout<'_>,
|
||||||
_cursor_position: Point,
|
_cursor_position: Point,
|
||||||
_viewport: &Rectangle,
|
_viewport: &Rectangle,
|
||||||
) {
|
) {
|
||||||
// (
|
renderer.fill_rectangle(renderer::Quad {
|
||||||
// Primitive::Quad {
|
bounds: layout.bounds(),
|
||||||
// bounds: layout.bounds(),
|
background: Background::Color(Color::BLACK),
|
||||||
// background: Background::Color(Color::BLACK),
|
border_radius: self.radius,
|
||||||
// border_radius: self.radius,
|
border_width: 0.0,
|
||||||
// border_width: 0.0,
|
border_color: Color::TRANSPARENT,
|
||||||
// border_color: Color::TRANSPARENT,
|
});
|
||||||
// },
|
|
||||||
// mouse::Interaction::default(),
|
|
||||||
// )
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Message, B> Into<Element<'a, Message, Renderer<B>>> for Circle
|
impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>> for Circle
|
||||||
where
|
where
|
||||||
B: Backend,
|
Renderer: renderer::Renderer,
|
||||||
{
|
{
|
||||||
fn into(self) -> Element<'a, Message, Renderer<B>> {
|
fn into(self) -> Element<'a, Message, Renderer> {
|
||||||
Element::new(self)
|
Element::new(self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue