diff options
Diffstat (limited to 'src/cache.rs')
| -rw-r--r-- | src/cache.rs | 43 |
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>, -} |
