
MCU-Renderer es una biblioteca de gráficos en idioma C para MCU, centrado en hacer que el texto anti-alias no se vuelva a fusionar con el uso de bajos recursos en pantallas LCD de monocromo y color.
Para comenzar a usar MCU-Renderer, incluya el archivo de encabezado apropiado.
Para inicializar la biblioteca, llame a la función mr_xxx_init() correspondiente. La pantalla se desactiva inicialmente, lo que le permite dibujar antes de la primera actualización de la pantalla. Para activar la pantalla, llame a mr_xxx_set_display() . En las pantallas LCD de color, también debe deshabilitar el modo de suspensión con mr_xxx_set_sleep() .
A continuación, configure las fuentes. Puede usar las fuentes disponibles en la carpeta de fuentes o preparar la suya, como explica la sección de fuentes de preparación.
Después de eso, configure un diseño de pantalla que consiste en rectángulos no superpuestos. Esto evitará cualquier parpadeo al actualizar la pantalla.
Para dibujar un rectángulo relleno, llame a mr_set_fill_color() para establecer el color de relleno y mr_draw_rectangle() para el dibujo real. Puede convertir los colores web (por ejemplo, #FF2020) en colores MCU-Renderer con la macro mr_get_color .
Para dibujar un mapa de bits en un uint8_t FrameBuffer proporcionado por el usuario, llame a mr_set_stroke_color() para establecer el color de primer plano, mr_set_fill_color() para establecer el color de fondo y mr_draw_bitmap() para dibujar el mapas de bits.
Para dibujar una imagen en un frameBuffer RGB565 proporcionado por el usuario, llame mr_draw_image() .
To draw a text rectangle, call mr_set_font() to set the font, mr_set_fill_color() to set the background color, mr_set_stroke_color() to set the text color, and mr_draw_text() , mr_draw_text_utf8() and mr_draw_text_utf16() to render C-strings, UTF-8 strings and UTF-16 cadenas, respectivamente. El parámetro offset especifica la esquina superior izquierda del texto dentro del rectángulo de dibujo: para centrar el texto horizontalmente, use las funciones mr_get_text_width() , mr_get_text_utf8_width() y mr_get_text_utf16_width() ; Para centrar el texto verticalmente, obtenga las métricas de la fuente actual con mr_get_cap_height() (altura de la mayúscula a), mr_get_ascent() (arriba de la línea a la línea de base), mr_get_descent() (línea de base hasta la parte inferior de la línea) y mr_get_line_height() (altura de la línea). Asegúrese de configurar la fuente antes de recuperar cualquier métrica.
Los límites del rectángulo no pueden exceder el tamaño de la pantalla. El parámetro offset de las funciones de dibujo de texto no está limitado.
Las pantallas monocromáticas y SDL requieren una actualización de pantalla. Para actualizar la pantalla, llame a mr_xxx_refresh_screen() después de que haya terminado de dibujar.
Vea la carpeta de ejemplos.
(Caracteres ASCII 0x20-0x7e)
(tamaños en bytes)
| Fuente | 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-Renderer 1 BPP | 1473 | 2891 | 5902 | 9511 |
| MCU-Renderer 2 bpp | 2052 | 4162 | 8743 | 13969 |
| MCU-Renderer 3 BPP | 2695 | 5677 | 12128 | 18701 |
| MCU-Renderer 4 BPP | 3328 | 7329 | 15533 | 23676 |
| McUfont (4 bpp) | 3125 | 6296 | 12969 | 20045 |
| Tft_espi (VLW) | 7642 | 19387 | 65833 | 143333 |
Para convertir sus fuentes en el formato MCU-Renderer, use la herramienta fontconv (disponible en forma binaria en versiones), que le permite convertir las fuentes de mapa de bits .bdf y .pcf , así como .ttf , .ttc , .otf , .otc y .woff
En la tipografía digital, 72 puntos generalmente se definen como 96 píxeles. Para rasterizar una fuente vectorial a un tamaño de píxel dado, convierta el tamaño del píxel en un tamaño de punto multiplicando por el factor 4/3. No todas las fuentes siguen esta regla, por lo que es posible que deba ajustar este factor.
fontconv calcula la altura de la tapa (la altura de la letra a mayúscula A) como la diferencia entre la altura de ascenso (arriba a la línea de base) y la altura del descenso (línea de base a la parte inferior de la línea). En algunas fuentes, este cálculo es inexacto, por lo que puede anular la altura de la tapa para lograr el resultado correcto. También puede anular la altura de ascenso y la altura de descenso.