Files
ps4_buttons/Core/Src/fonts.c

56 lines
1.1 KiB
C

/*
* 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, WHITE);
while(*text)
{
uint8_t actual_char = *text++;
if (actual_char < ' ' || actual_char > 126)
{
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, BLACK);
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;
}
x += font->charInfo[char_nr].widthBits + font->interspacePixels;
}
return x;
}