What’s new with re-lab and OLE Toy

What’s new with re-lab and OLE Toy

It's been a while since we last posted on OLE Toy — a utility we wrote as part of re-lab project that attempts to liberate you from vendor lock-in. So here is a recap on our activity up till now.

If you can recall history of the project, OLE Toy was written to parse and explore contents of Microsoft Publisher files — the project we started to assist Scribus team. Part of that project was about figuring out Office Drawing Layer format by Microsoft, also known as Escher and used in other MS Office applications.

End of January 2011 we moved our VSD and VSS parser (Microsoft Visio) to OLE Toy, and this code was put to a good use later this year when GSoC project on Visio files support in LibreOffice started (more on that soon). Then in early June we published an early spec on VSD to help that GSoC project. The collaboration went on and hasn't really stopped yet.

In July we added parsing of EMF(+) and WMF — there are still lots of issues with these files virtually everywhere (that is, in both free and proprietary software). Around same time we moved CDR (Corel DRAW) parser to OLE Toy as well and improved it here and there.

In August we added support for CLP (Microsoft clipboard), PPT (PowerPoint) and XLS (Excel). A mere week after that Gnumeric from Git got a codepage selector for XLS that is useful for opening Excel 95 files which some macabre 3rd party apps used to write incorrectly (and some still do). Support for parsing DOC and VBA was added next.

Just a week ago we got a new contributor who answered the call for work on Propellerhead ReCycle loops parser, so we moved our previously implemented REX/RX2 parser to OLE Toy as well, and Frankie started improving it.

Finally, just few days ago we added a parser for Macromedia Freehand documents and implemented support for more chunks in FH files. This file format has some truly insane design decisions, so it's going to take some time till a converter to e.g. SVG can be implemented.

So, basically, this is just a gentle reminder that if you need support for some crazy binary undocumented file formats and you know some Python, you can join the project and help us help you :) We usually stay neutral to upstream projects (libvisio does have our patches nevertheless), but we are willing to work with any upstream project that is serious about doing some real work.

Was it useful? There's more:


Leave a comment
  1. Although I know nothing about Python (sorry guys) I am in fact really amazed how much file formats are supported. I found this site through a google search and I am glad I did.

    Thanks for providing these solutions to the community and I need to have a look at this page in the near future to discover which other file formats - besides the ones you mentioned - are already integrated.

    Thanks again!

  2. Any scope of supporting or reverse engineering the file formats of Adobe line of products, starting with Photoshop. :)

  3. Alexandre Prokoudine 25 July 2014 at 5:49 pm

    @jadhav333, the PSD spec is open and well maintained, same as for some other file formats by Photoshop. Brush dynamicsin the ABR (Photoshop) file format was reverse-engineered by me several years ago, Krita uses that information, AFAIK. What other file formats from Adobe do you need?

  4. As I understood that GIMP doesnot support dynamic Layer styles, adjustment layers and is not able to save layer groups to PSD format since the PSD format being proprietory had many unknown factors. Also support for other formats such as ai, fla, indd would be helpful.

    Apologies for my ignorance if any of these are already supported.

    Special thanks for your efforts in reverse engineering the Adobe formats.

Tell us what you think

Submit the word you see below: