Writing interactive applications in C++ can be tedious. This is due to the fact that there is no cross-platform and easy-to-use GUI framework. I have been sticking with a large set of solutions for the last years out of which I was choosing one for each project. While this worked well, it breaks the reusability of the code.

dslab

In this situation, I decided to create a small and lightweight library which allows for writing interactive data science applications in C++ (thereby including support for annotation-based multi-processing and unlimited perforamnce). But the project is better described with a list of key features:

Key Features

  • Cross-Platform GUI (including menu bars, dialog boxes, controls, file open and close, and more)
  • OpenGL, usually hardware-accelerated, with timed animation support
  • MXE cross-compilation to Windows 64 bit and Windows 32 bit easy
  • C++11 support (and even newer C++ extensions as far as GCC supports them)
  • ZoomPan implementation (for SPATIAL applications with a 2D map type interface)
  • autotools support
  • Simple and encapsulated implementation of Data Science Algorithms

These functionalitites are made possible by using wxWidgets for the cross-plattform stuff and carefully implementing an interface for extending the application with varying data science applets defined by a single class.

Samples

  • Cube: Rotating Cube (using the integrated mechanism for timing animations)
  • ortho: Orthographic Zoom System (Left mouse click centers view)
  • ACM SIGSPATIAL GIS Cup’15

Downloads

The project is currently available on github. You are encouraged to try it out and any help is welcome. If you have questions or run into problems, file a bug or feature request there.

GitHub-Mark-32pxhttps://github.com/mwernerds/dslab