mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-25 20:26:41 +00:00
Fix ZiFonts
This commit is contained in:
parent
dd7699f340
commit
88ab7b9bfb
@ -81,8 +81,8 @@ static inline bool openFont(File & file, const char * filename)
|
|||||||
|
|
||||||
file = SPIFFS.open(filename, "r");
|
file = SPIFFS.open(filename, "r");
|
||||||
if(!file) {
|
if(!file) {
|
||||||
Log.error(TAG_FONT,F("Opening font: %s"), filename);
|
Log.error(TAG_FONT, F("Opening font: %s"), filename);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
@ -93,7 +93,7 @@ static inline void initCharacterFrame(size_t size)
|
|||||||
if(charBitmap_p) lv_mem_free(charBitmap_p);
|
if(charBitmap_p) lv_mem_free(charBitmap_p);
|
||||||
charBitmap_p = (uint8_t *)lv_mem_alloc(size);
|
charBitmap_p = (uint8_t *)lv_mem_alloc(size);
|
||||||
}
|
}
|
||||||
memset(charBitmap_p, 0, size); // init the bitmap to white
|
_lv_memset_00(charBitmap_p, size); // init the bitmap to white
|
||||||
}
|
}
|
||||||
|
|
||||||
int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size)
|
int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size)
|
||||||
@ -103,14 +103,14 @@ int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size
|
|||||||
if(!*font) {
|
if(!*font) {
|
||||||
*font = (lv_font_t *)lv_mem_alloc(sizeof(lv_font_t));
|
*font = (lv_font_t *)lv_mem_alloc(sizeof(lv_font_t));
|
||||||
LV_ASSERT_MEM(*font);
|
LV_ASSERT_MEM(*font);
|
||||||
_lv_memset(*font, 0x00, sizeof(lv_font_t)); // lv_mem_alloc might be dirty
|
_lv_memset_00(*font, sizeof(lv_font_t)); // lv_mem_alloc might be dirty
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_font_fmt_zifont_dsc_t * dsc;
|
lv_font_fmt_zifont_dsc_t * dsc;
|
||||||
if(!(*font)->dsc) {
|
if(!(*font)->dsc) {
|
||||||
dsc = (lv_font_fmt_zifont_dsc_t *)lv_mem_alloc(sizeof(lv_font_fmt_zifont_dsc_t));
|
dsc = (lv_font_fmt_zifont_dsc_t *)lv_mem_alloc(sizeof(lv_font_fmt_zifont_dsc_t));
|
||||||
LV_ASSERT_MEM(dsc);
|
LV_ASSERT_MEM(dsc);
|
||||||
_lv_memset(dsc, 0x00, sizeof(lv_font_fmt_zifont_dsc_t)); // lv_mem_alloc might be dirty
|
_lv_memset_00(dsc, sizeof(lv_font_fmt_zifont_dsc_t)); // lv_mem_alloc might be dirty
|
||||||
} else {
|
} else {
|
||||||
dsc = (lv_font_fmt_zifont_dsc_t *)(*font)->dsc;
|
dsc = (lv_font_fmt_zifont_dsc_t *)(*font)->dsc;
|
||||||
}
|
}
|
||||||
@ -119,7 +119,7 @@ int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size
|
|||||||
|
|
||||||
/* Initialize Last Glyph DSC */
|
/* Initialize Last Glyph DSC */
|
||||||
dsc->last_glyph_dsc = (lv_zifont_char_t *)lv_mem_alloc(sizeof(lv_zifont_char_t));
|
dsc->last_glyph_dsc = (lv_zifont_char_t *)lv_mem_alloc(sizeof(lv_zifont_char_t));
|
||||||
memset(dsc->last_glyph_dsc, 0x00, sizeof(lv_zifont_char_t)); // lv_mem_alloc might be dirty
|
_lv_memset_00(dsc->last_glyph_dsc, sizeof(lv_zifont_char_t)); // lv_mem_alloc might be dirty
|
||||||
|
|
||||||
if(dsc->last_glyph_dsc == NULL) return ZIFONT_ERROR_OUT_OF_MEMORY;
|
if(dsc->last_glyph_dsc == NULL) return ZIFONT_ERROR_OUT_OF_MEMORY;
|
||||||
dsc->last_glyph_dsc->width = 0;
|
dsc->last_glyph_dsc->width = 0;
|
||||||
@ -135,14 +135,14 @@ int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size
|
|||||||
|
|
||||||
/* Check that we read the correct size */
|
/* Check that we read the correct size */
|
||||||
if(readSize != sizeof(zi_font_header_t)) {
|
if(readSize != sizeof(zi_font_header_t)) {
|
||||||
Log.error(TAG_FONT,F("Error reading ziFont Header"));
|
Log.error(TAG_FONT, F("Error reading ziFont Header"));
|
||||||
file.close();
|
file.close();
|
||||||
return ZIFONT_ERROR_READING_DATA;
|
return ZIFONT_ERROR_READING_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check ziFile Header Format */
|
/* Check ziFile Header Format */
|
||||||
if(header.Password != 4 || header.Version != 5) {
|
if(header.Password != 4 || header.Version != 5) {
|
||||||
Log.error(TAG_FONT,F("Unknown font file format"));
|
Log.error(TAG_FONT, F("Unknown font file format"));
|
||||||
file.close();
|
file.close();
|
||||||
return ZIFONT_ERROR_UNKNOWN_HEADER;
|
return ZIFONT_ERROR_UNKNOWN_HEADER;
|
||||||
}
|
}
|
||||||
@ -158,8 +158,7 @@ int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size
|
|||||||
if(!dsc->ascii_glyph_dsc) {
|
if(!dsc->ascii_glyph_dsc) {
|
||||||
dsc->ascii_glyph_dsc = (lv_zifont_char_t *)lv_mem_alloc(sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE);
|
dsc->ascii_glyph_dsc = (lv_zifont_char_t *)lv_mem_alloc(sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE);
|
||||||
LV_ASSERT_MEM(dsc->ascii_glyph_dsc);
|
LV_ASSERT_MEM(dsc->ascii_glyph_dsc);
|
||||||
memset(dsc->ascii_glyph_dsc, 0x00,
|
_lv_memset_00(dsc->ascii_glyph_dsc, sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE); // lv_mem_alloc might be dirty
|
||||||
sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE); // lv_mem_alloc might be dirty
|
|
||||||
}
|
}
|
||||||
if(dsc->ascii_glyph_dsc == NULL) {
|
if(dsc->ascii_glyph_dsc == NULL) {
|
||||||
file.close();
|
file.close();
|
||||||
@ -173,12 +172,12 @@ int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size
|
|||||||
|
|
||||||
//* Check that we read the correct size
|
//* Check that we read the correct size
|
||||||
if(readSize != sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE) {
|
if(readSize != sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE) {
|
||||||
Log.error(TAG_FONT,F("Error reading ziFont character map"));
|
Log.error(TAG_FONT, F("Error reading ziFont character map"));
|
||||||
file.close();
|
file.close();
|
||||||
return ZIFONT_ERROR_READING_DATA;
|
return ZIFONT_ERROR_READING_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.notice(TAG_FONT,F("Loaded V%d Font File: %s containing %d characters"), header.Version, font_path,
|
Log.notice(TAG_FONT, F("Loaded V%d Font File: %s containing %d characters"), header.Version, font_path,
|
||||||
header.Maximumnumchars);
|
header.Maximumnumchars);
|
||||||
|
|
||||||
file.close();
|
file.close();
|
||||||
@ -283,7 +282,7 @@ const uint8_t * IRAM_ATTR lv_font_get_bitmap_fmt_zifont(const lv_font_t * font,
|
|||||||
if(readSize != sizeof(lv_zifont_char_t)) {
|
if(readSize != sizeof(lv_zifont_char_t)) {
|
||||||
file.close();
|
file.close();
|
||||||
lv_mem_free(charInfo);
|
lv_mem_free(charInfo);
|
||||||
Log.error(TAG_FONT,F("Wrong number of bytes read from flash"));
|
Log.error(TAG_FONT, F("Wrong number of bytes read from flash"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,7 +290,7 @@ const uint8_t * IRAM_ATTR lv_font_get_bitmap_fmt_zifont(const lv_font_t * font,
|
|||||||
if(charInfo->character != unicode_letter) {
|
if(charInfo->character != unicode_letter) {
|
||||||
file.close();
|
file.close();
|
||||||
lv_mem_free(charInfo);
|
lv_mem_free(charInfo);
|
||||||
Log.error(TAG_FONT,F("Incorrect letter read from flash"));
|
Log.error(TAG_FONT, F("Incorrect letter read from flash"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -443,7 +442,7 @@ bool IRAM_ATTR lv_font_get_glyph_dsc_fmt_zifont(const lv_font_t * font, lv_font_
|
|||||||
if(unicode_letter >= 0xF000) {
|
if(unicode_letter >= 0xF000) {
|
||||||
char filename[32];
|
char filename[32];
|
||||||
sprintf_P(filename, PSTR("/fontawesome%u.zi"), fdsc->CharHeight);
|
sprintf_P(filename, PSTR("/fontawesome%u.zi"), fdsc->CharHeight);
|
||||||
if(!openFont(file, filename)) return true; // suppress glyph not found errors for icon font
|
if(!openFont(file, filename)) return false;
|
||||||
} else {
|
} else {
|
||||||
if(!openFont(file, (char *)font->user_data)) return false;
|
if(!openFont(file, (char *)font->user_data)) return false;
|
||||||
}
|
}
|
||||||
|
20
src/hasp.cpp
20
src/hasp.cpp
@ -377,11 +377,11 @@ void haspSetup()
|
|||||||
/******* File System Test ********************************************************************/
|
/******* File System Test ********************************************************************/
|
||||||
lv_fs_file_t f;
|
lv_fs_file_t f;
|
||||||
lv_fs_res_t res;
|
lv_fs_res_t res;
|
||||||
res = lv_fs_open(&f, "F:/pages.jsonl", LV_FS_MODE_RD);
|
res = lv_fs_open(&f, "F:/test.jsonl", LV_FS_MODE_RD);
|
||||||
if(res == LV_FS_RES_OK)
|
if(res == LV_FS_RES_OK)
|
||||||
Log.error(TAG_HASP, F("Opening pages.json OK"));
|
Log.error(TAG_HASP, F("Opening test.json OK"));
|
||||||
else
|
else
|
||||||
Log.verbose(TAG_HASP, F("Opening pages.json from FS failed %d"), res);
|
Log.verbose(TAG_HASP, F("Opening test.json from FS failed %d"), res);
|
||||||
|
|
||||||
uint32_t btoread = 128;
|
uint32_t btoread = 128;
|
||||||
uint32_t bread = 0;
|
uint32_t bread = 0;
|
||||||
@ -389,17 +389,17 @@ void haspSetup()
|
|||||||
|
|
||||||
res = lv_fs_read(&f, &buffer, btoread, &bread);
|
res = lv_fs_read(&f, &buffer, btoread, &bread);
|
||||||
if(res == LV_FS_RES_OK) {
|
if(res == LV_FS_RES_OK) {
|
||||||
Log.error(TAG_HASP, F("Reading pages.json OK %u"), bread);
|
Log.error(TAG_HASP, F("Reading test.json OK %u"), bread);
|
||||||
buffer[127] = '\0';
|
buffer[127] = '\0';
|
||||||
Log.verbose(TAG_HASP, buffer);
|
Log.verbose(TAG_HASP, buffer);
|
||||||
} else
|
} else
|
||||||
Log.verbose(TAG_HASP, F("Reading pages.json from FS failed %d"), res);
|
Log.verbose(TAG_HASP, F("Reading test.json from FS failed %d"), res);
|
||||||
|
|
||||||
res = lv_fs_close(&f);
|
res = lv_fs_close(&f);
|
||||||
if(res == LV_FS_RES_OK)
|
if(res == LV_FS_RES_OK)
|
||||||
Log.error(TAG_HASP, F("Closing pages.json OK"));
|
Log.error(TAG_HASP, F("Closing test.json OK"));
|
||||||
else
|
else
|
||||||
Log.verbose(TAG_HASP, F("Closing pages.json on FS failed %d"), res);
|
Log.verbose(TAG_HASP, F("Closing test.json on FS failed %d"), res);
|
||||||
/******* File System Test ********************************************************************/
|
/******* File System Test ********************************************************************/
|
||||||
|
|
||||||
/* ********** Font Initializations ********** */
|
/* ********** Font Initializations ********** */
|
||||||
@ -408,17 +408,15 @@ void haspSetup()
|
|||||||
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
|
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
|
||||||
lv_zifont_init();
|
lv_zifont_init();
|
||||||
|
|
||||||
if(lv_zifont_font_init(&haspFonts[0], haspZiFontPath, 32) != 0) {
|
if(lv_zifont_font_init(&haspFonts[1], haspZiFontPath, 32) != 0) {
|
||||||
Log.error(TAG_HASP, F("Failed to set font to %s"), haspZiFontPath);
|
Log.error(TAG_HASP, F("Failed to set font to %s"), haspZiFontPath);
|
||||||
haspFonts[0] = LV_FONT_DEFAULT;
|
haspFonts[1] = LV_FONT_DEFAULT;
|
||||||
} else {
|
} else {
|
||||||
// defaultFont = haspFonts[0];
|
// defaultFont = haspFonts[0];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ********** Font Initializations ********** */
|
|
||||||
|
|
||||||
/* ********** Theme Initializations ********** */
|
/* ********** Theme Initializations ********** */
|
||||||
lv_theme_t * th;
|
lv_theme_t * th;
|
||||||
switch(haspThemeId) {
|
switch(haspThemeId) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user