GSoC project summary - Improve SmartArt import

Grzegorz Araminowicz g.araminowicz at
Tue Aug 29 14:14:46 UTC 2017

Hello everyone!

I'd like to summarize what I did during three months of Google Summer of

I started the project as improving VML import. As this filter is quite
mature, it was mostly fixing bugs:
tdf#76446 GSoC: incorrect rotation of VML shapes
GSoC: import VML shape adjustments <>
tdf#108945 Correctly import default value in VML shape adjustments

After week or two we decided with Jan Holesovsky to change aim to SmartArt
import. I had already a bit of experience with import filters, so I quickly
went for it. There were already good foundations: whole file parsing code,
building of diagram model and some layouting code. I had to extend it,
taking Office 2007 test files one by one and implementing missing features
required to load them correctly.

Here is the list of changes I made:
SmartArt: separate LayoutAtomVisitors from LayoutAtoms
SmartArt: layout diagram <>
SmartArt: reuse existing diagram shape for root shape
SmartArt: shape styling <>
SmartArt: more layout work <>
SmartArt: add ShapeAtom to store shape template instead of LayoutNode
SmartArt: support hideGeom shape attrbute
SmartArt: cycle layout algorithm <>
SmartArt: text alignment <>
SmartArt: first unit test <>
SmartArt: add nested shapes only if they are node's children
SmartArt: fix duplicated text <>
SmartArt: support cnt function <>
SmartArt: simplify conditions, miscellaneous changes
SmartArt: basic support for layout constraints
SmartArt: shape rotation support <>
SmartArt: get rid of tagToVarIdx() and change VarMap to std::map
SmartArt: implement dir and maxDepth if node functions
SmartArt: correct behaviour of if/else nodes
SmartArt: grDir snake algorithm parameter

I am happy with project results. Now LibreOffice is able to load and
correctly render many types of basic diagrams. However, there is still much
to be done to support more complex SmartArts.

If anyone would be interested in contributing in this area, feel free to
contact me for any help.

Best regards,
Grzegorz Araminowicz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the LibreOffice mailing list