GSoC project summary - Improve SmartArt import

Grzegorz Araminowicz g.araminowicz at gmail.com
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
Code.

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
<https://gerrit.libreoffice.org/38207>
GSoC: import VML shape adjustments <https://gerrit.libreoffice.org/38427>
tdf#108945 Correctly import default value in VML shape adjustments
<https://gerrit.libreoffice.org/39504>

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
<https://gerrit.libreoffice.org/39269>
SmartArt: layout diagram <https://gerrit.libreoffice.org/39172>
SmartArt: reuse existing diagram shape for root shape
<https://gerrit.libreoffice.org/39410>
SmartArt: shape styling <https://gerrit.libreoffice.org/40210>
SmartArt: more layout work <https://gerrit.libreoffice.org/39926>
SmartArt: add ShapeAtom to store shape template instead of LayoutNode
<https://gerrit.libreoffice.org/39438>
SmartArt: support hideGeom shape attrbute
<https://gerrit.libreoffice.org/40224>
SmartArt: cycle layout algorithm <https://gerrit.libreoffice.org/40314>
SmartArt: text alignment <https://gerrit.libreoffice.org/40317>
SmartArt: first unit test <https://gerrit.libreoffice.org/40498>
SmartArt: add nested shapes only if they are node's children
<https://gerrit.libreoffice.org/40870>
SmartArt: fix duplicated text <https://gerrit.libreoffice.org/40913>
SmartArt: support cnt function <https://gerrit.libreoffice.org/41108>
SmartArt: simplify conditions, miscellaneous changes
<https://gerrit.libreoffice.org/41239>
SmartArt: basic support for layout constraints
<https://gerrit.libreoffice.org/41273>
SmartArt: shape rotation support <https://gerrit.libreoffice.org/41393>
SmartArt: get rid of tagToVarIdx() and change VarMap to std::map
<https://gerrit.libreoffice.org/41458>
SmartArt: implement dir and maxDepth if node functions
<https://gerrit.libreoffice.org/41452>
SmartArt: correct behaviour of if/else nodes
<https://gerrit.libreoffice.org/41533>
SmartArt: grDir snake algorithm parameter
<https://gerrit.libreoffice.org/41516>

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: <https://lists.freedesktop.org/archives/libreoffice/attachments/20170829/53dd7616/attachment.html>


More information about the LibreOffice mailing list