Problems with OOXML import/export of SmartArt

Hi Regina,

yes, there is a lot to-do. That is what I am communicating all the time, e.g. see https://forum.collaboraonline.com/t/ttt-today-by-armin-le-grand-smartart-demo-current-state-of-affairs/4545. We are at improving SmartArt in general - we are not at the beginning, but far from being done, too.

As I explained in that TTT and also in my last COOL-Days talk there are three big tasks to get to a better, working SmartArt implementation:

(a) the Model part
(b) the UI part
(c) the ReLayout/Algorithm part

Especially part (a) and (c) are independent, so I what I have up to now concentrated on is (a): It is needed in any case. Itβ€˜s about ooxml/odf exchange/roundtrips/internal model representation, including embedding to Group, SubSelection, attribute changes, automatic handling of orig DomTrees, re-creation of data/drawing.xml, triggring of add/remove/relayout/ungroup, needed slots, etc, etc.
This makes good progress, not yet complete, but getting close. We still need to discuss ODF FileFormat, and ooxml acceptance by re-loading to mso needs to be improved.

There is also some stuff for (b), but not yet too much. Visualisation as SmartArt by using a frame as feedback, possibilities for triggering that small old dialog (which will not be there at the end), SubSelection & traveling, AttributeChanges, TextChanges, DirectTextChange, etc. Of course much nicer/better stuff will be possible, including gallery, etc, etc.

I did not yet touch (c) which will also be a lot of work, esp. because as typically not documented by inventor how to execute that. If that would be documented it would never have been necessary to add drawing.xml at all to ooxml after ca. two years. I cannot estimate too much about it, but it will be mainly systematically find out how to execute that algorithm (reverse-engineer unfortunately). I always warned that that part will be hard, but the person originally involved doing it ensured me that it is doable (and he will eventually do that or try - we will see). So I am confident that we will do progress there.

Of course any help especially with (c) is highly appreciated - if you can dig into it and figure out basic functionalities that would be phantasitc! I plan to get (a) complete and then drive (c) forward as good as I can. Until now there are no changes to (c), it is exactly in the form it was when I first looked at it.

So for that text stuff and sizes: I know there is some calculation already on place now (look for it in oox part). The basic problem is that we will not get away from oox::object usage which originates from ooxml import, but is used in the re-layout: the oox::object is like a bit-bucket, all data from ooxml import is thrown at it and then in a huge method a XShape is created from that. Since SmartArt layout is close to ooxml stuff that was used for re-layout, too: all data from re-layout is collected there and XShape created. The valuable part is that creation, grown over years and hard to isolate, makes no sende to try to create XSapes directly. I currently do not yet know how Text-size stuff will and needs ti be handled, so cannot really answer that, but there will be XSapes only at the very end of the re-layout - for now.

All in all: This is work in progress, in no way complete. As I said in my COOL-Days talk (pls look at the infos on the short shown slides) i would guess SmartArt is done somwehere between 1/3rd to 2/3rds,maybe 50%.

HTH!

1 Like