Implement Widget::draw for Svg

This commit is contained in:
Héctor Ramón Jiménez 2021-10-28 22:13:26 +07:00
parent 55b31e6dcf
commit e6156fb0c5
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
2 changed files with 10 additions and 4 deletions

View file

@ -1,6 +1,6 @@
//! Display vector graphics in your application. //! Display vector graphics in your application.
use crate::backend::{self, Backend}; use crate::backend::{self, Backend};
use crate::Renderer; use crate::{Primitive, Rectangle, Renderer};
use iced_native::svg; use iced_native::svg;
pub use iced_native::svg::{Handle, Svg}; pub use iced_native::svg::{Handle, Svg};
@ -12,4 +12,8 @@ where
fn dimensions(&self, handle: &svg::Handle) -> (u32, u32) { fn dimensions(&self, handle: &svg::Handle) -> (u32, u32) {
self.backend().viewport_dimensions(handle) self.backend().viewport_dimensions(handle)
} }
fn draw(&mut self, handle: svg::Handle, bounds: Rectangle) {
self.draw_primitive(Primitive::Svg { handle, bounds })
}
} }

View file

@ -89,13 +89,12 @@ where
fn draw( fn draw(
&self, &self,
renderer: &mut Renderer, renderer: &mut Renderer,
style: &renderer::Style, _style: &renderer::Style,
layout: Layout<'_>, layout: Layout<'_>,
_cursor_position: Point, _cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
) { ) {
// TODO renderer.draw(self.handle.clone(), layout.bounds())
// renderer.draw(self.handle.clone(), layout)
} }
fn hash_layout(&self, state: &mut Hasher) { fn hash_layout(&self, state: &mut Hasher) {
@ -187,6 +186,9 @@ impl std::fmt::Debug for Data {
pub trait Renderer: crate::Renderer { pub trait Renderer: crate::Renderer {
/// Returns the default dimensions of an [`Svg`] for the given [`Handle`]. /// Returns the default dimensions of an [`Svg`] for the given [`Handle`].
fn dimensions(&self, handle: &Handle) -> (u32, u32); fn dimensions(&self, handle: &Handle) -> (u32, u32);
// Draws an [`Svg`].
fn draw(&mut self, handle: Handle, bounds: Rectangle);
} }
impl<'a, Message, Renderer> From<Svg> for Element<'a, Message, Renderer> impl<'a, Message, Renderer> From<Svg> for Element<'a, Message, Renderer>