Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
Référence du fichier ui_widgets.c

Widgets UI Brick — sélection de widget + rendu (icônes 20×14, switch, knob). Plus de détails...

#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>
#include "ui_widgets.h"
#include "ui_icons.h"
#include "drv_display.h"
#include "ui_knob.h"

Fonctions

bool uiw_draw_icon_by_text (const char *text, int x, int y, int w, int h)
 Dessine une icône (20×14) centrée, choisie via label texte canonique.
 
ui_widget_type_t uiw_pick_from_labels (ui_param_kind_t kind, const char *label, const char *const *labels, int nlabels)
 Détermine la famille de widget à utiliser en fonction du kind et des labels.
 
ui_widget_type_t uiw_pick_from_kind_label_only (ui_param_kind_t kind, const char *label)
 Fallback de sélection quand on ne dispose que du kind et d’un label simple.
 
void uiw_draw_switch (int x, int y, int w, int h, bool on)
 Dessine un interrupteur booléen uniquement via icône (ON/OFF). Pas de fallback texte.
 
void uiw_draw_knob_ex (int x, int y, int w, int h, int value, int min, int max, const uiw_knob_style_t *style)
 Dessine un knob continu via le moteur ui_knob.c (LUT 300°), sans débordement.
 
void uiw_draw_knob (int x, int y, int w, int h, int value, int min, int max)
 Dessine un knob circulaire pour une valeur continue.
 

Variables

const uiw_knob_style_t UIW_KNOB_STYLE_DEFAULT
 

Description détaillée

Widgets UI Brick — sélection de widget + rendu (icônes 20×14, switch, knob).

Ce module implémente :

  • la sélection du type de widget à partir du kind/labels (uiw_pick_from_labels, uiw_pick_from_kind_label_only),
  • les routines de dessin utilisées par le renderer : uiw_draw_switch, uiw_draw_knob, uiw_draw_knob_ex,
  • un utilitaire d’icône par label texte (uiw_draw_icon_by_text).

Principes :

  • Aucune dépendance vers ui_controller/cart_* (rendu uniquement).
  • Accès framebuffer via drv_display_* (icônes 20×14 rendues via ui_icon_draw()).

Hiérarchie : ui_renderer → ui_widgets → ui_icons → drv_display

Documentation des fonctions

◆ uiw_draw_icon_by_text()

bool uiw_draw_icon_by_text ( const char *  text,
int  x,
int  y,
int  w,
int  h 
)

Dessine une icône (20×14) centrée, choisie via label texte canonique.

Dessine une icône (20×14) centrée dans le cadre, choisie par label texte.

Valeurs retournées
trueicône dessinée, false sinon (aucun dessin).

◆ uiw_draw_knob()

void uiw_draw_knob ( int  x,
int  y,
int  w,
int  h,
int  value,
int  min,
int  max 
)

Dessine un knob circulaire pour une valeur continue.

Paramètres
x,yPosition du coin supérieur gauche du cadre.
w,hDimensions du cadre.
valueValeur actuelle.
minBorne minimale.
maxBorne maximale (si max <= min, une borne sûre sera utilisée).

◆ uiw_draw_knob_ex()

void uiw_draw_knob_ex ( int  x,
int  y,
int  w,
int  h,
int  value,
int  min,
int  max,
const uiw_knob_style_t style 
)

Dessine un knob continu via le moteur ui_knob.c (LUT 300°), sans débordement.

Variante avancée avec style configurable (taille/épaisseur).

◆ uiw_draw_switch()

void uiw_draw_switch ( int  x,
int  y,
int  w,
int  h,
bool  on 
)

Dessine un interrupteur booléen uniquement via icône (ON/OFF). Pas de fallback texte.

Dessine un interrupteur booléen (ON/OFF) dans un cadre.

Note
Requiert que UI_ICON_ON / UI_ICON_OFF soient définies (sinon rien).

◆ uiw_pick_from_kind_label_only()

ui_widget_type_t uiw_pick_from_kind_label_only ( ui_param_kind_t  kind,
const char *  label 
)

Fallback de sélection quand on ne dispose que du kind et d’un label simple.

Paramètres
kindType logique du paramètre (bool/enum/continu).
labelLabel du paramètre (peut être NULL).
Renvoie
ui_widget_type_t — famille de widget (ou UIW_NONE).

◆ uiw_pick_from_labels()

ui_widget_type_t uiw_pick_from_labels ( ui_param_kind_t  kind,
const char *  label,
const char *const *  labels,
int  nlabels 
)

Détermine la famille de widget à utiliser en fonction du kind et des labels.

Paramètres
kindType logique du paramètre (bool/enum/continu), cf. ui_param_kind_t.
labelLabel principal du paramètre (peut aider à détecter “Wave”, “Filter”…).
labelsTableau des labels d’énum (peut être NULL).
nlabelsTaille du tableau labels.
Renvoie
ui_widget_type_t — famille de widget à utiliser (ou UIW_NONE si indéterminé).
Note
Fonction pure, non bloquante : aucune I/O ni dépendance au contrôleur.

Documentation des variables

◆ UIW_KNOB_STYLE_DEFAULT

const uiw_knob_style_t UIW_KNOB_STYLE_DEFAULT
Valeur initiale :
= {
.padding = 0,
.ring_thickness = 0,
.fill_steps = 0
}

Style par défaut (défini dans ui_widgets.c).