diff --git a/transformerkt/src/main/java/dev/transformerkt/dsl/effects/OverlaySettings.kt b/transformerkt/src/main/java/dev/transformerkt/dsl/effects/OverlaySettings.kt index 734fb6e..e531379 100644 --- a/transformerkt/src/main/java/dev/transformerkt/dsl/effects/OverlaySettings.kt +++ b/transformerkt/src/main/java/dev/transformerkt/dsl/effects/OverlaySettings.kt @@ -3,8 +3,10 @@ package dev.transformerkt.dsl.effects import android.content.Context import android.graphics.Bitmap import android.net.Uri +import android.text.SpannableString import androidx.media3.effect.OverlaySettings import dev.transformerkt.ktx.effects.bitmapOverlay +import dev.transformerkt.ktx.effects.textOverlay @EffectsDsl @Suppress("UnusedReceiverParameter") @@ -28,3 +30,10 @@ public fun EffectsBuilder.bitmapOverlay( ): EffectsBuilder = apply { bitmapOverlay(context, uri, overlaySettings(block)) } + +public fun EffectsBuilder.textOverlay( + spannableString: SpannableString, + block: OverlaySettings.Builder.() -> Unit, +): EffectsBuilder = apply { + textOverlay(spannableString, overlaySettings(block)) +} \ No newline at end of file diff --git a/transformerkt/src/main/java/dev/transformerkt/ktx/effects/TextOverlay.kt b/transformerkt/src/main/java/dev/transformerkt/ktx/effects/TextOverlay.kt index 9170cf3..eeab585 100644 --- a/transformerkt/src/main/java/dev/transformerkt/ktx/effects/TextOverlay.kt +++ b/transformerkt/src/main/java/dev/transformerkt/ktx/effects/TextOverlay.kt @@ -1,7 +1,9 @@ package dev.transformerkt.ktx.effects import android.text.SpannableString +import android.text.SpannableStringBuilder import androidx.annotation.CheckResult +import androidx.core.text.toSpannable import androidx.media3.effect.OverlayEffect import androidx.media3.effect.OverlaySettings import androidx.media3.effect.TextOverlay @@ -26,3 +28,10 @@ public fun EffectsBuilder.textOverlay( ): EffectsBuilder = apply { video(textOverlayEffect(text, settings)) } + +public inline fun buildSpannableString( + builderAction: SpannableStringBuilder.() -> Unit, +): SpannableString { + val builder = SpannableStringBuilder().apply(builderAction) + return SpannableString.valueOf(builder.toSpannable()) +} \ No newline at end of file