FAST_UNICODE_INDEX - faster binary search for index from unicode code point, for ordered by code point fonts only

This commit is contained in:
en-ot 2021-07-01 11:58:11 +03:00
parent 58f457ba97
commit 7d85157c3c
2 changed files with 35 additions and 0 deletions

View File

@ -338,6 +338,37 @@ uint32_t TFT_eSPI::readInt32(void)
** Function name: getUnicodeIndex ** Function name: getUnicodeIndex
** Description: Get the font file index of a Unicode character ** Description: Get the font file index of a Unicode character
*************************************************************************************x*/ *************************************************************************************x*/
#ifdef FAST_UNICODE_INDEX
bool TFT_eSPI::getUnicodeIndex(uint16_t unicode, uint16_t *index)
{
int above = gFont.gCount;
int bottom = 0;
int i = above / 2;
do
{
uint16_t code = gUnicode[i];
if (code == unicode)
{
*index = i;
return true;
}
if (code > unicode)
{
above = i;
}
else
{
bottom = i+1;
}
i = (above+bottom)/2;
} while (above > bottom);
return false;
}
#else
bool TFT_eSPI::getUnicodeIndex(uint16_t unicode, uint16_t *index) bool TFT_eSPI::getUnicodeIndex(uint16_t unicode, uint16_t *index)
{ {
for (uint16_t i = 0; i < gFont.gCount; i++) for (uint16_t i = 0; i < gFont.gCount; i++)
@ -351,6 +382,8 @@ bool TFT_eSPI::getUnicodeIndex(uint16_t unicode, uint16_t *index)
return false; return false;
} }
#endif
/*************************************************************************************** /***************************************************************************************
** Function name: drawGlyph ** Function name: drawGlyph

View File

@ -304,6 +304,8 @@
// this will save ~20kbytes of FLASH // this will save ~20kbytes of FLASH
#define SMOOTH_FONT #define SMOOTH_FONT
// Smooth font improvements
#define FAST_UNICODE_INDEX
// ################################################################################## // ##################################################################################
// //