
O MCU-Renderper é uma biblioteca gráfica em língua C para MCUS, focada em renderizar texto anti-alias e não-flutuador com baixo uso de recursos nos monitores monocromáticos e coloridos LCD.
Para começar a usar o MCU Renderer, inclua o arquivo de cabeçalho apropriado.
Para inicializar a biblioteca, ligue para a função mr_xxx_init() correspondente. A tela está inicialmente desligada, permitindo desenhar antes da primeira atualização da tela. Para ativar a tela, ligue para mr_xxx_set_display() . Nas telas de LCD coloridas, você também precisa desativar o modo de suspensão com mr_xxx_set_sleep() .
Em seguida, configure as fontes. Você pode usar as fontes disponíveis na pasta Fontes ou preparar o seu próprio, como explica a seção de fontes preparando.
Depois disso, configure um layout de tela que consiste em retângulos não sobrepostos. Isso evitará qualquer tremores ao atualizar a tela.
Para desenhar um retângulo preenchido, ligue para mr_set_fill_color() para definir a cor de preenchimento e mr_draw_rectangle() para o desenho real. Você pode converter as cores da web (por exemplo, #FF2020) em cores do renderizador do MCU com a macro mr_get_color .
Para desenhar um bitmap em um uint8_t FrameBuffer fornecido pelo usuário, ligue para mr_set_stroke_color() para definir a cor do primeiro plano, mr_set_fill_color() para definir a cor do plano de fundo e mr_draw_bitmap() para desenhar o bitmap.
Para desenhar uma imagem em um quadro RGB565 fornecido pelo usuário, ligue para mr_draw_image() .
Para desenhar um retângulo de texto, ligue para mr_set_font() para definir a fonte, mr_set_fill_color() para definir a cor do fundo, mr_set_stroke_color() para definir a cor do texto, e mr_draw_text() , mr_draw_text_utf8() e mr_draw_text_utf16() MR_DRAW_TEXT_UTF8 () e MR_DRAW_TEXT_TF16 cordas, respectivamente. O parâmetro offset especifica o canto superior esquerdo do texto dentro do retângulo de desenho: para o texto central horizontalmente, use o mr_get_text_width() , mr_get_text_utf8_width() e mr_get_text_utf16_width() funções; Para centralizar o texto verticalmente, obtenha as métricas da fonte atual com mr_get_cap_height() (altura da maçaneta A), mr_get_ascent() (parte superior da linha de linha de base), mr_get_descent() (linha de base para baixo da linha) e mr_get_line_height() (altura da linha). Certifique -se de definir a fonte antes de recuperar qualquer métrica.
Os limites do retângulo podem não exceder o tamanho da tela. O parâmetro offset das funções de desenho de texto não é limitado.
Displays monocromáticos e SDL requerem uma atualização de tela. Para atualizar a tela, ligue para mr_xxx_refresh_screen() depois de terminar o desenho.
Veja a pasta Exemplos.
(Caracteres ASCII 0x20-0x7E)
(tamanhos em bytes)
| 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 / D |
| MCU-RENETOR 1 BPP | 1473 | 2891 | 5902 | 9511 |
| MCU-RENETOR 2 BPP | 2052 | 4162 | 8743 | 13969 |
| MCU-RENETOR 3 BPP | 2695 | 5677 | 12128 | 18701 |
| MCU RENETOR 4 BPP | 3328 | 7329 | 15533 | 23676 |
| McUfont (4 bpp) | 3125 | 6296 | 12969 | 20045 |
| TFT_ESPI (VLW) | 7642 | 19387 | 65833 | 143333 |
Para converter suas fontes para o formato do renderizador do MCU, use a ferramenta fontconv (disponível em forma binária em lançamentos), que permite converter fontes .bdf e .pcf bitmap, bem como .ttf , .ttc , .otf , .otc e .woff Vector Fonts.
Na tipografia digital, 72 pontos são geralmente definidos como 96 pixels. Para rasterizar uma fonte vetorial em um determinado tamanho de pixel, converta o tamanho do pixel em um tamanho de ponto multiplicando pelo fator 4/3. Nem todas as fontes seguem esta regra, então você pode precisar ajustar esse fator.
fontconv calcula a altura da tampa (a altura da letra da mancha a) como a diferença entre a altura da subida (parte superior da linha de base) e a altura de descida (linha de base na parte inferior da linha). Em algumas fontes, esse cálculo é impreciso, para que você possa substituir a altura da tampa para obter o resultado correto. Você também pode substituir a altura da subida e a altura de descida.