simplyfy the font logic and also fix the bug where it loaded the chinese font for both chinese and latin

This commit is contained in:
2026-01-11 21:40:42 +01:00
parent d64c14a96b
commit da6db59e27
5 changed files with 18 additions and 46 deletions

View File

@@ -41,7 +41,7 @@ extern void TuneUp();
extern void endMenu();
extern void startFMDXScan();
extern void DoMemoryPosTune();
extern void UpdateFonts(byte mode);
extern void UpdateFonts();
extern void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, uint8_t fontsize);
extern void setAutoSpeedSPI();
extern void showAutoSquelch(bool mode);

View File

@@ -498,7 +498,6 @@ TFT_eSPI::TFT_eSPI(int16_t w, int16_t h)
_fillbg = isDigits = textwrapY = false;
textwrapX = true;
textdatum = TL_DATUM;
fontsloaded = 0;
_swapBytes = false;
@@ -507,17 +506,12 @@ TFT_eSPI::TFT_eSPI(int16_t w, int16_t h)
lockTransaction = false;
_booted = true;
_cp437 = false;
_utf8 = true;
addr_row = 0xFFFF;
addr_col = 0xFFFF;
_xPivot = 0;
_yPivot = 0;
fontsloaded = 0x0002; // Bit 1 set
fontsloaded |= 0x8000; // Bit 15 set
}
void TFT_eSPI::initBus(void) {
@@ -2139,10 +2133,6 @@ int16_t TFT_eSPI::textWidth(const char *string, uint8_t font) {
return str_width;
}
uint16_t TFT_eSPI::fontsLoaded() {
return fontsloaded;
}
int16_t TFT_eSPI::fontHeight(uint8_t font) {
if (font > 8) return 0;
@@ -2948,8 +2938,6 @@ void TFT_eSPI::invertDisplay(bool i) {
}
uint16_t TFT_eSPI::decodeUTF8(uint8_t c) {
if (!_utf8) return c;
if ((c & 0x80) == 0x00) {
decoderState = 0;
return c;
@@ -2989,8 +2977,6 @@ uint16_t TFT_eSPI::decodeUTF8(uint8_t *buf, uint16_t *index, uint16_t remaining)
{
uint16_t c = buf[(*index)++];
if (!_utf8) return c;
if ((c & 0x80) == 0x00) return c;
if (((c & 0xE0) == 0xC0) && (remaining > 1))

View File

@@ -277,9 +277,6 @@ class TFT_eSPI { friend class TFT_eSprite;
// Used by Smooth font class to fetch a pixel colour for the anti-aliasing
void setCallback(getColorCallback getCol);
uint16_t fontsLoaded(void); // Each bit in returned value represents a font type that is loaded - used for debug/error handling only
void spiwrite(uint8_t); // legacy support only
void writecommand(uint8_t c); // Send an 8-bit command, function resets DC/RS high ready for data
void writedata(uint8_t d); // Send data with DC/RS set high
@@ -440,17 +437,12 @@ uint8_t spi_write_speed;
int32_t bg_cursor_x;
int32_t last_cursor_x;
uint32_t fontsloaded;
bool isDigits;
bool textwrapX, textwrapY;
bool _swapBytes;
bool _booted;
bool _cp437;
bool _utf8;
uint32_t _lastColor;
bool _fillbg;

View File

@@ -3519,14 +3519,14 @@ void MenuUpDown(bool dir) {
switch (menuoption) {
case ITEM1:
if (dir) {
language ++;
language++;
if (language == language_totalnumber) language = 0;
} else {
language --;
language--;
if (language > language_totalnumber) language = language_totalnumber - 1;
}
UpdateFonts(0);
UpdateFonts();
OneBigLineSprite.drawString(textUI(0), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
@@ -5222,7 +5222,6 @@ void DoMenu() {
tftPrint(ACENTER, "http://192.168.4.1", 155, 174, PrimaryColor, PrimaryColorSmooth, 16);
char key [9];
XDRGTK_key.toCharArray(key, 9);
UpdateFonts(1);
if (wifi) {
wifi = false;
tryWiFi();
@@ -5238,7 +5237,6 @@ void DoMenu() {
XDRGTK_key = XDRGTK_key_input.getValue();
EEPROM.writeString(EE_STRING_XDRGTK_KEY, XDRGTK_key);
EEPROM.commit();
UpdateFonts(0);
wifi = true;
tryWiFi();
delay(2000);

View File

@@ -1315,19 +1315,19 @@ void setup() {
FullLineSprite.createSprite(308, 19);
FullLineSprite.setSwapBytes(true);
FullLineSprite.loadFont(FONT16, 0);
FullLineSprite.loadFont(FONT16_CHS, 0);
FullLineSprite.loadFont(FONT16_CHS, 1);
OneBigLineSprite.createSprite(270, 30);
OneBigLineSprite.setSwapBytes(true);
OneBigLineSprite.loadFont(FONT28, 0);
OneBigLineSprite.loadFont(FONT28_CHS, 0);
OneBigLineSprite.loadFont(FONT28_CHS, 1);
SignalSprite.createSprite(80, 48);
SignalSprite.loadFont(FONT28, 0);
SignalSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
SignalSprite.setSwapBytes(true);
UpdateFonts(0);
UpdateFonts();
if (digitalRead(BWBUTTON) == LOW && digitalRead(ROTARY_BUTTON) == HIGH && digitalRead(MODEBUTTON) == HIGH && digitalRead(BANDBUTTON) == HIGH) {
if (rotarymode == 0) rotarymode = 1; else rotarymode = 0;
@@ -3903,21 +3903,17 @@ void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int colo
tft.drawString(modifiedText, x, y, selectedFont);
}
void UpdateFonts(byte mode) {
switch (mode) {
case 0:
if (language == LANGUAGE_CHS) {
if (menu) PSSprite.setTextFont(1); else PSSprite.setTextFont(3);
OneBigLineSprite.setTextFont(1);
GeneralTextSprite.setTextFont(1);
FullLineSprite.setTextFont(1);
} else {
if (menu) PSSprite.setTextFont(0); else PSSprite.setTextFont(2);
OneBigLineSprite.setTextFont(0);
GeneralTextSprite.setTextFont(0);
FullLineSprite.setTextFont(0);
}
break;
void UpdateFonts() {
if (language == LANGUAGE_CHS) {
if (menu) PSSprite.setTextFont(1); else PSSprite.setTextFont(3);
OneBigLineSprite.setTextFont(1);
GeneralTextSprite.setTextFont(1);
FullLineSprite.setTextFont(1);
} else {
if (menu) PSSprite.setTextFont(0); else PSSprite.setTextFont(2);
OneBigLineSprite.setTextFont(0);
GeneralTextSprite.setTextFont(0);
FullLineSprite.setTextFont(0);
}
}