Skip to content

feat: LaTeX math (CSharpMath.Avalonia) - #53

Draft
Kryptos-FR wants to merge 1 commit into
mainfrom
refactor/csharpmath-avalonia
Draft

Kryptos-FR wants to merge 1 commit into
mainfrom
refactor/csharpmath-avalonia

Conversation

@Kryptos-FR

@Kryptos-FR Kryptos-FR commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Summary

Following #51, replace CSharpMath.SkiaSharp with CSharpMath.Avalonia (see verybadcat/CSharpMath#259).

Warning

Prerelease dependency: this PR currently pins CSharpMath.Avalonia to a 1.0.0-pre.2 prerelease build, since it's the version CSharpMath explicitly targets Avalonia 12/.NET 10 with.

This branch/package must not be merged or released until CSharpMath ships a stable 1.0.0 — re-pin the version at that point.

Type of change

  • Bug fix
  • New feature
  • Performance improvement
  • Refactoring (no behaviour change)
  • Documentation
  • CI / build

Test plan

  • dotnet test — all tests pass
  • Manual smoke-test in the demo app

@Kryptos-FR Kryptos-FR added the enhancement New feature or request label Aug 15, 2026
Replaces CSharpMath.SkiaSharp's bitmap rasterization with CSharpMath.Avalonia's
native MathView control (vector draw, bindable TextColor), dropping the
manual bitmap-rebuild-on-theme-change dance in favor of a plain property set.
@Kryptos-FR
Kryptos-FR force-pushed the refactor/csharpmath-avalonia branch from c802233 to 59f5b72 Compare August 22, 2026 18:35
@github-actions

Copy link
Copy Markdown
Contributor

Summary

Summary
Generated on: 08/22/2026 - 18:36:47
Coverage date: 08/22/2026 - 18:36:38 - 08/22/2026 - 18:36:44
Parser: MultiReport (5x Cobertura)
Assemblies: 5
Classes: 61
Files: 56
Line coverage: 81.8% (1839 of 2247)
Covered lines: 1839
Uncovered lines: 408
Coverable lines: 2247
Total lines: 4069
Branch coverage: 64% (809 of 1264)
Covered branches: 809
Total branches: 1264
Method coverage: Feature is only available for sponsors
Tag: 165_32591198041

Coverage

