AVTK

AVTK is a user-interface toolkit. The letters are short for the OpenAV ToolKit. It is focused on custom widgets, and making it really easy to code slick user-interfaces. Totally anti-aliased, and it redraws fast. This is the library OpenAV wish existed when starting to develop user-interfaces, that’s why we develop it! Note that it is currently still in development, and hence is not yet released.

The code is available at Github! AVTK was presented at the Linux Audio Conference in Mainz, 2015. The slides are available here, the paper from the proceedings here, and last but not least, the video recording of the talk itself is here.

Attention to details!

In developing AVTK, OpenAV is very carefully concidering the user-experience of the toolkit. Mouse-scroll wheel has an effect on almost everything, while visual feedback is provided in the most logical and effect yet beautiful graphics. For example, when drawing text in scroll boxes, AVTK anti-aliases per full pixel for better readability.

How does it work?

AVTK depends on one external library: Cairo. Cairo is an amazing vector-graphics drawing library, it draws fast, and draws beautiful. Behind the scenes the PUGL library is handling the window, and passing click, mouse, scroll etc events. Some utility functions are provided, tinydir is used to read file contents, and picojson is used for loading themes. Thanks to the developers of all the above projects, you’ve done awesome work: and that’s why OpenAV chose to base AVTK on your libraries!

How do I use it?

As widget in AVTK is a flexible and lightweight object, it is really easy to create custom widgets. Derive from a class, and override a single function, done! Event handling is equally simple, override the handle function, done! This type of widget interface was inspired by NTK.

Why is AVTK special?

Well, it turns out that embedding user interfaces is a pretty complex and difficult task. Its even harder to make a lightweight toolkit that embeds itself into other toolkits easily. AVTK is designed with embedding from the start. By choosing Cairo, PUGL, tinydir and picojson, there are no dependencies that cause symbol clashes or ABI incompatibilities when embedding an AVTK user-interface in a host.