I recently dived into the SmartArt support of LibreOffice, which is the component responsible for displaying complex diagrams from PPTX. I focused especially on the case when only document model and the layout constraints are given, not a pre-rendered result.
In this post I would like to present the progress regarding the Accent Process preset, available in PowerPoint — which is used in many documents.
This exposed several shortcomings of the current diagram layout we have in LibreOffice:
Values are not read from constraints (there was a reason for this, they can be complex, given that depending on the context, the unit is points or millimeters and the unit is always implicit).
ZOrder offsets were ignored.
Linear algorithm did not take size from constraints when it came to recursing into child algorithms.
Data point assumed that all text for it is a single "run" (i.e. either all text is bold or nothing, not half of it).
followSibaxis was not implemented for
forEach, so when you have arrow shapes between objects, we created
N - 1ones.
Connectors were created as invisible shapes and had the wrong width/height aspect.
With all these fixed, we reach a much better state for handling accent process.
Results so far
smartart-accent-process.pptx is what I used for testing of this work.
Here is how the baseline, the current and the reference rendering of the test documents look like:
This is not not perfect yet, but it’s clearly a large improvement, all text is now readable from the diagram!
All this is available in master (towards LibreOffice 6.3), so you can grab a daily build and try it out right now. :-)