
MCU-Renderer est une bibliothèque graphique en chant C pour les MCU, axée sur le rendu du texte anti-cliquetis et anti-aliasé avec une faible utilisation des ressources sur les affichages LCD monochrome et couleur.
Pour commencer à utiliser le rendu MCU, incluez le fichier d'en-tête approprié.
Afin d'initialiser la bibliothèque, appelez la fonction mr_xxx_init() correspondante. L'affichage est initialement désactivé, vous permettant de dessiner avant la première mise à jour de l'écran. Pour allumer l'affichage, appelez mr_xxx_set_display() . Sur les écrans LCD couleur, vous devez également désactiver le mode de sommeil avec mr_xxx_set_sleep() .
Ensuite, configurez les polices. Vous pouvez utiliser les polices disponibles dans le dossier des polices ou préparer la vôtre, comme l'explique la section Préparation des polices.
Après cela, configurez une disposition d'écran composée de rectangles non chevauchants. Cela évitera tout scintillement lors de la mise à jour de l'écran.
Pour dessiner un rectangle rempli, appelez mr_set_fill_color() pour définir la couleur de remplissage et mr_draw_rectangle() pour le dessin réel. Vous pouvez convertir les couleurs Web (par exemple # FF2020) en couleurs de rendu MCU avec la macro mr_get_color .
Pour dessiner un bitmap dans un framebuffer uint8_t fourni par l'utilisateur, appelez mr_set_stroke_color() pour définir la couleur de premier plan, mr_set_fill_color() pour définir la couleur d'arrière-plan et mr_draw_bitmap() pour dessiner le bitmap.
Pour dessiner une image dans un FrameBuffer RGB565 fourni par l'utilisateur, appelez mr_draw_image() .
Pour dessiner un rectangle de texte, appelez mr_set_font() pour définir la police, mr_set_fill_color() pour définir la couleur d'arrière-plan, mr_set_stroke_color() pour définir la couleur du texte, et mr_draw_text() , mr_draw_text_utf8() mr_draw_text_utf16() respectivement. Le paramètre offset spécifie le coin supérieur gauche du texte dans le rectangle de dessin: Pour centrer le texte horizontalement, utilisez mr_get_text_width() , mr_get_text_utf8_width() et mr_get_text_utf16_width() fonctions; Pour centrer le texte verticalement, obtenez les métriques de la police actuelle avec mr_get_cap_height() (hauteur de majuscules a), mr_get_ascent() (haut de ligne vers la ligne de base), mr_get_descent() (ligne de base en bas de ligne) et mr_get_line_height() (hauteur de ligne). Assurez-vous de définir la police avant de récupérer des mesures.
Les limites des rectangles ne peuvent pas dépasser la taille de l'affichage. Le paramètre offset des fonctions de dessin de texte n'est pas limité.
Les écrans monochromes et SDL nécessitent un rafraîchissement d'écran. Pour rafraîchir l'écran, appelez mr_xxx_refresh_screen() après avoir terminé le dessin.
Voir le dossier Exemples.
(Caractères ASCII 0x20-0x7e)
(tailles en octets)
| Fonte | Roboto 12 px | Roboto 24 px | Roboto 48 PX | Roboto 72 px |
|---|---|---|---|---|
| Adafruit_gfx / tft_espi (1 bpp) | 3832 | 14589 | 56677 | 129389 |
| U8G2 (1 BPP) | 1508 | 3039 | 6632 | N / A |
| MCU-rendu 1 BPP | 1473 | 2891 | 5902 | 9511 |
| MCU-rendu 2 BPP | 2052 | 4162 | 8743 | 13969 |
| MCU-rendu 3 BPP | 2695 | 5677 | 12128 | 18701 |
| MCU-rendu 4 BPP | 3328 | 7329 | 15533 | 23676 |
| MCUFONT (4 BPP) | 3125 | 6296 | 12969 | 20045 |
| Tft_espi (vlw) | 7642 | 19387 | 65833 | 143333 |
Afin de convertir vos polices au format MCU-rendu, utilisez l'outil fontconv (disponible sous forme binaire sous les versions), qui vous permet de convertir les polices .bdf et .pcf Bitmap ainsi que les polices vectorielles .ttf , .ttc , .otf , .otc et .woff .
Dans la typographie numérique, 72 points sont généralement définis comme 96 pixels. Pour raspérer une police vectorielle à une taille de pixel donnée, convertissez la taille des pixels en une taille ponctuelle en multipliant par le facteur 4/3. Toutes les polices ne suivent pas cette règle, vous devrez donc peut-être modifier ce facteur.
fontconv calcule la hauteur du capuchon (la hauteur de la lettre majuscule a) comme la différence entre la hauteur de montée (haut de ligne à la ligne de base) et la hauteur de descente (ligne de base au bas de la ligne). Sur certaines polices, ce calcul est inexact, vous pouvez donc remplacer la hauteur du capuchon pour obtenir le résultat correct. Vous pouvez également remplacer la hauteur de montée et la hauteur de descente.