diff --git a/SpannableTextView.csproj b/SpannableTextView.csproj index ef8034c..5d7f0da 100644 --- a/SpannableTextView.csproj +++ b/SpannableTextView.csproj @@ -1,12 +1,12 @@  - net8.0-android;net8.0-ios - $(TargetFrameworks);net8.0-windows10.0.19041 + net9.0-android;net9.0-ios + $(TargetFrameworks);net9.0-windows10.0.26100 Zebble.SpannableTextView Zebble Zebble.SpannableTextView $(AssemblyName) ($(TargetFramework)) - 2.1.0.0 + 2.1.1.0 true en $(DefineConstants) @@ -35,9 +35,10 @@ true true - + win-x86;win-x64;win-arm64 - $(DefineConstants);WINUI + $(DefineConstants);UWP + true $(DefineConstants);ANDROID @@ -49,8 +50,10 @@ - - + + + + @@ -65,8 +68,8 @@ - - + + diff --git a/WinUI/SpannableTextViewRenderer.cs b/UWP/SpannableTextViewRenderer.cs similarity index 74% rename from WinUI/SpannableTextViewRenderer.cs rename to UWP/SpannableTextViewRenderer.cs index 8402143..ed081b5 100644 --- a/WinUI/SpannableTextViewRenderer.cs +++ b/UWP/SpannableTextViewRenderer.cs @@ -2,18 +2,18 @@ { using System; using System.Threading.Tasks; - using Microsoft.UI.Xaml; - using Zebble.WinUI; + using Windows.UI.Xaml; + using Zebble.UWP; internal class SpannableTextViewRenderer : INativeRenderer { SpannableTextView View; - WinUISpannableTextBlock Result; + UWPSpannableTextBlock Result; Task INativeRenderer.Render(Renderer renderer) { View = (SpannableTextView)renderer.View; - Result = new WinUISpannableTextBlock(renderer); + Result = new UWPSpannableTextBlock(renderer); return Result.Render(renderer); } diff --git a/WinUI/WinUIRenderExtensions.cs b/UWP/UWPRenderExtensions.cs similarity index 91% rename from WinUI/WinUIRenderExtensions.cs rename to UWP/UWPRenderExtensions.cs index fc2b8d8..94b552c 100644 --- a/WinUI/WinUIRenderExtensions.cs +++ b/UWP/UWPRenderExtensions.cs @@ -1,12 +1,11 @@ -namespace Zebble.WinUI +namespace Zebble.UWP { - using Microsoft.UI.Text; - using Olive; using Windows.UI.Text; - using doc = Microsoft.UI.Xaml.Documents; - using media = Microsoft.UI.Xaml.Media; + using doc = Windows.UI.Xaml.Documents; + using media = Windows.UI.Xaml.Media; + using Olive; - public static class WinUIRenderExtensions + public static class UWPRenderExtensions { internal static doc.Span RenderSpannableStringStyle(this SpannableStringStyle style) { diff --git a/UWP/UWPSpannableTextBlock.cs b/UWP/UWPSpannableTextBlock.cs new file mode 100644 index 0000000..2358ee1 --- /dev/null +++ b/UWP/UWPSpannableTextBlock.cs @@ -0,0 +1,47 @@ +using Windows.UI.Xaml.Documents; + +namespace Zebble.UWP +{ + public class UWPSpannableTextBlock : UWPTextBlock + { + SpannableTextView View; + + public UWPSpannableTextBlock(Renderer renderer) : base(renderer.View as SpannableTextView) + { + View = renderer.View as SpannableTextView; + + View.SpannableTextChanged.HandleActionOn(Thread.UI, RenderSpannableText); + + RenderSpannableText(); + } + + void RenderSpannableText() + { + if (View?.ParsedText == null) return; + + Result.Text = ""; + foreach (var spannableStyle in View.ParsedText) + { + var element = spannableStyle.RenderSpannableStringStyle(); + + if (spannableStyle.Children.Count > 0) + RenderChildSpannableStyle(element, spannableStyle); + + Result.Inlines.Add(element); + } + + View.LineHeightChanged.Raise(); + } + + void RenderChildSpannableStyle(Span parent, SpannableStringStyle parentStyle) + { + foreach (var style in parentStyle.Children) + { + var element = style.RenderSpannableStringStyle(); + if (style.Children.Count > 0) RenderChildSpannableStyle(element, style); + + parent.Inlines.Add(element); + } + } + } +} \ No newline at end of file diff --git a/WinUI/WinUISpannableTextBlock.cs b/WinUI/WinUISpannableTextBlock.cs deleted file mode 100644 index d7b1595..0000000 --- a/WinUI/WinUISpannableTextBlock.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Microsoft.UI.Xaml.Documents; - -namespace Zebble.WinUI; - -public class WinUISpannableTextBlock : WinUITextBlock -{ - SpannableTextView View; - - public WinUISpannableTextBlock(Renderer renderer) : base(renderer.View as SpannableTextView) - { - View = renderer.View as SpannableTextView; - - View.SpannableTextChanged.HandleActionOn(Thread.UI, RenderSpannableText); - - RenderSpannableText(); - } - - void RenderSpannableText() - { - if (View?.ParsedText == null) return; - - Result.Text = ""; - foreach (var spannableStyle in View.ParsedText) - { - var element = spannableStyle.RenderSpannableStringStyle(); - - if (spannableStyle.Children.Count > 0) - RenderChildSpannableStyle(element, spannableStyle); - - Result.Inlines.Add(element); - } - - View.LineHeightChanged.Raise(); - } - - void RenderChildSpannableStyle(Span parent, SpannableStringStyle parentStyle) - { - foreach (var style in parentStyle.Children) - { - var element = style.RenderSpannableStringStyle(); - if (style.Children.Count > 0) RenderChildSpannableStyle(element, style); - - parent.Inlines.Add(element); - } - } -} \ No newline at end of file