MarkView.Avalonia - 84.1%
Name Line Branch
MarkView.Avalonia 84.1% 66.8%
MarkView.Avalonia.Extensions.BitmapImageLoader 66.6% 85%
MarkView.Avalonia.Extensions.SharedHttpClient 100%
MarkView.Avalonia.MarkdownExtensions 100%
MarkView.Avalonia.MarkdownViewer 75% 61.5%
MarkView.Avalonia.MarkdownViewerDefaults 100%
MarkView.Avalonia.MarkdownViewerExtensions 100%
MarkView.Avalonia.Rendering.AvaloniaRenderer 94.7% 67.8%
MarkView.Avalonia.Rendering.Blocks.AlertBlockRenderer 96% 90%
MarkView.Avalonia.Rendering.Blocks.CodeBlockRenderer 100% 100%
MarkView.Avalonia.Rendering.Blocks.FigureRenderer 100% 100%
MarkView.Avalonia.Rendering.Blocks.FootnoteGroupRenderer 100% 100%
MarkView.Avalonia.Rendering.Blocks.HeadingRenderer 92.5% 87.5%
MarkView.Avalonia.Rendering.Blocks.HtmlBlockRenderer 100%
MarkView.Avalonia.Rendering.Blocks.ListRenderer 100% 90.6%
MarkView.Avalonia.Rendering.Blocks.ParagraphRenderer 100%
MarkView.Avalonia.Rendering.Blocks.QuoteBlockRenderer 100%
MarkView.Avalonia.Rendering.Blocks.TableRenderer 80.9% 70.8%
MarkView.Avalonia.Rendering.Blocks.ThematicBreakRenderer 100%
MarkView.Avalonia.Rendering.Blocks.YamlFrontMatterBlockRenderer 100%
MarkView.Avalonia.Rendering.Containers.BlockContainer 100%
MarkView.Avalonia.Rendering.Containers.InlineContainer 75%
MarkView.Avalonia.Rendering.DocumentSelectionLayer 58.3% 52.7%
MarkView.Avalonia.Rendering.IndexEntry 100%
MarkView.Avalonia.Rendering.Inlines.AbbreviationInlineRenderer 100% 50%
MarkView.Avalonia.Rendering.Inlines.AutolinkInlineRenderer 100% 75%
MarkView.Avalonia.Rendering.Inlines.CodeInlineRenderer 100%
MarkView.Avalonia.Rendering.Inlines.DelimiterInlineRenderer 100%
MarkView.Avalonia.Rendering.Inlines.EmphasisInlineRenderer 100% 100%
MarkView.Avalonia.Rendering.Inlines.FootnoteLinkRenderer 100% 100%
MarkView.Avalonia.Rendering.Inlines.HtmlEntityInlineRenderer 100%
MarkView.Avalonia.Rendering.Inlines.HtmlInlineRenderer 100% 100%
MarkView.Avalonia.Rendering.Inlines.LineBreakInlineRenderer 100% 100%
MarkView.Avalonia.Rendering.Inlines.LinkInlineRenderer 87.2% 64.8%
MarkView.Avalonia.Rendering.Inlines.LiteralInlineRenderer 75% 50%
MarkView.Avalonia.Rendering.Inlines.MarkdownHyperlink 100%
MarkView.Avalonia.Rendering.Inlines.TaskListRenderer 30% 25%
MarkView.Avalonia.Rendering.LinkClickedEventArgs 100%
MarkView.Avalonia.Rendering.SlugGenerator 100% 92.8%
MarkView.Avalonia.TocEntry 100% 100%
System.Text.RegularExpressions.Generated 83.5% 64.5%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F84E9C1C4201A3D9
7C3CE188DC3EC8386B855536624CA17032428F75282FD43BB__BrTagRegex_1
83% 54.7%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F84E9C1C4201A3D9
7C3CE188DC3EC8386B855536624CA17032428F75282FD43BB__DimensionTitleRegex_2
72.7% 55.2%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F84E9C1C4201A3D9
7C3CE188DC3EC8386B855536624CA17032428F75282FD43BB__ImageSizePreprocessorReg
ex_0
86.1% 76.7%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F84E9C1C4201A3D9
7C3CE188DC3EC8386B855536624CA17032428F75282FD43BB__YoutubeIdRegex_3
87% 61.2%
MarkView.Avalonia.Math - 97.5%
Name Line Branch
MarkView.Avalonia.Math 97.5% 66.6%
MarkView.Avalonia.MarkdownViewerMathExtensions 100%
MarkView.Avalonia.Math.MathBlockRenderer 97% 50%
MarkView.Avalonia.Math.MathExtension 100% 100%
MarkView.Avalonia.Math.MathFormulaRenderer 91.6% 75%
MarkView.Avalonia.Math.MathInlineRenderer 100% 0%
MarkView.Avalonia.Mermaid - 47.8%
Name Line Branch
MarkView.Avalonia.Mermaid 47.8% 33%
CompiledAvaloniaXaml.!AvaloniaResources 0% 0%
MarkView.Avalonia.MarkdownViewerMermaidExtensions 100%
MarkView.Avalonia.Mermaid.MermaidBlockRenderer 47.8% 32.2%
MarkView.Avalonia.Mermaid.MermaidExtension 100% 100%
MarkView.Avalonia.Svg - 69.5%
Name Line Branch
MarkView.Avalonia.Svg 69.5% 63.6%
MarkView.Avalonia.MarkdownViewerSvgExtensions 100%
MarkView.Avalonia.Svg.SvgExtension 100%
MarkView.Avalonia.Svg.SvgImageLoader 65% 63.6%
MarkView.Avalonia.SyntaxHighlighting - 95.6%
Name Line Branch
MarkView.Avalonia.SyntaxHighlighting 95.6% 67.2%
MarkView.Avalonia.MarkdownViewerSyntaxHighlightingExtensions 100%
MarkView.Avalonia.SyntaxHighlighting.DualThemeTextMateHighlighter 66.6% 50%
MarkView.Avalonia.SyntaxHighlighting.TextMateCodeBlockRenderer 94.1% 60.7%
MarkView.Avalonia.SyntaxHighlighting.TextMateExtension 100% 50%
MarkView.Avalonia.SyntaxHighlighting.TextMateHighlighter 97.6% 81.8%

