Skip navigation

Monthly Archives: March 2009

We’ve been selected to be part of this year’s awesome GSoC, so all of you OOo-affine students out there, start thinking about the cool projects you want to do during summer!

2009-summer-of-code-logo-final-r3-01

Should you be new to OOo and not having any immediate idea what to do, fear not, here’s a list of ideas to pick from (just be aware that many of those are initial vectors to put you into the right direction, and fleshing them out would be part of your task; we’ll of course help with that).

Similarly, if you’re an established OOo hacker, willing to mentor and/or miss your favourite idea, help the project and add your name and idea to the proposals page. GSoC is a wonderful opportunity to get people involved with OOo, don’t miss out to get smart students working on your code!

Student application period starts on March 23rd, we’re looking forward to your applications!

I have been working a bit on improving the ooxml import for Impress recently, focusing on the SmartArt stuff from PowerPoint 2k7. A really nifty feature indeed. Cunningly enough, MS does not store any fallback shapes for SmartArt, thus leaving me with the sole option of implementing a SmartArt layout engine myself. Here’s what it can do already:

quickdiagram0a

And this is how the original thing looks like:

ppt03

But there’s more to it. Since I needed a SmartArt layouting engine anyways, it was quite natural to (re)use that for actually editing and relayouting the content in Impress! For that to work, of course either the ooxml input fragments or some derived data structure have to be available at the shape; again the most straight-forward way was to use ooxml directly (in the form of an in-memory representation of the xml tree, aka DOM). Having a group shape with four extra custom attributes then gives something like this:

smartart01

So “editing” this shape means tweaking the data xml fragment, i.e. adding or removing text or changing attributes, and then re-triggering the import/layouting engine. I just love it when code reuse is that easy. 😉

What I have now is something working end-to-end, with basic import, basic layouting and basic editing working. What comes next is improving all the details, i.e. supporting all layout types, editing all aspects, not only text etc. Stay tuned!