libvisio-ng 0.6.0 och VSDView 0.5.0 — nu ännu längre före C++-versionen

Det har hänt en hel del sedan förra releasen. Både libvisio-ng och VSDView har fått rejäla uppgraderingar, och gapet till det gamla C++-baserade libvisio har bara ökat.

libvisio-ng 0.6.0

Den här releasen handlar mycket om att hantera fler av Visios visuella funktioner korrekt — saker som det gamla C++-biblioteket aldrig implementerade.

Nya funktioner:

  • Rich text — formaterad text i shapes renderas nu korrekt med fetstil, kursiv, teckenstorlek och färg
  • Radiella gradienter — inte bara linjära längre, utan även radiella gradienter stöds nu fullt ut
  • Bildinbäddning — inbäddade bilder (EMF, PNG, JPEG) i .vsdx-filer extraheras och renderas i SVG-output
  • Type hints — hela kodbasen har fått type annotations, vilket gör det enklare att bidra och integrera
  • Sphinx-dokumentation — ordentlig API-dokumentation genererad med Sphinx
  • CI-pipeline — automatiserade tester och kvalitetskontroll vid varje commit

Testsviten har vuxit från 96 till 102 tester. Varje test validerar att en specifik Visio-fil konverteras korrekt — det är ingen leksak.

libvisio-ng finns nu på PyPI:

pip install libvisio-ng

Ren Python. Inga C++-beroenden. Inga systembibliotek att krångla med. Det bara funkar.

libvisio-rs — Rust-porten

Det som tidigare var ”nästa steg” är nu verklighet. libvisio-rs v0.1.1 är en fullständig Rust-port av libvisio-ng med C ABI via cbindgen-genererade headers — redo att droppa in som ersättare för C++ libvisio i LibreOffice och Inkscape.

  • C ABI — cbindgen-genererade headers gör det möjligt att länka direkt från C/C++-projekt
  • PyO3 Python-bindings — samma API som libvisio-ng, men med Rust-prestanda
  • Inkscape-extension — inskickat som MR #718
  • LibreOffice — enhancement proposal inskickat

Installera via crates.io:

cargo add libvisio-rs

Koden finns på github.com/yeager/libvisio-rs och crates.io/crates/libvisio-rs.

Jämförelse: libvisio-ng/rs vs C++ libvisio

Det här projektet startade för att C++-versionen av libvisio (som LibreOffice använder) hade stagnerat. Ingen aktiv utveckling sedan ~2018, bristfälligt stöd för teman, gradienter, skuggor och textformatering. Här är den fullständiga jämförelsen:

Funktion C++ libvisio libvisio-ng/rs
.vsdx-stöd Grundläggande ✅ Fullt (teman, gradienter, skuggor)
.vsd-stöd (binärt) Bra ✅ Fullt (NURBS, splines, bilder, lager)
Temafärger
Linjära gradienter Delvis
Radiella gradienter
Skuggor
Skraffering/mönsterfyllning
Rich text (blandade stilar) Delvis
Bildinbäddning Delvis
Konnektorer Grundläggande ✅ Full med routing
Master shape-arv Delvis ✅ Fullt
Hyperlänkar
Rundade rektanglar
Linjemönster (streckade m.m.) Grundläggande ✅ Fullt
Fyllnadsmönster
Pilmarkörer Delvis
Tester Begränsat 102
Språk C++ Python + Rust + C ABI
Aktiv utveckling ❌ (senast ~2018)
PyPI ✅ libvisio-ng
crates.io ✅ libvisio-rs
Homebrew ✅ (via VSDView)

VSDView 0.5.0

VSDView är den grafiska Visio-läsaren som bygger på libvisio-ng. Version 0.5.0 är en massiv uppgradering med 15 nya funktioner:

  • Zoom och panorering — scrolla och zooma fritt i diagrammet
  • Sökfunktion — hitta shapes och text i dokumentet
  • Shape-information — klicka på en shape för att se dess egenskaper
  • Mätverktyg — mät avstånd direkt i diagrammet
  • Export — spara som SVG, PNG eller PDF
  • Lagerhantering — visa/dölj lager
  • Minimap — överblick över hela dokumentet
  • …och mer

Den stora förändringen under huven är att VSDView nu helt har ersatt C++ libvisio med libvisio-ng. Tidigare krävdes libvisio-tools som systempaket — nu är allt inbyggt. 4000 rader gammal parser-kod ersattes med en 30-raders wrapper mot libvisio-ng. Resultatet: bättre rendering, enklare installation, och stöd för allt som libvisio-ng klarar.

Det finns också en Tauri-baserad nativapp (v0.2.0) med Alma TTS-integration.

📦 Installation

  • macOS: brew install yeager/tap/vsdview
  • Windows: Ladda ner från GitHub Releases
  • Linux: .deb och .rpm i våra repos, eller pip install vsdview
  • PyPI: pip install vsdview

Integration i ekosystemet

Målet är att ersätta det ounderhållna C++ libvisio över hela open source-ekosystemet:

  • Inkscape: Extension inskickat som MR #718 — öppnar .vsd/.vsdx direkt i Inkscape via libvisio-ng
  • LibreOffice: Enhancement proposal inskickat för att ersätta C++ libvisio med libvisio-rs

Med libvisio-rs C ABI och cbindgen-headers kan projektet fungera som drop-in-ersättare för det gamla biblioteket. Python-versionen (libvisio-ng) driver redan VSDView och Inkscape-extensionen, medan Rust-versionen (libvisio-rs) riktar sig mot LibreOffice och andra C/C++-projekt.

Länkar

libvisio-ng, libvisio-rs och VSDView är öppen källkod under GPL-3.0.

Kommentarer

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Denna webbplats använder Akismet för att minska skräppost. Lär dig om hur din kommentarsdata bearbetas.