@github-actions

Copy link
Copy Markdown
Contributor

Mutation Testing Summary

Summary
Generated on: 08/22/2026 - 18:47:47
Projects: 5
Mutation score: 64.31% (663 of 1031)
Killed: 659
Survived: 94
Timeout: 4
No Coverage: 274
Ignored: 229
Compile Errors: 319
Runtime Errors: 3
Total Detected: 663
Total Undetected: 368
Total Mutants: 1582

Mutation score

MarkView.Avalonia - 77.06%
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Runtime Errors Total Detected Total Undetected Total Mutants
AssemblyInfo.cs N/A 0 0 0 0 0 0 0 0 0 0
Extensions/BitmapImageLoader.cs 84.85% 28 0 0 5 5 0 0 28 5 38
Extensions/ICodeHighlighter.cs N/A 0 0 0 0 0 0 0 0 0 0
Extensions/IImageLoader.cs N/A 0 0 0 0 0 0 0 0 0 0
Extensions/IMarkViewExtension.cs N/A 0 0 0 0 0 0 0 0 0 0
Extensions/SharedHttpClient.cs N/A 0 0 0 0 0 0 0 0 0 0
ImageResizeMode.cs N/A 0 0 0 0 0 0 0 0 0 0
MarkdownExtensions.cs 100.00% 8 0 0 0 1 0 0 8 0 9
MarkdownViewer.cs 58.00% 116 0 0 84 42 43 0 116 84 285
MarkdownViewerDefaults.cs N/A 0 0 0 0 0 0 0 0 0 0
MarkdownViewerExtensions.cs 100.00% 7 0 0 0 0 0 0 7 0 7
Rendering/AvaloniaObjectRenderer.cs N/A 0 0 0 0 0 0 0 0 0 0
Rendering/AvaloniaRenderer.cs 95.00% 57 0 0 3 17 5 1 57 3 83
Rendering/Blocks/AlertBlockRenderer.cs 100.00% 32 0 1 0 1 0 0 33 0 34
Rendering/Blocks/CodeBlockRenderer.cs 100.00% 13 0 0 0 2 3 0 13 0 18
Rendering/Blocks/FigureRenderer.cs 100.00% 14 0 1 0 4 1 0 15 0 20
Rendering/Blocks/FootnoteGroupRenderer.cs N/A 0 0 0 0 0 30 0 0 0 30
Rendering/Blocks/HeadingRenderer.cs 93.75% 15 0 0 1 3 2 0 15 1 21
Rendering/Blocks/HtmlBlockRenderer.cs N/A 0 0 0 0 0 0 0 0 0 0
Rendering/Blocks/ListRenderer.cs N/A 0 0 0 0 0 70 0 0 0 70
Rendering/Blocks/ParagraphRenderer.cs 100.00% 7 0 0 0 1 0 0 7 0 8
Rendering/Blocks/QuoteBlockRenderer.cs 100.00% 7 0 1 0 1 0 0 8 0 9
Rendering/Blocks/TableRenderer.cs N/A 0 0 0 0 0 48 0 0 0 48
Rendering/Blocks/ThematicBreakRenderer.cs 100.00% 3 0 0 0 1 0 0 3 0 4
Rendering/Blocks/YamlFrontMatterBlockRenderer.cs N/A 0 0 0 0 0 0 0 0 0 0
Rendering/Containers/BlockContainer.cs N/A 0 0 0 0 0 0 0 0 0 0
Rendering/Containers/IContainer.cs N/A 0 0 0 0 0 0 0 0 0 0
Rendering/Containers/InlineContainer.cs 100.00% 1 0 0 0 0 0 0 1 0 1
Rendering/DocumentBlock.cs 100.00% 3 0 0 0 0 0 0 3 0 3
Rendering/DocumentSelectionLayer.cs 58.00% 58 0 0 42 17 23 0 58 42 140
Rendering/Inlines/AbbreviationInlineRenderer.cs 83.33% 10 0 0 2 1 0 0 10 2 13
Rendering/Inlines/AutolinkInlineRenderer.cs 100.00% 9 0 0 0 1 2 0 9 0 12
Rendering/Inlines/CodeInlineRenderer.cs 100.00% 3 0 0 0 1 0 0 3 0 4
Rendering/Inlines/DelimiterInlineRenderer.cs 100.00% 2 0 0 0 1 0 0 2 0 3
Rendering/Inlines/EmphasisInlineRenderer.cs 100.00% 17 0 0 0 1 2 1 17 0 21
Rendering/Inlines/FootnoteLinkRenderer.cs 100.00% 9 0 0 0 1 2 0 9 0 12
Rendering/Inlines/HtmlEntityInlineRenderer.cs 100.00% 1 0 0 0 1 0 0 1 0 2
Rendering/Inlines/HtmlInlineRenderer.cs 100.00% 2 0 0 0 2 0 0 2 0 4
Rendering/Inlines/LineBreakInlineRenderer.cs 100.00% 4 0 0 0 1 0 0 4 0 5
Rendering/Inlines/LinkInlineRenderer.cs 84.34% 70 0 0 13 15 4 1 70 13 103
Rendering/Inlines/LiteralInlineRenderer.cs 66.67% 2 0 0 1 1 0 0 2 1 4
Rendering/Inlines/MarkdownHyperlink.cs N/A 0 0 0 0 0 0 0 0 0 0
Rendering/Inlines/TaskListRenderer.cs 27.27% 3 0 0 8 2 0 0 3 8 13
Rendering/MarkdownSelectableTextBlock.cs N/A 0 0 0 0 26 12 0 0 0 38
Rendering/SlugGenerator.cs 100.00% 17 0 0 0 4 2 0 17 0 23
TocEntry.cs 100.00% 12 0 1 0 2 5 0 13 0 20
MarkView.Avalonia.Math - 45.90%
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Runtime Errors Total Detected Total Undetected Total Mutants
MarkdownViewerExtensions.cs 100.00% 2 0 0 0 2 0 0 2 0 4
MathBlockRenderer.cs 44.83% 13 12 0 4 6 4 0 13 16 39
MathExtension.cs 50.00% 3 3 0 0 3 3 0 3 3 12
MathFormulaRenderer.cs 41.67% 10 11 0 3 4 0 0 10 14 28
MathInlineRenderer.cs N/A 0 0 0 0 0 17 0 0 0 17
MarkView.Avalonia.Mermaid - 15.95%
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Runtime Errors Total Detected Total Undetected Total Mutants
MarkdownViewerExtensions.cs 100.00% 2 0 0 0 2 0 0 2 0 4
MermaidBlockRenderer.cs 14.10% 22 42 0 92 27 26 0 22 134 209
MermaidExtension.cs 40.00% 2 3 0 0 3 3 0 2 3 11
MarkView.Avalonia.Svg - 72.97%
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Runtime Errors Total Detected Total Undetected Total Mutants
MarkdownViewerExtensions.cs 100.00% 2 0 0 0 2 0 0 2 0 4
SvgExtension.cs 100.00% 1 0 0 0 1 0 0 1 0 2
SvgImageLoader.cs 70.59% 24 4 0 6 5 2 0 24 10 41
MarkView.Avalonia.SyntaxHighlighting - 62.34%
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Runtime Errors Total Detected Total Undetected Total Mutants
DualThemeTextMateHighlighter.cs 66.67% 2 0 0 1 0 0 0 2 1 3
MarkdownViewerExtensions.cs 100.00% 2 0 0 0 2 0 0 2 0 4
TextMateCodeBlockRenderer.cs 41.67% 15 13 0 8 10 8 0 15 21 54
TextMateExtension.cs 25.00% 1 3 0 0 1 0 0 1 3 5
TextMateHighlighter.cs 87.50% 28 3 0 1 6 2 0 28 4 40

@Kryptos-FR Kryptos-FR added dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code documentation Improvements or additions to documentation labels Aug 22, 2026
@Kryptos-FR Kryptos-FR self-assigned this Aug 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation enhancement New feature or request .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant