From 2bf32c51bceb2f3a8b7ebea3d7c7d6d96757591b Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 22 Feb 2022 12:42:02 +0100 Subject: Remove layout cache --- src/export/render.rs | 30 ++++-------------------------- 1 file changed, 4 insertions(+), 26 deletions(-) (limited to 'src/export/render.rs') diff --git a/src/export/render.rs b/src/export/render.rs index 8b7aa46d..1a08b60b 100644 --- a/src/export/render.rs +++ b/src/export/render.rs @@ -1,6 +1,5 @@ //! Rendering into raster images. -use std::collections::{hash_map::Entry, HashMap}; use std::io::Read; use image::{GenericImageView, Rgba}; @@ -8,26 +7,12 @@ use tiny_skia as sk; use ttf_parser::{GlyphId, OutlineBuilder}; use usvg::FitTo; -use crate::font::{Face, FaceId}; +use crate::font::Face; use crate::frame::{Element, Frame, Geometry, Group, Shape, Stroke, Text}; use crate::geom::{self, Length, Paint, PathElement, Size, Transform}; use crate::image::{Image, RasterImage, Svg}; use crate::Context; -/// Caches rendering artifacts. -#[derive(Default, Clone)] -pub struct RenderCache { - /// Glyphs prepared for rendering. - glyphs: HashMap<(FaceId, GlyphId), pixglyph::Glyph>, -} - -impl RenderCache { - /// Create a new, empty rendering cache. - pub fn new() -> Self { - Self::default() - } -} - /// Export a frame into a rendered image. /// /// This renders the frame at the given number of pixels per printer's point and @@ -131,7 +116,6 @@ fn render_text( text: &Text, ) { let face = ctx.fonts.get(text.face_id); - let cache = &mut ctx.render_cache; let mut x = 0.0; for glyph in &text.glyphs { @@ -141,7 +125,7 @@ fn render_text( render_svg_glyph(canvas, ts, mask, text, face, id) .or_else(|| render_bitmap_glyph(canvas, ts, mask, text, face, id)) - .or_else(|| render_outline_glyph(canvas, ts, mask, cache, text, face, id)); + .or_else(|| render_outline_glyph(canvas, ts, mask, text, face, id)); x += glyph.x_advance.resolve(text.size).to_f32(); } @@ -227,7 +211,6 @@ fn render_outline_glyph( canvas: &mut sk::Pixmap, ts: sk::Transform, mask: Option<&sk::ClipMask>, - cache: &mut RenderCache, text: &Text, face: &Face, id: GlyphId, @@ -255,15 +238,10 @@ fn render_outline_glyph( return Some(()); } + // TODO(query) // Try to retrieve a prepared glyph or prepare it from scratch if it // doesn't exist, yet. - let glyph = match cache.glyphs.entry((text.face_id, id)) { - Entry::Occupied(entry) => entry.into_mut(), - Entry::Vacant(entry) => { - let glyph = pixglyph::Glyph::load(face.ttf(), id)?; - entry.insert(glyph) - } - }; + let glyph = pixglyph::Glyph::load(face.ttf(), id)?; // Rasterize the glyph with `pixglyph`. let bitmap = glyph.rasterize(ts.tx, ts.ty, ppem); -- cgit v1.2.3