Hi,
Speaking of refactoring, I think it's time we consider replacing some of our UniConvertor-based importers. The one I particularly have in mind is CDR.
Thus far support for some file formats via UC was a low-hanging fruit. However the project isn't progressing (http://bit.ly/pRwyJV) in a way that would provide us an increasingly good support for some of them, especially CDR. Yet users keep complaining (and rightfully so).
Last year we (re-lab) started working with LibreOffice team. The first project we did together was reading binary Visio files which resulted in libvisio (http://bit.ly/rh0TGd) that's now available to everyone with release of LibreOffice 3.5 a week ago.
Then we started working on CDR (again), and now there is libcdr available (http://bit.ly/zJFr7l). With release of v0.0.3 the library is now feature-wise on par with UniConvertor and even surpasses it in terms of supported objects, properties and a certain part of API that is of interest for us. I'm talking about API that allows building previews of pages and importing just the pages that the user needs (something like what we have in the PDF/PS importer).
Pages used to be one of the selling points for Corel DRAW, since Adobe Illustrator got its artboards only in CS4. So no wonder that there's quite a lot of legacy CDR files around that have multiple pages. And we cannot sensibly read those.
The very same API was added to libvisio.
So what I'm wondering about is whether we can abstract part of the importing preview dialog and rebuild existing importers around it: redo both PDF/PS/EPS (probably little work), use libcdr instead of UC, add Visio importer (libvisio). If we ever go for Assimp for importing 3D projections of 3D files, that would come in handy too.
It would probably also make sense adding a possibility to import pages as either layers or new documents (the way GIMP does it for e,g, PDF).
What do you think?
P.S. As for libcdr and libvisio, both are well maintained project (as they are part of LibreOffice). Currently we are working on support for gradients and text in CDR (both missing in UniConvertor). If anyone's interested, it's best to fetch code from Git, as it's moving forward very fast.
$ git clone git://anongit.freedesktop.org/libreoffice/libcdr
Alexandre Prokoudine http://libregraphicsworld.org