From 3fd6c6bc32f41767af5ea3088eea89265d631c84 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Wed, 25 Mar 2026 23:35:59 +0800 Subject: [PATCH 1/4] Update to Avalonia 12 --- .../CSharpMath.Avalonia.Example.csproj | 1 - CSharpMath.Avalonia.Example/MainWindow.xaml.cs | 3 --- CSharpMath.Avalonia/CSharpMath.Avalonia.csproj | 2 +- CSharpMath.Maui.Example/CSharpMath.Maui.Example.csproj | 4 +++- CSharpMath.Rendering.Tests/CSharpMath.Rendering.Tests.csproj | 2 -- CSharpMath.SkiaSharp/CSharpMath.SkiaSharp.csproj | 2 +- Directory.Build.props | 2 +- 7 files changed, 6 insertions(+), 10 deletions(-) diff --git a/CSharpMath.Avalonia.Example/CSharpMath.Avalonia.Example.csproj b/CSharpMath.Avalonia.Example/CSharpMath.Avalonia.Example.csproj index 93dae7a4..d9a206ca 100644 --- a/CSharpMath.Avalonia.Example/CSharpMath.Avalonia.Example.csproj +++ b/CSharpMath.Avalonia.Example/CSharpMath.Avalonia.Example.csproj @@ -10,7 +10,6 @@ - diff --git a/CSharpMath.Avalonia.Example/MainWindow.xaml.cs b/CSharpMath.Avalonia.Example/MainWindow.xaml.cs index 1d7941bc..0644fb64 100644 --- a/CSharpMath.Avalonia.Example/MainWindow.xaml.cs +++ b/CSharpMath.Avalonia.Example/MainWindow.xaml.cs @@ -10,9 +10,6 @@ public MainWindow() { .GetManifestResourceStream("CSharpMath.Avalonia.Example.Icon.png"); if (stream != null) Icon = new WindowIcon(stream); -#if DEBUG - this.AttachDevTools(); -#endif } private void InitializeComponent() { diff --git a/CSharpMath.Avalonia/CSharpMath.Avalonia.csproj b/CSharpMath.Avalonia/CSharpMath.Avalonia.csproj index 1b64e7a2..79b5c4e5 100644 --- a/CSharpMath.Avalonia/CSharpMath.Avalonia.csproj +++ b/CSharpMath.Avalonia/CSharpMath.Avalonia.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + net10.0 The Avalonia front end for CSharpMath. $(PackageTags) avalonia $(DefineConstants) Avalonia diff --git a/CSharpMath.Maui.Example/CSharpMath.Maui.Example.csproj b/CSharpMath.Maui.Example/CSharpMath.Maui.Example.csproj index fd94ce30..3990b7d6 100644 --- a/CSharpMath.Maui.Example/CSharpMath.Maui.Example.csproj +++ b/CSharpMath.Maui.Example/CSharpMath.Maui.Example.csproj @@ -37,6 +37,9 @@ 21.0 10.0.17763.0 10.0.17763.0 + + + true @@ -63,7 +66,6 @@ - diff --git a/CSharpMath.Rendering.Tests/CSharpMath.Rendering.Tests.csproj b/CSharpMath.Rendering.Tests/CSharpMath.Rendering.Tests.csproj index a2336cc2..fa6c271d 100644 --- a/CSharpMath.Rendering.Tests/CSharpMath.Rendering.Tests.csproj +++ b/CSharpMath.Rendering.Tests/CSharpMath.Rendering.Tests.csproj @@ -3,8 +3,6 @@ - - \ No newline at end of file diff --git a/CSharpMath.SkiaSharp/CSharpMath.SkiaSharp.csproj b/CSharpMath.SkiaSharp/CSharpMath.SkiaSharp.csproj index 4eb93cac..e6a6c2ae 100644 --- a/CSharpMath.SkiaSharp/CSharpMath.SkiaSharp.csproj +++ b/CSharpMath.SkiaSharp/CSharpMath.SkiaSharp.csproj @@ -7,7 +7,7 @@ - + diff --git a/Directory.Build.props b/Directory.Build.props index b9f601d4..463cac00 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ - 11.3.9 + 12.0.0-rc1 true false From 79c6cf9e34bd73c9642d2a18e896d32d13a7e097 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Wed, 25 Mar 2026 23:41:09 +0800 Subject: [PATCH 2/4] Format --- CSharpMath.Evaluation/Evaluation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CSharpMath.Evaluation/Evaluation.cs b/CSharpMath.Evaluation/Evaluation.cs index 86d0f8b2..ec6d1f16 100644 --- a/CSharpMath.Evaluation/Evaluation.cs +++ b/CSharpMath.Evaluation/Evaluation.cs @@ -867,7 +867,7 @@ string GreekToLaTeXCommandName(string n) => } goto exitFor; } - exitFor: + exitFor: (next, error) = bracketArgument == null ? Transform(mathList, ref i, Precedence.FunctionApplication) From 2738f698591a4dc7669f2be636180801d0eb808b Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Wed, 25 Mar 2026 23:49:36 +0800 Subject: [PATCH 3/4] Fix Binding constructor --- CSharpMath.Xaml.Tests/TestAvalonia.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CSharpMath.Xaml.Tests/TestAvalonia.cs b/CSharpMath.Xaml.Tests/TestAvalonia.cs index 1b8b5700..ed23d512 100644 --- a/CSharpMath.Xaml.Tests/TestAvalonia.cs +++ b/CSharpMath.Xaml.Tests/TestAvalonia.cs @@ -29,7 +29,7 @@ public class TestAvalonia protected override BindingMode TwoWay => BindingMode.TwoWay; protected override TView ParseFromXaml(string xaml) => AvaloniaRuntimeXamlLoader.Parse(xaml); protected override IDisposable SetBinding(Control view, AvaloniaProperty property, string viewModelProperty, BindingMode bindingMode) => - view.Bind(property, new Binding(viewModelProperty, bindingMode)); + view.Bind(property, new Binding(viewModelProperty) { Mode = bindingMode }); protected override void SetBindingContext(Control view, object viewModel) => view.DataContext = viewModel; } From ab82fa369a6cc0d33d6a8882d4dd98cdde6fa184 Mon Sep 17 00:00:00 2001 From: Hadrian Tang Date: Thu, 26 Mar 2026 00:21:06 +0800 Subject: [PATCH 4/4] Fix Avalonia DrawAsPng --- CSharpMath.Avalonia/Extensions.cs | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/CSharpMath.Avalonia/Extensions.cs b/CSharpMath.Avalonia/Extensions.cs index 7a75dd08..5ae70210 100644 --- a/CSharpMath.Avalonia/Extensions.cs +++ b/CSharpMath.Avalonia/Extensions.cs @@ -1,3 +1,4 @@ +using System; using Avalonia; using Avalonia.Media; using Avalonia.Media.Imaging; @@ -25,22 +26,6 @@ internal static CSharpMathTextAlignment ToCSharpMathTextAlignment(this AvaloniaT public static SolidColorBrush ToSolidColorBrush(this System.Drawing.Color color) => new SolidColorBrush(color.ToAvaloniaColor()); - class DrawVisual : Visual where TContent : class { - readonly Painter painter; - readonly System.Drawing.RectangleF measure; - readonly CSharpMathTextAlignment alignment; - public DrawVisual(Painter painter, - System.Drawing.RectangleF measure, CSharpMathTextAlignment alignment) { - this.painter = painter; - this.measure = measure; - this.alignment = alignment; - } - public override void Render(DrawingContext context) { - base.Render(context); - var canvas = new AvaloniaCanvas(context, new Size(measure.Width, measure.Height)); - painter.Draw(canvas, alignment); - } - } public static void DrawAsPng (this Painter painter, System.IO.Stream target, @@ -53,7 +38,9 @@ public static void DrawAsPng if (size.Height is 0) size.Height = 1; using var bitmap = new RenderTargetBitmap(new PixelSize((int)size.Width, (int)size.Height)); - bitmap.Render(new DrawVisual(painter, size, alignmentForTests)); + using var context = bitmap.CreateDrawingContext(); + var canvas = new AvaloniaCanvas(context, new Size(size.Width, size.Height)); + painter.Draw(canvas, alignmentForTests); bitmap.Save(target, quality); } }