summaryrefslogtreecommitdiffstats
path: root/tiny_skia/src/backend.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-07 05:06:26 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-07 05:06:26 +0100
commitbb49e17cabd45f3a21af98b4c5ecdddd507fd427 (patch)
tree42d3255e869ca9a9fe6270e0658856830c2e7d31 /tiny_skia/src/backend.rs
parent3a26baa564524b0f25c5cb180b592c8b004b68a9 (diff)
downloadiced-bb49e17cabd45f3a21af98b4c5ecdddd507fd427.tar.gz
iced-bb49e17cabd45f3a21af98b4c5ecdddd507fd427.tar.bz2
iced-bb49e17cabd45f3a21af98b4c5ecdddd507fd427.zip
Implement `raster` pipeline in `iced_tiny_skia`
Diffstat (limited to 'tiny_skia/src/backend.rs')
-rw-r--r--tiny_skia/src/backend.rs28
1 files changed, 23 insertions, 5 deletions
diff --git a/tiny_skia/src/backend.rs b/tiny_skia/src/backend.rs
index d364e36a..d894ab95 100644
--- a/tiny_skia/src/backend.rs
+++ b/tiny_skia/src/backend.rs
@@ -11,6 +11,9 @@ pub struct Backend {
default_font: Font,
default_text_size: f32,
text_pipeline: crate::text::Pipeline,
+
+ #[cfg(feature = "image")]
+ raster_pipeline: crate::raster::Pipeline,
}
impl Backend {
@@ -19,6 +22,9 @@ impl Backend {
default_font: settings.default_font,
default_text_size: settings.default_text_size,
text_pipeline: crate::text::Pipeline::new(),
+
+ #[cfg(feature = "image")]
+ raster_pipeline: crate::raster::Pipeline::new(),
}
}
@@ -159,8 +165,21 @@ impl Backend {
clip_bounds.map(|_| clip_mask as &_),
);
}
- Primitive::Image { .. } => {
- // TODO
+ #[cfg(feature = "image")]
+ Primitive::Image { handle, bounds } => {
+ let transform = tiny_skia::Transform::from_translate(
+ translation.x,
+ translation.y,
+ )
+ .post_scale(scale_factor, scale_factor);
+
+ self.raster_pipeline.draw(
+ handle,
+ *bounds,
+ pixels,
+ transform,
+ clip_bounds.map(|_| clip_mask as &_),
+ );
}
Primitive::Svg { .. } => {
// TODO
@@ -490,9 +509,8 @@ impl backend::Text for Backend {
#[cfg(feature = "image")]
impl backend::Image for Backend {
- fn dimensions(&self, _handle: &crate::core::image::Handle) -> Size<u32> {
- // TODO
- Size::new(0, 0)
+ fn dimensions(&self, handle: &crate::core::image::Handle) -> Size<u32> {
+ self.raster_pipeline.dimensions(handle)
}
}