summaryrefslogtreecommitdiff
path: root/src/cache.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cache.rs')
-rw-r--r--src/cache.rs43
1 files changed, 18 insertions, 25 deletions
diff --git a/src/cache.rs b/src/cache.rs
index 4cf97ba6..aa9c10a0 100644
--- a/src/cache.rs
+++ b/src/cache.rs
@@ -1,34 +1,27 @@
-//! Caching for incremental compilation.
+//! Caching of compilation artifacts.
-use std::collections::HashMap;
+use crate::font::FontCache;
+use crate::image::ImageCache;
+use crate::layout::LayoutCache;
+use crate::loading::Loader;
-use crate::layout::{Frame, Regions};
-
-/// A cache for incremental compilation.
-#[derive(Default, Debug, Clone)]
+/// Caches compilation artifacts.
pub struct Cache {
- /// A map that holds the layouted nodes from past compilations.
- pub frames: HashMap<u64, FramesEntry>,
+ /// Caches parsed font faces.
+ pub font: FontCache,
+ /// Caches decoded images.
+ pub image: ImageCache,
+ /// Caches layouting artifacts.
+ pub layout: LayoutCache,
}
impl Cache {
/// Create a new, empty cache.
- pub fn new() -> Self {
- Self::default()
- }
-
- /// Clear the cache.
- pub fn clear(&mut self) {
- self.frames.clear();
+ pub fn new(loader: &dyn Loader) -> Self {
+ Self {
+ font: FontCache::new(loader),
+ image: ImageCache::new(),
+ layout: LayoutCache::new(),
+ }
}
}
-
-/// Frames from past compilations and checks for their validity in future
-/// compilations.
-#[derive(Debug, Clone)]
-pub struct FramesEntry {
- /// The regions in which these frames are valid.
- pub regions: Regions,
- /// Cached frames for a node.
- pub frames: Vec<Frame>,
-}