Current activity (14 April 2007) Version 0.9.6 released. The code is now a release candidate.
The Dia VDX plugin is an attempt to read and write Visio XML (VDX) format documents from Dia. Current limitations:
This code is built against the current Dia SVN tree, and replaces any older version of the code there; it is generally merged into the SVN tree within a few days, so you will probably find it easier to compile from there.
I have made many compromises that are necessary because of the different imaging models - in particular, Dia uses Beziers, but Visio uses elliptical arcs or (in Visio 2003) Non-Uniform Rational B-Splines (NURBS). Converting between these is approximate at best.
I have chosen to approximate elliptical arcs as Beziers and NURBS as lines on import, and to represent Beziers as lines on export. For handling NURBS on output I'd have to let the user choose between Visio 2002 and 2003.
Version 0.9.6 fixes two import crashes when reading VDX exports from 3Com Network Director. Note that all such exports are missing vital rendering information - widths, heights and font sizes are set to 0 - so it is not possible to import them correctly without parsing the formulae, which will not be supported in this release cycle.
Version 0.9.5 has a fallback to Arial for unknown fonts.
Version 0.9.4 replaces the g_assert() calls with attempts at recovery and may work round a problem with nonexistent fonts.
Version 0.9.3 fixes a range of other possible crashes caused by unexpected input (e.g. reference to non-existent Masters). It also improves the NURBS handling for mixed NURBS and LineTo shapes.
Version 0.9.2 fixes a crash on import from OmniGraffle caused by references to undefined colour or stylesheet objects.
Version 0.9.1 fixes a crash on export caused by changes to the vdx_Para structure.
Version 0.9 fixes some spline and text issues in 0.8. Text top alignment works, geometry handling is now restartable (so all the old "MoveTo after start of..." and "Unexpected additional objects" problems are gone), some bold/italic and font information is now used properly, the InfiniteLine warnings disappear, text formatting is inherited from Masters and Layers have been tweaked again.
Version 0.8 adds a large number of minor fixes based on feedback from testers. Apart from some spline and text issues, it renders most of my test documents correctly.
Version 0.7 adds NURBS support and fixes a lot of text layout and alignment problems.
Version 0.6.1 fixes a crash with Master inheritance in grouped shapes.
Version 0.6 exports all Dia diagrams, but probably not perfectly. It also fixes a few bugs on import: image alignment, and a pair of crashes. In particular, it can now import files it has exported.
Version 0.5 fixes many import layout issues and now handles embedded images. It also now does export, but only for lines and text, and still very primitively.
Version 0.4 does a passable job with curves, and has the first implementation of Masters. It also handles XForm1D, and fixes a potential crash. It gets some layers in the wrong order and still has some major positioning and sizing issues.
Version 0.3 gets object layout correct, and does a better job of text, lines, arrows, layers etc. Some diagrams (that don't contain curves) now render pretty much correctly.
Version 0.2 now parses all VDX structures and does a far better job with all shapes. It also now handles groups. The basic code for curves is in, but the calculations to convert from elliptical arcs to Beziers are not yet done, so the results aren't yet useful.
Version 0.1 concentrated on parsing the VDX files and interfacing (crudely) to Dia.
What I really need is sample VDX files. Particularly useful would be:
If you have any comments, contact me at vdx(at)redferni.uklinux.net.