Skip to content

SVG tiling: fast tile generator, perf improvements, bug fixes#68

Merged
gentledepp merged 1 commit intodevelopfrom
feature/file_tiles_alex
Apr 30, 2026
Merged

SVG tiling: fast tile generator, perf improvements, bug fixes#68
gentledepp merged 1 commit intodevelopfrom
feature/file_tiles_alex

Conversation

@gentledepp
Copy link
Copy Markdown
Owner

Core:

  • Fast/efficient tile generator for large images, incl. direct SVG tiling
  • Consolidated zip/png/svg loading into a single tool command
  • PlaceAsBackgroundTool runs conversions on background thread

Performance:

  • Default maxParallelTasks to Environment.ProcessorCount (was unlimited → SEHException risk)
  • SKFilterQuality.Medium when downsampling tiles
  • Visibility check before LoadTile in sync RenderBitmap (skip offscreen tiles)
  • LoadTileStream/Async return FileStream directly, no MemoryStream copy
  • Shared ZipArchive per render pass in SvgImage (was one per tile)
  • LRU eviction in TileCache (was silently discarding new items when full)
  • Configurable tile encoding (format/quality, default PNG 100)

Fixes:

  • Editor crash on window resize (race between PropertyChange/Dispose and render thread)
  • Incorrect viewbox calculation
  • Zoom from tile + zoom limitation
  • SvgImage not editable when added as tile
  • TileCache.CleanUp bug
  • Concurrent rendering issue

Misc:

  • Removed obsolete base64 tile generation code
  • Uncommented and fixed TileGenerator/TileRenderer tests
  • MainWindow standard size

Core:
- Fast/efficient tile generator for large images, incl. direct SVG tiling
- Consolidated zip/png/svg loading into a single tool command
- PlaceAsBackgroundTool runs conversions on background thread

Performance:
- Default maxParallelTasks to Environment.ProcessorCount (was unlimited → SEHException risk)
- SKFilterQuality.Medium when downsampling tiles
- Visibility check before LoadTile in sync RenderBitmap (skip offscreen tiles)
- LoadTileStream/Async return FileStream directly, no MemoryStream copy
- Shared ZipArchive per render pass in SvgImage (was one per tile)
- LRU eviction in TileCache (was silently discarding new items when full)
- Configurable tile encoding (format/quality, default PNG 100)

Fixes:
- Editor crash on window resize (race between PropertyChange/Dispose and render thread)
- Incorrect viewbox calculation
- Zoom from tile + zoom limitation
- SvgImage not editable when added as tile
- TileCache.CleanUp bug
- Concurrent rendering issue

Misc:
- Removed obsolete base64 tile generation code
- Uncommented and fixed TileGenerator/TileRenderer tests
- MainWindow standard size
@gentledepp gentledepp merged commit d3a0ce2 into develop Apr 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants