Features Help Download

Lomse Hacking Guide

7.2. To Do full list

In each chapter I’ve been documenting things that could or should be done. This annex merges all those issues in a single list.

Graphical model

[TODO1]
Class GmoBoxDocument. As it is the root of the hierarchy, its owner ImoObj is the ImoDocument, but it is implicit and method get_creator_imo() will return NULL. Should be changed to return the ImoDocument object. See Class GmoObj.
[TODO2]
Class GmoBoxDocPage. Its parent box is GmoBoxDocument and its parent Imo is ImoDocument, but it is also implicit, so method get_creator_imo() returns NULL. Should be changed to return the ImoDocument object. See Class GmoObj.
[TODO3]
For layouting, boxes should be splitted into two groups: GmoMainBox and GmoSecondaryBox. Main boxes will define independent, isolated content items that do not overlap, and will define the units for layouting. Secondary boxes will define a sub-area totally inside a main box. See Class GmoObj.
[TODO4]
GmoBoxDocPage serves as container for the list of shapes in that page, ordered by layer and creation order. This collection should be splitted and moved to each main box (see [TODO3]), to improve performance when a box is dirty and must be re-layouted or re-rendered. See Layers.

Rendering

[TODO5]
It s necessary to take layers into account for renderization. GmoBoxDocPage maintains a collection with all the shapes in the page. The collection is ordered by layer and creation order. This collection is used for hit testing and selection. But for rendering the graphical model is traversed. This is an error, as the z-ordering decided by the user would not be taken into account at renderization. But as dccument edition is not yet implemented this error has not yet manifested. Need to fix this. See The draw_page method.

Sound subsystem

[TODO6]
I would like to modify Lomse library to add an interface to the JACK audio system (http://jackaudio.org/). I don’t know if this will widen options, perhaps current MIDI interface is enough, but I would like to study the issue when finding time. See Transforming events into sounds: sound API.
[TODO7]
As seen in Default visual effects in Lomse, handling highlight events in your application can be a round trip to, finally, delegate its handling on Lomse. This round trip is very important to ensure that the code for implementing visual highlight is executed in your application thread instead of in Lomse playback thread. To avoid this burden in your application, probably the best solution will be to implement, in Lomse, an event subsystem with its own thread. But there is a lot of work to do and I have to prioritize the necessities.

Score layouting

[TODO8]
In current code, the linking mechanism between shapes is still in place but it is not used. I’ve decided not to remove it until confirming that it is not really necessary for score edition (although I already have strong fillings about it). It should be removed when finally confirmed. See Delayed engraving of auxiliary objects.