Trying to read files from the past…

In the deeper directories of my storage device I have some files around from the old times, when my general purpose computer was still locked partially by proprietary (operating) systems. Never-the-less e.g. Corel Draw was still worth the lock and the money, I loved that program and what it enabled me to produce.

These products are still around. And are basically binary blobs now for me, the content not readable by the software I use. Blame on that software 🙂 Well, but also the old software, i.e. Corel Draw, and its makers, using a storage format which seems not published and possibly only available by something like a Technology Partner program or similar, meaning lawyers and businessmen, not fun. But those files’ content is mine, and I completely dislike that the format binds me to a certain software.

Searching for FLOSS code that can understand files in Corel Draw’s CDR file format I discovered UniConvertor from the sK1 project and some initial code for LibreOffice, even actively developed ATM, but nothing for Karbon from the Calligra Suite.

Seeing with the hex editor Okteta (jay!) that the CDR file format is based on some RIFF and finding that one completely described on Wikipedia I somehow got tempted to try to develop a CDR import filter for Karbon, to finally free my content from those binary blobs again. And there was quickly some initial success, so I may try to stay with that combining game of decoding bytes:

At least the by-product libkoralle, a Qt-based library for parsing RIFF is useful already.

I look forward to others joining the efforts on the Karbon CDR import filter. I am mainly interested to read files of the versions 4 and 5, so people with newer versions need to make sure support for these themselves 🙂 I still also need to contact the developers of UniConvertor and libcdr (if you are one, check your email box the next days 😉 ).

You can find the current state in the branch “CDRImport” in my clone of the Calligra repo “filters-karbon-cdr” in the official Calligra repo (Updated January 28, 2012).


15 thoughts on “Trying to read files from the past…

  1. Someone at work still uses exlusively Corel Draw for graphics we sometimes need to interact with. Turns out the latest version (X5) exports to SVG quite well. Older versions did too but with some problems.

    • Converting the files with one of the latest Corel Draw program might have been the smarter way to get my content, true 🙂 But then I have no copy around, and as a software developer coding a solution seems my natural approach to this nail 😉 Decyphering bytes is really also fun to a degree, you feel like a archaeologist

  2. Awesome stuff. I’ve really been quite impressed with how Karbon has come along and this would be yet another feather in it’s cap.

    Thanks for hacking on this, I love seeing Karbon pick up cool new features like this, although like Boud, I’d love to see Corel Painter support as well. Hmm…. I wonder where I can get some itching powder… ;P

  3. Can you just explain me why not to join forces and work on libcdr, since it is under a license that you people can use in calligra (lgpl 2+, gpl 2+ and mpl 1.1+), and since there is a ODG generator code under a license that you people can use (lgpl 2+) in libwpd’s git module writerperfect? Anyway, libcdr is always open to collaboration if you decide 😉

    • Heya Fridrich, so you are faster in contacting 🙂
      I only discovered libcdr after I had my initial success, so I stuck with my experimental code for now and did not yet switch the train 🙂
      Also I am also not sure I look forward to go via an intermediate format (SVG) + intermediate streaming, directly creating the target working memory model somehow is more appealing to me when I think of runtime-resources. Then I just discovered today that I still have to go via SVG due to the Karbon sources… sure, thinking about libcdr, that is why I mentioned it 🙂

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.