praca nad ulepszeniem write_to_buffer
This commit is contained in:
68
Core/Src/fonts.c
Normal file
68
Core/Src/fonts.c
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* fonts.c
|
||||
*
|
||||
* Created on: 23 maj 2021
|
||||
* Author: bartool
|
||||
*/
|
||||
|
||||
//#include "main.h"
|
||||
#include "fonts.h"
|
||||
#include "SSD1306_oled.h"
|
||||
|
||||
uint8_t font_print_str(const FONT_INFO * font, uint8_t * text, uint8_t pos_x, uint8_t pos_y)
|
||||
{
|
||||
uint8_t height = font->heightPixels;
|
||||
|
||||
uint8_t x = pos_x;
|
||||
|
||||
uint8_t width = font_string_lenght_px(font, text);
|
||||
|
||||
ssd1306_clear_buffer(width, height, pos_x, pos_y);
|
||||
|
||||
while(*text)
|
||||
{
|
||||
uint8_t actual_char = *text++;
|
||||
if (actual_char < ' ' || actual_char > 126)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// if (actual_char == ' ')
|
||||
// {
|
||||
// x += font->spacePixels + font->interspacePixels;
|
||||
// continue;
|
||||
// }
|
||||
|
||||
uint8_t char_nr = actual_char - font->startChar;
|
||||
const FONT_CHAR_INFO *charinfo = &font->charInfo[char_nr];
|
||||
|
||||
|
||||
ssd1306_write_to_buffer(font->data + charinfo->offset, charinfo->widthBits, height, x, pos_y);
|
||||
|
||||
x += charinfo->widthBits + font->interspacePixels;
|
||||
|
||||
}
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
uint8_t font_string_lenght_px(const FONT_INFO * font, uint8_t * text)
|
||||
{
|
||||
uint8_t x;
|
||||
while(*text)
|
||||
{
|
||||
uint8_t actual_char = *text++;
|
||||
uint8_t char_nr = actual_char - font->startChar;
|
||||
if (actual_char < ' ' || actual_char > 126) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// if (actual_char == ' ') {
|
||||
// x += font->spacePixels + font->interspacePixels;
|
||||
// } else {
|
||||
x += font->charInfo[char_nr].widthBits + font->interspacePixels;
|
||||
// }
|
||||
|
||||
}
|
||||
return x;
|
||||
}
|
||||
Reference in New Issue
Block a user