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
Context
- GSoC project summary - Improve SmartArt import · Grzegorz Araminowicz
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.