lanv/README.adoc

2.7 KiB

Note
WORK IN PROGRESS
This is Work In Progress for adapting flowcanvas plus gladish augmentations into new C library along with adding new features, like port grouping. Beware that in this WIP version of the text, present tense may be used for not yet implemented things.

LANV is project to provide set of libraries useful when creating visual representation of graphs on raster display.

Canvas drawing of modular DSP/Audio/MIDI flow and finite-state machine graphs like:

API with domain specific semantics at level similar to flowcanvas, Ganv and HoustonPatchbay.

Operates on top of lower level canvas library like GooCanvas, gnomecanvas or Cairo.

Features:

  • Minimal dependencies, plain C implementation. In particular, C++ runtime library is to be pulled as dependency only if C++ bindings are actually used.

  • flowcanvas/gladish-canvas/ganv/HoustonPatchbay-like domain level API

  • Libraries that target diverse set of raster UI environments:

    • X11, especially via libxcb

    • libnsfb

    • linux framebuffer

    • sixel over tty

    • Hardware accelerated 2D rendering via:

      1. OpenVG

    • Hardware accelerated 3D rendering via:

      1. OpenGL and GLX

      2. OpenGL ES and EGL

    • Widgets for diverse set of GUI toolkits:

      1. GNOME2/GTK2 (liblanv-gtk2)

      2. GNOME3/GTK3 (liblanv-gtk3)

      3. GNOME40/GTK4

      4. KDE/Qt

  • Usable over range of lower level canvas layers, e.g.:

    • GooCanvas (liblacanvas-goo-gtk3)

    • GnomeCanvas2, flowcanvas style (liblacanvas-gnome2)

    • Cairo, ganv style, but without GTK requirement. (liblacanvas-cairo)

  • Port grouping (along with group-connect and group-disconnect)

  • Native Language Support (via gettext)

  • Colour theme support, including system-wide theme and custom themes.

  • Runtime customizable canvas background (liblanv-kilim) via wallpaper-like raster or vector images in scaled or pattern mode.

  • Photo-realistic renderings (liblanv-photo):

    • rack-mountable (liblanv-rack)

    • stage-floor (liblanv-floor)

  • Language bindings:

    • Python

    • Lua

    • C#

    • C++

    • Rust

    • Vala