From: Simon Tatham Date: Sun, 4 Feb 2024 14:51:08 +0000 (+0000) Subject: impl TextFragmentOneLine for CentredInfoLine. X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=9d3765699f4531c90046122e3c943ab77d75709c;p=mastodonochrome.git impl TextFragmentOneLine for CentredInfoLine. This always draws exactly one line, and I'm about to want to use it in a context that expects that and doesn't want to worry about unpacking a returned vector. --- diff --git a/src/text.rs b/src/text.rs index 05eb8ae..3781312 100644 --- a/src/text.rs +++ b/src/text.rs @@ -2271,19 +2271,29 @@ impl CentredInfoLine { } } -impl TextFragment for CentredInfoLine { - fn render_highlighted( +impl TextFragmentOneLine for CentredInfoLine { + fn render_oneline( &self, width: usize, _highlight: Option, _style: &dyn DisplayStyleGetter, - ) -> Vec { + ) -> ColouredString { let twidth = width.saturating_sub(1); let title = self.text.truncate(twidth); let tspace = twidth - title.width(); let tleft = tspace / 2; - let textpad = ColouredString::plain(" ").repeat(tleft) + &self.text; - vec![textpad] + ColouredString::plain(" ").repeat(tleft) + &self.text + } +} + +impl TextFragment for CentredInfoLine { + fn render_highlighted( + &self, + width: usize, + highlight: Option, + style: &dyn DisplayStyleGetter, + ) -> Vec { + vec![self.render_oneline(width, highlight, style)] } }