From b7a547d047335f35a0177b55b196db109b4f8ce5 Mon Sep 17 00:00:00 2001 From: Andreas Neuhaus Date: Tue, 21 Jan 2025 11:38:44 +0100 Subject: [PATCH] Refactor screen text trimming --- firmware/src/screen.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/firmware/src/screen.rs b/firmware/src/screen.rs index dae452c..6b19524 100644 --- a/firmware/src/screen.rs +++ b/firmware/src/screen.rs @@ -134,6 +134,15 @@ fn footer>( Ok(()) } +/// Trim text if it's too long +fn trim(text: &str, max_len: usize) -> &str { + if text.len() > max_len { + &text[..max_len] + } else { + text + } +} + /// Draw user greeting (top 10 lines, 0..10) fn greeting>( random: u32, @@ -141,15 +150,8 @@ fn greeting>( target: &mut D, ) -> Result<(), Error> { let greeting = GREETINGS[random as usize % GREETINGS.len()]; - let greeting_len = greeting.len() + 1; - // Trim name if it's too long to display - let name = if name.len() + greeting_len > MEDIUM_CHARS_PER_LINE as usize { - &name[..(MEDIUM_CHARS_PER_LINE as usize - greeting_len)] - } else { - name - }; - + let name = trim(name, MEDIUM_CHARS_PER_LINE as usize - greeting.len() - 1); centered(&MEDIUM_FONT, 8, format_args!("{greeting} {name}"), target) }