Multiple features were added in this week to the tool as scheduled, I have spent most of the development time to understand some internal architectures of Audacity.
For instance, how
RegisteredFactory provides ways of binding data to a host class to avoid circular dependencies, and how
UndoManger utilize multiple layers of polymorphism to achieve complete state backup.
The native color scheme
Referencing to the original selection tool, it blends nicely into the spectrogram view without losing transparency, so the brush tool will also be modified accordingly, providing similar user experience. (Link to commit)
The eraser tool
The basic eraser tool has been added, user will now be able to erase the selected area. This feature is currently triggered by pressing
Ctrl while dragging, the detailed designs will be further discussed with the team’s designers. (Link to commit)
The apply effect button
A prototype button has been added to apply different effects onto the selected area in the future (currently it simply removes the selection), it will most likely to be replaced with non-modal dialogue, with optional features UI like brush size slider. (Link to commit)
The redo/undo feature
In the project manager, the undo manger will trigger virtual
CopyTo() that are inherited by different derived classes, I have added another method right after it reaches
WaveTrackView, since different data from sub-views should also be copied into the state history. Taking the whole
Track as an argument into single sub-view seems to be counter-intuitive since we are expecting one-to-one sub-view copying. (Link to commit)