<div dir="ltr"><div>Hello everyone!<br></div><div><br></div><div>I'd like to summarize what I did during three months of Google Summer of Code.<br></div><div><br></div><div>I started the project as improving VML import. As this filter is quite mature, it was mostly fixing bugs:<br></div><div><a href="https://gerrit.libreoffice.org/38207">tdf#76446 GSoC: incorrect rotation of VML shapes</a><br><a href="https://gerrit.libreoffice.org/38427">GSoC: import VML shape adjustments</a><br><a href="https://gerrit.libreoffice.org/39504">tdf#108945 Correctly import default value in VML shape adjustments</a></div><div><br></div><div>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.<br></div><div><div><br></div><div>Here is the list of changes I made:<br><a href="https://gerrit.libreoffice.org/39269">SmartArt: separate LayoutAtomVisitors from LayoutAtoms</a><br><a href="https://gerrit.libreoffice.org/39172">SmartArt: layout diagram</a><br><a href="https://gerrit.libreoffice.org/39410">SmartArt: reuse existing diagram shape for root shape</a><br><a href="https://gerrit.libreoffice.org/40210">SmartArt: shape styling</a><br><a href="https://gerrit.libreoffice.org/39926">SmartArt: more layout work</a><br><a href="https://gerrit.libreoffice.org/39438">SmartArt: add ShapeAtom to store shape template instead of LayoutNode</a><br><a href="https://gerrit.libreoffice.org/40224">SmartArt: support hideGeom shape attrbute</a><br><a href="https://gerrit.libreoffice.org/40314">SmartArt: cycle layout algorithm</a><br><a href="https://gerrit.libreoffice.org/40317">SmartArt: text alignment</a><br><a href="https://gerrit.libreoffice.org/40498">SmartArt: first unit test</a><br><a href="https://gerrit.libreoffice.org/40870">SmartArt: add nested shapes only if they are node's children</a><br><a href="https://gerrit.libreoffice.org/40913">SmartArt: fix duplicated text</a><br><a href="https://gerrit.libreoffice.org/41108">SmartArt: support cnt function</a><br><a href="https://gerrit.libreoffice.org/41239">SmartArt: simplify conditions, miscellaneous changes</a><br><a href="https://gerrit.libreoffice.org/41273">SmartArt: basic support for layout constraints</a><br><a href="https://gerrit.libreoffice.org/41393">SmartArt: shape rotation support</a><br><a href="https://gerrit.libreoffice.org/41458">SmartArt: get rid of tagToVarIdx() and change VarMap to std::map</a><br><a href="https://gerrit.libreoffice.org/41452">SmartArt: implement dir and maxDepth if node functions</a><br><a href="https://gerrit.libreoffice.org/41533">SmartArt: correct behaviour of if/else nodes</a><br><a href="https://gerrit.libreoffice.org/41516">SmartArt: grDir snake algorithm parameter</a><br></div><div><br></div><div>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.<br></div><div><br></div><div>If anyone would be interested in contributing in this area, feel free to contact me for any help.</div><div><br></div><div>Best regards,</div><div>Grzegorz Araminowicz<br></div></div></div>