5 pixels too wide? also cleaned up tft_espi further and readded comic font

This commit is contained in:
2026-01-10 11:09:11 +01:00
parent 1d053c5dd7
commit 6bd9d1a93b
11 changed files with 1042 additions and 118 deletions
+3 -7
View File
@@ -8,12 +8,6 @@ TFT_eSPI tft = TFT_eSPI(320, 240);
TFT_eSPI tft = TFT_eSPI(240, 320);
#endif
#ifdef DYNAMIC_SPI_SPEED
bool dynamicspi = true;
#else
bool dynamicspi = false;
#endif
bool Data_Accelerator = false;
bool advancedRDS, afmethodBold, afpage;
@@ -114,7 +108,7 @@ byte amgain;
byte freqoldcount;
byte HighCutLevel;
byte HighCutOffset;
byte items[10] = {10, static_cast<byte>(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 10, 10, 9};
byte items[10] = {10, static_cast<byte>(10), 7, 10, 10, 10, 9, 10, 10, 9};
byte iMSEQ;
byte iMSset;
byte language;
@@ -349,12 +343,14 @@ ESP32Time rtc(0);
// FrequencySprite.createSprite(200, 50);
// RDSSprite.createSprite(165, 19);
// PSSprite.createSprite(150, 32);
// PTYSprite.createSprite(160, 19);
// SquelchSprite.createSprite(27, 19);
// FullLineSprite.createSprite(308, 19);
// OneBigLineSprite.createSprite(270, 30);
TFT_eSprite FrequencySprite = TFT_eSprite(&tft);
TFT_eSprite RDSSprite = TFT_eSprite(&tft);
TFT_eSprite PTYSprite = TFT_eSprite(&tft);
TFT_eSprite SquelchSprite = TFT_eSprite(&tft);
TFT_eSprite FullLineSprite = TFT_eSprite(&tft);
TFT_eSprite OneBigLineSprite = TFT_eSprite(&tft);
+29 -39
View File
@@ -1636,22 +1636,20 @@ void ShowOneLine(byte position, byte item, bool selected) {
break;
case MAINSETTINGS:
if (dynamicspi) {
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(textUI(81)), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
if (spispeed == 7) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(textUI(86), 298, 2);
} else {
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(textUI(81)), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM);
if (spispeed == 7) {
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(textUI(86), 298, 2);
} else {
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString("MHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(textUI(204)) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 258, 2);
}
FullLineSprite.drawString("MHz", 298, 2);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(textUI(204)) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 258, 2);
}
break;
@@ -2728,22 +2726,20 @@ void ShowOneButton(byte position, byte item, bool selected) {
break;
case MAINSETTINGS:
if (dynamicspi) {
PSSprite.setTextDatum(TC_DATUM);
PSSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
PSSprite.drawString(shortLine(removeNewline(textUI(81))), 75, 1);
PSSprite.setTextDatum(TC_DATUM);
PSSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
PSSprite.drawString(shortLine(removeNewline(textUI(81))), 75, 1);
if (spispeed == 7) {
PSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
PSSprite.drawString(textUI(86), 75, 15);
} else {
PSSprite.setTextDatum(TL_DATUM);
PSSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
PSSprite.drawString("MHz", 77, 15);
PSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
PSSprite.setTextDatum(TR_DATUM);
PSSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(textUI(204)) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 73, 15);
}
if (spispeed == 7) {
PSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
PSSprite.drawString(textUI(86), 75, 15);
} else {
PSSprite.setTextDatum(TL_DATUM);
PSSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
PSSprite.drawString("MHz", 77, 15);
PSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
PSSprite.setTextDatum(TR_DATUM);
PSSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(textUI(204)) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 73, 15);
}
break;
@@ -3393,15 +3389,9 @@ void MenuUpDown(bool dir) {
OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(textUI(204)) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 160, 0);
}
OneBigLineSprite.pushSprite(24, 118);
#ifdef DYNAMIC_SPI_SPEED
if (spispeed == SPI_SPEED_DEFAULT) {
tft.setSPISpeed(SPI_FREQUENCY / 1000000);
} else if (spispeed == 7) {
setAutoSpeedSPI();
} else {
tft.setSPISpeed(spispeed * 10);
}
#endif
if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000);
else if (spispeed == 7) setAutoSpeedSPI();
else tft.setSPISpeed(spispeed * 10);
break;
}
break;
+13 -16
View File
@@ -1021,9 +1021,7 @@ void NumpadProcess(int num) {
menuoption = ITEM1;
menupage = DXMODE;
menuitem = 0;
#ifdef DYNAMIC_SPI_SPEED
if (spispeed == 7) tft.setSPISpeed(40);
#endif
submenu = true;
menu = true;
PSSprite.unloadFont();
@@ -1051,7 +1049,6 @@ void NumpadProcess(int num) {
}
void setAutoSpeedSPI() {
#ifdef DYNAMIC_SPI_SPEED
switch (frequency / 10) {
case 875 ... 877: tft.setSPISpeed(28); break;
case 878 ... 881: tft.setSPISpeed(24); break;
@@ -1096,7 +1093,6 @@ void setAutoSpeedSPI() {
case 1076 ... 1080: tft.setSPISpeed(15); break;
default: tft.setSPISpeed(30); break;
}
#endif
}
void endMenu() {
@@ -1396,11 +1392,9 @@ void setup() {
logcounter = EEPROM.readUInt(EE_UINT16_LOGCOUNTER);
radio.rds.PICTlock = EEPROM.readUInt(EE_UINT16_PICTLOCK);
#ifdef DYNAMIC_SPI_SPEED
if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000);
else if (spispeed == 7) setAutoSpeedSPI();
else tft.setSPISpeed(spispeed * 10);
#endif
LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN;
LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX;
@@ -1495,6 +1489,11 @@ void setup() {
RDSSprite.createSprite(165, 19);
RDSSprite.setTextDatum(TL_DATUM);
RDSSprite.setSwapBytes(true);
PTYSprite.createSprite(160, 19);
PTYSprite.setTextDatum(TL_DATUM);
PTYSprite.setSwapBytes(true);
PSSprite.createSprite(150, 32);
PSSprite.setTextDatum(TL_DATUM);
@@ -2624,9 +2623,7 @@ void ModeButtonPress() {
menuoption = ITEM1;
menupage = INDEX;
menuitem = 0;
#ifdef DYNAMIC_SPI_SPEED
if (spispeed == 7) tft.setSPISpeed(40);
#endif
PSSprite.unloadFont();
if (language == LANGUAGE_CHS) PSSprite.loadFont(FONT16_CHS); else PSSprite.loadFont(FONT16);
BuildMenu();
@@ -2991,9 +2988,7 @@ void ShowMemoryPos() {
}
void DoMemoryPosTune() {
#ifdef DYNAMIC_SPI_SPEED
if (spispeed == 7) tft.setSPISpeed(50);
#endif
radio.clearRDS(fullsearchrds);
if (IsStationEmpty()) {
@@ -3091,11 +3086,12 @@ void ShowFreq(int mode) {
FrequencySprite.fillSprite(BackgroundColor);
switch (freqfont) {
case 0: FrequencySprite.loadFont(FREQFONT0); break;
case 1: FrequencySprite.loadFont(FREQFONT1); break;
case 2: FrequencySprite.loadFont(FREQFONT2); break;
case 3: FrequencySprite.loadFont(FREQFONT3); break;
case 4: FrequencySprite.loadFont(FREQFONT4); break;
default: FrequencySprite.loadFont(FREQFONT0); break;
case 5: FrequencySprite.loadFont(FREQFONT5); break;
}
FrequencySprite.setTextDatum(TR_DATUM);
@@ -3131,11 +3127,12 @@ void ShowFreq(int mode) {
freqold = freq;
} else {
switch (freqfont) {
case 0: FrequencySprite.loadFont(FREQFONT0); break;
case 1: FrequencySprite.loadFont(FREQFONT1); break;
case 2: FrequencySprite.loadFont(FREQFONT2); break;
case 3: FrequencySprite.loadFont(FREQFONT3); break;
case 4: FrequencySprite.loadFont(FREQFONT4); break;
default: FrequencySprite.loadFont(FREQFONT0); break;
case 5: FrequencySprite.loadFont(FREQFONT5); break;
}
FrequencySprite.fillSprite(BackgroundColor);
@@ -4174,11 +4171,7 @@ void DefaultSettings() {
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, 0);
EEPROM.writeUInt(EE_UINT16_PICTLOCK, 0);
#ifdef DYNAMIC_SPI_SPEED
EEPROM.writeByte(EE_BYTE_SPISPEED, 7);
#else
EEPROM.writeByte(EE_BYTE_SPISPEED, 0);
#endif
#ifdef DEEPELEC_DP_66X
EEPROM.writeByte(EE_BYTE_ROTARYMODE, 1);
@@ -4277,17 +4270,20 @@ void UpdateFonts(byte mode) {
switch (mode) {
case 0:
RDSSprite.unloadFont();
PTYSprite.unloadFont();
PSSprite.unloadFont();
FullLineSprite.unloadFont();
OneBigLineSprite.unloadFont();
if (language == LANGUAGE_CHS) {
RDSSprite.loadFont(FONT16_CHS);
PTYSprite.loadFont(FONT16_CHS);
if (menu) PSSprite.loadFont(FONT16_CHS); else PSSprite.loadFont(FONT28_CHS);
FullLineSprite.loadFont(FONT16_CHS);
OneBigLineSprite.loadFont(FONT28_CHS);
} else {
RDSSprite.loadFont(FONT16);
PTYSprite.loadFont(FONT16);
if (menu) PSSprite.loadFont(FONT16); else PSSprite.loadFont(FONT28);
FullLineSprite.loadFont(FONT16);
OneBigLineSprite.loadFont(FONT28);
@@ -4297,6 +4293,7 @@ void UpdateFonts(byte mode) {
FullLineSprite.unloadFont();
OneBigLineSprite.unloadFont();
RDSSprite.unloadFont();
PTYSprite.unloadFont();
PSSprite.unloadFont();
break;
}
+6 -6
View File
@@ -406,14 +406,14 @@ void showPI() {
void showPTY() {
if(radio.rds.PTY.changed(0)) {
String PTYString = String(radio.rds.PTY) + "/" + (radio.rds.region != 0 ? (radio.rds.region == 0 ? PTY_EU[radio.rds.PTY] : PTY_USA[radio.rds.PTY]) : textUI(228 + radio.rds.PTY));
RDSSprite.fillSprite(BackgroundColor);
if(RDSstatus) RDSSprite.setTextColor(RDSColor, RDSColorSmooth, false);
else RDSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
if(band < BAND_GAP) RDSSprite.drawString(PTYString, 0, 2); // only draw it on fm
PTYSprite.fillSprite(BackgroundColor);
if(RDSstatus) PTYSprite.setTextColor(RDSColor, RDSColorSmooth, false);
else PTYSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false);
if(band < BAND_GAP) PTYSprite.drawString(PTYString, 0, 2); // only draw it on fm
if (!screenmute) {
if (advancedRDS) RDSSprite.pushSprite(35, 107);
else RDSSprite.pushSprite(35, 161);
if (advancedRDS) PTYSprite.pushSprite(35, 107);
else PTYSprite.pushSprite(35, 161);
}
if (wifi) {