diff --git a/src/lib.rs b/src/lib.rs index 19944bb..a2a35bc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,8 +8,6 @@ use range_map::RangeMap; pub struct JotdownBufferIter<'a, T: Iterator>> { djot: T, - width: f32, - metrics: Metrics, indent: Vec, } @@ -86,10 +84,7 @@ impl<'a, 'b, T: Iterator>> Iterator for JotdownIntoBuffer<'a, ' } Event::Start(container, _) => match container { Container::Heading { level, .. } => { - self.metrics = Metrics::new( - self.metrics.font_size * (4.0 - level as f32), - self.metrics.line_height * (4.0 - level as f32), - ); + self.metrics = Metrics::new(4.0 - level as f32, 4.0 - level as f32); } Container::Emphasis => self.attrs = self.attrs.style(Style::Italic), Container::Strong => self.attrs = self.attrs.weight(Weight::BOLD), @@ -141,12 +136,22 @@ pub struct JotdownItem<'a> { pub metrics: Metrics, pub image_url: Option>, pub url_map: Option>, - pub width: f32, } impl<'a> JotdownItem<'a> { - pub fn make_buffer(&self, font_system: &mut FontSystem) -> Buffer { - let mut buffer = Buffer::new(font_system, self.metrics); + pub fn make_buffer( + &self, + font_system: &mut FontSystem, + width: f32, + metrics: Metrics, + ) -> Buffer { + let mut buffer = Buffer::new( + font_system, + Metrics::new( + metrics.font_size * self.metrics.font_size, + metrics.line_height * self.metrics.line_height, + ), + ); buffer.set_rich_text( font_system, self.buffer.iter().cloned(), @@ -155,7 +160,7 @@ impl<'a> JotdownItem<'a> { ); buffer.set_wrap(font_system, cosmic_text::Wrap::WordOrGlyph); - buffer.set_size(font_system, self.width - self.indent.indent, f32::MAX); + buffer.set_size(font_system, width - self.indent.indent, f32::MAX); buffer.shape_until_scroll(font_system, false); buffer } @@ -168,9 +173,9 @@ impl<'a, T: Iterator>> Iterator for JotdownBufferIter<'a, T> { let mut jot = JotdownIntoBuffer { djot: &mut self.djot, attrs: Attrs::new().family(Family::SansSerif), - metrics: self.metrics, indent: &mut self.indent, image_url: None, + metrics: Metrics::new(1.0, 1.0), added: false, link_start: 0, location: 0, @@ -196,7 +201,6 @@ impl<'a, T: Iterator>> Iterator for JotdownBufferIter<'a, T> { buffer, image_url, metrics, - width: self.width, }); } } @@ -204,13 +208,9 @@ impl<'a, T: Iterator>> Iterator for JotdownBufferIter<'a, T> { pub fn jotdown_into_buffers<'a, T: Iterator>>( djot: T, - metrics: Metrics, - width: f32, ) -> JotdownBufferIter<'a, T> { JotdownBufferIter { djot, - width, - metrics, indent: Vec::new(), } }