Remove trait-specific draw logic in iced_native
This commit is contained in:
parent
3aae45c191
commit
03b3493138
71 changed files with 641 additions and 3126 deletions
|
|
@ -88,7 +88,7 @@ impl<'a> Viewer<'a> {
|
|||
/// will be respected.
|
||||
fn image_size<Renderer>(&self, renderer: &Renderer, bounds: Size) -> Size
|
||||
where
|
||||
Renderer: self::Renderer + image::Renderer,
|
||||
Renderer: image::Renderer,
|
||||
{
|
||||
let (width, height) = renderer.dimensions(&self.handle);
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ impl<'a> Viewer<'a> {
|
|||
|
||||
impl<'a, Message, Renderer> Widget<Message, Renderer> for Viewer<'a>
|
||||
where
|
||||
Renderer: self::Renderer + image::Renderer,
|
||||
Renderer: image::Renderer,
|
||||
{
|
||||
fn width(&self) -> Length {
|
||||
self.width
|
||||
|
|
@ -287,7 +287,7 @@ where
|
|||
layout: Layout<'_>,
|
||||
cursor_position: Point,
|
||||
_viewport: &Rectangle,
|
||||
) -> Renderer::Output {
|
||||
) {
|
||||
let bounds = layout.bounds();
|
||||
|
||||
let image_size = self.image_size(renderer, bounds.size());
|
||||
|
|
@ -302,16 +302,6 @@ where
|
|||
};
|
||||
|
||||
let is_mouse_over = bounds.contains(cursor_position);
|
||||
|
||||
self::Renderer::draw(
|
||||
renderer,
|
||||
&self.state,
|
||||
bounds,
|
||||
image_size,
|
||||
translation,
|
||||
self.handle.clone(),
|
||||
is_mouse_over,
|
||||
)
|
||||
}
|
||||
|
||||
fn hash_layout(&self, state: &mut Hasher) {
|
||||
|
|
@ -373,38 +363,9 @@ impl State {
|
|||
}
|
||||
}
|
||||
|
||||
/// The renderer of an [`Viewer`].
|
||||
///
|
||||
/// Your [renderer] will need to implement this trait before being
|
||||
/// able to use a [`Viewer`] in your user interface.
|
||||
///
|
||||
/// [renderer]: crate::renderer
|
||||
pub trait Renderer: crate::Renderer + Sized {
|
||||
/// Draws the [`Viewer`].
|
||||
///
|
||||
/// It receives:
|
||||
/// - the [`State`] of the [`Viewer`]
|
||||
/// - the bounds of the [`Viewer`] widget
|
||||
/// - the [`Size`] of the scaled [`Viewer`] image
|
||||
/// - the translation of the clipped image
|
||||
/// - the [`Handle`] to the underlying image
|
||||
/// - whether the mouse is over the [`Viewer`] or not
|
||||
///
|
||||
/// [`Handle`]: image::Handle
|
||||
fn draw(
|
||||
&mut self,
|
||||
state: &State,
|
||||
bounds: Rectangle,
|
||||
image_size: Size,
|
||||
translation: Vector,
|
||||
handle: image::Handle,
|
||||
is_mouse_over: bool,
|
||||
) -> Self::Output;
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer> From<Viewer<'a>> for Element<'a, Message, Renderer>
|
||||
where
|
||||
Renderer: 'a + self::Renderer + image::Renderer,
|
||||
Renderer: 'a + image::Renderer,
|
||||
Message: 'a,
|
||||
{
|
||||
fn from(viewer: Viewer<'a>) -> Element<'a, Message, Renderer> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue