37 lines
1 KiB
Rust
37 lines
1 KiB
Rust
|
|
use crate::{Primitive, Renderer};
|
||
|
|
use iced_native::{image, image_pane, MouseCursor, Rectangle, Vector};
|
||
|
|
|
||
|
|
impl image_pane::Renderer for Renderer {
|
||
|
|
fn draw(
|
||
|
|
&mut self,
|
||
|
|
state: &image_pane::State,
|
||
|
|
bounds: Rectangle,
|
||
|
|
image_bounds: Rectangle,
|
||
|
|
offset: (u32, u32),
|
||
|
|
handle: image::Handle,
|
||
|
|
is_mouse_over: bool,
|
||
|
|
) -> Self::Output {
|
||
|
|
(
|
||
|
|
{
|
||
|
|
Primitive::Clip {
|
||
|
|
bounds,
|
||
|
|
offset: Vector::new(offset.0, offset.1),
|
||
|
|
content: Box::new(Primitive::Image {
|
||
|
|
handle,
|
||
|
|
bounds: image_bounds,
|
||
|
|
}),
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
if state.is_cursor_clicked() {
|
||
|
|
MouseCursor::Grabbing
|
||
|
|
} else if is_mouse_over {
|
||
|
|
MouseCursor::Grab
|
||
|
|
} else {
|
||
|
|
MouseCursor::OutOfBounds
|
||
|
|
}
|
||
|
|
},
|
||
|
|
)
|
||
|
|
}
|
||
|
|
}
|