From 342485f9d26d138d5b652b2eb686b0b20fa8ab42 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 4 Apr 2025 23:29:28 -0500 Subject: [PATCH] working on a used text_svg in the presenter --- justfile | 2 +- src/ui/presenter.rs | 11 +++++++---- src/ui/text_svg.rs | 8 ++++++++ test_presentation.lisp | 5 +++-- todo.org | 1 + 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/justfile b/justfile index ea6e7c0..de77d95 100644 --- a/justfile +++ b/justfile @@ -6,7 +6,7 @@ default: build: RUST_LOG=debug cargo build run: - RUST_LOG=debug cargo run -- {{ui}} {{file}} + RUST_LOG=debug cargo run --release -- {{ui}} {{file}} clean: RUST_LOG=debug cargo clean test: diff --git a/src/ui/presenter.rs b/src/ui/presenter.rs index 6daa7e0..889be6b 100644 --- a/src/ui/presenter.rs +++ b/src/ui/presenter.rs @@ -32,7 +32,9 @@ use crate::{ BackgroundKind, }; -use super::text_svg::{self, shadow, Font as SvgFont, TextSvg}; +use super::text_svg::{ + self, shadow, stroke, Font as SvgFont, TextSvg, +}; const REFERENCE_WIDTH: f32 = 1920.0; const REFERENCE_HEIGHT: f32 = 1080.0; @@ -547,10 +549,11 @@ pub(crate) fn slide_view<'a>( let font = SvgFont::from(font).size(font_size.floor() as u8); let slide_text = slide.text(); let text = text_svg::TextSvg::new() - .fill("#fff") - .shadow(shadow(10, 10, 5, "#000000")) - .font(font) .text(slide_text) + .fill("#fff") + .shadow(shadow(5, 5, 5, "#000000")) + .stroke(stroke(4, "#f00")) + .font(font) .view() .map(|m| Message::None); let text_container = Container::new(text) diff --git a/src/ui/text_svg.rs b/src/ui/text_svg.rs index decb3a3..224716c 100644 --- a/src/ui/text_svg.rs +++ b/src/ui/text_svg.rs @@ -11,6 +11,8 @@ use cosmic::{ }; use tracing::{debug, error}; +use crate::TextAlignment; + #[derive(Clone, Debug, Default, PartialEq)] pub struct TextSvg { text: String, @@ -18,6 +20,7 @@ pub struct TextSvg { shadow: Option, stroke: Option, fill: Color, + alignment: TextAlignment, } #[derive(Clone, Debug, Default, PartialEq, Eq)] @@ -175,6 +178,11 @@ impl TextSvg { self } + pub fn alignment(mut self, alignment: TextAlignment) -> Self { + self.alignment = alignment; + self + } + pub fn view<'a>(self) -> Element<'a, Message> { let shadow = if let Some(shadow) = &self.shadow { format!("", diff --git a/test_presentation.lisp b/test_presentation.lisp index ce337ba..ae1b5a3 100644 --- a/test_presentation.lisp +++ b/test_presentation.lisp @@ -1,10 +1,11 @@ (slide :background (image :source "~/pics/frodo.jpg" :fit fill) - (text "This is frodo" :font-size 70)) + (text "This is frodo" :font-size 90)) (slide (video :source "~/vids/test/camprules2024.mp4" :fit contain)) (slide (video :source "~/vids/The Basics of Hanging Drywall.mkv" :fit contain)) (slide (video :source "~/vids/Ladybird Is The Future Of Web Browsers.webm" :fit contain)) (song :id 7 :author "North Point Worship" - :font "Quicksand Bold" :font-size 60 + :font "Quicksand Bold" :font-size 30 + :shadow "" :stroke "" :title "Death Was Arrested" :background (image :source "file:///home/chris/nc/tfc/openlp/CMG - Bright Mountains 01.jpg" :fit cover) :text-alignment center diff --git a/todo.org b/todo.org index 8e0fba8..a949112 100644 --- a/todo.org +++ b/todo.org @@ -2,6 +2,7 @@ * TODO [#A] Text could be built by using SVG instead of the text element. Maybe I could construct my own text element even +This does almost work. There is a clear amount of lag or rather hang up since switching to the =text_svg= element. I think I may only keep it till I can figure out how to do strokes and shadows in iced's normal text element. * TODO [#A] Need to fix tests now that the basic app is working