
MCU-Renderer-это графическая библиотека C-языка для MCU, ориентированная на то, чтобы отображать не сжимающий, анти-ализированный текст с низким использованием ресурсов как на монохромных, так и на цветных ЖК-дисплеях.
Чтобы начать использование MCU-Renderer, включите соответствующий файл заголовка.
Чтобы инициализировать библиотеку, вызовите соответствующую функцию mr_xxx_init() . Дисплей изначально выключен, что позволяет вам нарисовать перед обновлением первого экрана. Чтобы включить дисплей, позвоните mr_xxx_set_display() . На цветных ЖК -экранах вам также необходимо отключить режим сна с mr_xxx_set_sleep() .
Затем настройте шрифты. Вы можете использовать шрифты, доступные в папке шрифтов, или подготовить свои собственные, как объясняет раздел «Подготовленные шрифты».
После этого установите макет экрана, состоящий из непересекающихся прямоугольников. Это будет избежать любых мерцания при обновлении экрана.
Чтобы нарисовать заполненный прямоугольник, вызовите mr_set_fill_color() чтобы установить цвет заполнения и mr_draw_rectangle() для фактического чертежа. Вы можете преобразовать веб-цвета (например, FF2020) в цвета MCU-Renderer с макросом mr_get_color .
Чтобы нарисовать растровую карту в предоставленном пользователе uint8_t Framebuffer, вызовите mr_set_stroke_color() , чтобы установить цвет переднего плана, mr_set_fill_color() , чтобы установить цвет фона и mr_draw_bitmap() чтобы нарисовать растровый карту.
Чтобы нарисовать изображение в предоставленном пользователе RGB565 FrameBuffer, позвоните mr_draw_image() .
Чтобы нарисовать текстовый прямоугольник, позвоните mr_set_font() , чтобы установить шрифт, mr_set_fill_color() , чтобы установить цвет фона, mr_set_stroke_color() , чтобы установить цвет текста, и mr_draw_text() , mr_draw_text_utf8() и mr_draw_text_utf16() TO Render C-strings, UTF-8 и, utf-8, и, utf-8, и, utf-8, и, utf-8, и utf-16. Параметр offset указывает верхний левый угол текста в прямоугольнике чертежа: для центрального текста горизонтально используйте функции mr_get_text_width() , mr_get_text_utf8_width() и mr_get_text_utf16_width() ; Для центрального текста вертикально получите текущие метрики шрифта с mr_get_cap_height() (высота прописного A), mr_get_ascent() (верхняя часть линии к базовой линии), mr_get_descent() (базовая линия до линии) и mr_get_line_height() (высота линии). Убедитесь, что вы установили шрифт перед получением каких -либо метрик.
Границы прямоугольника не могут превышать размер дисплея. Параметр offset функций текстового чертежа не ограничен.
Монохромные дисплеи и SDL требуют обновления экрана. Для обновления экрана вызовите mr_xxx_refresh_screen() после того, как вы закончите рисунок.
Смотрите папку примеров.
(Символы ASCII 0x20-0x7e)
(размеры в байтах)
| Шрифт | Робото 12 пк | Робото 24 пк | Робото 48 пк | Робото 72 пк |
|---|---|---|---|---|
| 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 |
Чтобы преобразовать .ttc шрифты в формат MCU-Renderer, используйте инструмент fontconv (доступный в двоичной форме в разделе .ttf Выпуски)», который позволяет преобразовать обороты .bdf и .pcf Bitmap .otf так .otc .woff шрифты.
В цифровой типографике 72 балла обычно определяются как 96 пикселей. Для растеризации векторного шрифта в заданный размер пикселя преобразуйте размер пикселя в размер точки, умножив на коэффициент 4/3. Не все шрифты следуют этому правилу, поэтому вам может потребоваться настроить этот фактор.
fontconv вычисляет высоту крышки (высота верхней буквы a) как разница между высотой подъема (верхняя часть линии к исходной линии) и высотой спуска (базовая линия к нижней части линии). На некоторых шрифтах этот расчет неточен, поэтому вы можете переопределить высоту крышки, чтобы достичь правильного результата. Вы также можете переопределить высоту подъема и высоту спуска.