Skip to content

GUI custom con NanoVG e DPF

Come creare interfacce grafiche personalizzate per i plugin usando NanoVG dentro il framework DPF.

Perché una GUI custom

Le GUI generate automaticamente da DPF sono funzionali ma generiche. Per un plugin di spatializzazione serve una rappresentazione visiva della posizione della sorgente.

NanoVG

DPF integra NanoVG per il rendering 2D. Si scrive codice simile a Canvas HTML5:

void onNanoDisplay() override {
    float cx = getWidth() / 2.0f;
    float cy = getHeight() / 2.0f;

    // cerchio di sfondo
    beginPath();
    circle(cx, cy, 100.0f);
    strokeColor(200, 200, 200);
    stroke();

    // punto sorgente
    float sx = cx + cos(azimuth) * distance * 100.0f;
    float sy = cy + sin(azimuth) * distance * 100.0f;
    beginPath();
    circle(sx, sy, 6.0f);
    fillColor(255, 255, 255);
    fill();
}

Workflow

graph TD
    PD[patch Pd] -->|hvcc| C[codice C]
    C --> DPF[DPF plugin]
    GUI[NanoVG UI class] --> DPF
    DPF --> VST3[.vst3]

Submodule pugl

DPF usa pugl per il windowing. Assicurati di aver clonato con --recursive, altrimenti la GUI non compila.