summaryrefslogtreecommitdiffstats
path: root/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'renderer')
-rw-r--r--renderer/Cargo.toml1
-rw-r--r--renderer/src/fallback.rs43
2 files changed, 29 insertions, 15 deletions
diff --git a/renderer/Cargo.toml b/renderer/Cargo.toml
index 6fdb4228..458681dd 100644
--- a/renderer/Cargo.toml
+++ b/renderer/Cargo.toml
@@ -19,7 +19,6 @@ tiny-skia = ["iced_tiny_skia"]
image = ["iced_tiny_skia?/image", "iced_wgpu?/image"]
svg = ["iced_tiny_skia?/svg", "iced_wgpu?/svg"]
geometry = ["iced_graphics/geometry", "iced_tiny_skia?/geometry", "iced_wgpu?/geometry"]
-tracing = ["iced_wgpu?/tracing"]
web-colors = ["iced_wgpu?/web-colors"]
webgl = ["iced_wgpu?/webgl"]
fira-sans = ["iced_graphics/fira-sans"]
diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs
index 85ac3d93..2676ba87 100644
--- a/renderer/src/fallback.rs
+++ b/renderer/src/fallback.rs
@@ -47,16 +47,20 @@ where
delegate!(self, renderer, renderer.clear());
}
- fn start_layer(&mut self) {
- delegate!(self, renderer, renderer.start_layer());
+ fn start_layer(&mut self, bounds: Rectangle) {
+ delegate!(self, renderer, renderer.start_layer(bounds));
}
fn end_layer(&mut self, bounds: Rectangle) {
delegate!(self, renderer, renderer.end_layer(bounds));
}
- fn start_transformation(&mut self) {
- delegate!(self, renderer, renderer.start_transformation());
+ fn start_transformation(&mut self, transformation: Transformation) {
+ delegate!(
+ self,
+ renderer,
+ renderer.start_transformation(transformation)
+ );
}
fn end_transformation(&mut self, transformation: Transformation) {
@@ -421,7 +425,7 @@ where
#[cfg(feature = "geometry")]
mod geometry {
use super::Renderer;
- use crate::core::{Point, Radians, Size, Vector};
+ use crate::core::{Point, Radians, Rectangle, Size, Vector};
use crate::graphics::geometry::{self, Fill, Path, Stroke, Text};
use crate::graphics::Cached;
@@ -457,7 +461,7 @@ mod geometry {
}
}
- #[derive(Debug)]
+ #[derive(Debug, Clone)]
pub enum Geometry<A, B> {
Primary(A),
Secondary(B),
@@ -477,12 +481,23 @@ mod geometry {
}
}
- fn cache(self) -> Self::Cache {
- match self {
- Self::Primary(geometry) => Geometry::Primary(geometry.cache()),
- Self::Secondary(geometry) => {
- Geometry::Secondary(geometry.cache())
+ fn cache(self, previous: Option<Self::Cache>) -> Self::Cache {
+ match (self, previous) {
+ (
+ Self::Primary(geometry),
+ Some(Geometry::Primary(previous)),
+ ) => Geometry::Primary(geometry.cache(Some(previous))),
+ (Self::Primary(geometry), None) => {
+ Geometry::Primary(geometry.cache(None))
}
+ (
+ Self::Secondary(geometry),
+ Some(Geometry::Secondary(previous)),
+ ) => Geometry::Secondary(geometry.cache(Some(previous))),
+ (Self::Secondary(geometry), None) => {
+ Geometry::Secondary(geometry.cache(None))
+ }
+ _ => unreachable!(),
}
}
}
@@ -545,10 +560,10 @@ mod geometry {
delegate!(self, frame, frame.pop_transform());
}
- fn draft(&mut self, size: Size) -> Self {
+ fn draft(&mut self, bounds: Rectangle) -> Self {
match self {
- Self::Primary(frame) => Self::Primary(frame.draft(size)),
- Self::Secondary(frame) => Self::Secondary(frame.draft(size)),
+ Self::Primary(frame) => Self::Primary(frame.draft(bounds)),
+ Self::Secondary(frame) => Self::Secondary(frame.draft(bounds)),
}
}