0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-04-28 06:11:24 +03:00

Apply trailing zero suppression to big font frequency display

This commit is contained in:
OneOfEleven 2023-10-25 22:26:49 +01:00
parent 28f78cfcb6
commit b41079cfa6
5 changed files with 48 additions and 5 deletions

View File

@ -12,7 +12,7 @@ ENABLE_OVERLAY := 0
ENABLE_LTO := 1
# UART Programming 2.9 kB
ENABLE_UART := 1
ENABLE_UART_DEBUG := 1
ENABLE_UART_DEBUG := 0
# AirCopy 2.5 kB
ENABLE_AIRCOPY := 1
ENABLE_AIRCOPY_REMEMBER_FREQ := 1

Binary file not shown.

Binary file not shown.

View File

@ -204,6 +204,7 @@ void UI_DisplayFrequency(const char *pDigits, uint8_t X, uint8_t Y, bool bDispla
uint8_t *pFb0 = g_frame_buffer[Y] + X;
uint8_t *pFb1 = pFb0 + 128;
bool bCanDisplay = false;
unsigned int len = 6;
unsigned int i = 0;
// MHz
@ -231,8 +232,20 @@ void UI_DisplayFrequency(const char *pDigits, uint8_t X, uint8_t Y, bool bDispla
*pFb1 = 0x60; pFb0++; pFb1++;
*pFb1 = 0x60; pFb0++; pFb1++;
#ifdef ENABLE_TRIM_TRAILING_ZEROS
if (pDigits[len + 1] == 0 && pDigits[len + 2] == 0)
{
if (pDigits[len - 1] == 0)
{
len--;
if (pDigits[len - 1] == 0)
len--;
}
}
#endif
// kHz
while (i < 6)
while (i < len)
{
const unsigned int Digit = pDigits[i++];
memcpy(pFb0, g_font_big_digits[Digit], char_width);

View File

@ -663,11 +663,28 @@ void UI_DisplayMain(void)
case MDF_FREQUENCY: // just channel frequency
#ifdef ENABLE_BIG_FREQ
NUMBER_ToDigits(frequency, str);
// show the main large frequency digits
UI_DisplayFrequency(str, x, line, false, false);
// show the remaining 2 small frequency digits
UI_Displaysmall_digits(2, str + 6, x + 81, line + 1, true);
#ifdef ENABLE_TRIM_TRAILING_ZEROS
{
unsigned int small_num = 2;
if (str[7] == 0)
{
small_num--;
if (str[6] == 0)
small_num--;
}
UI_Displaysmall_digits(small_num, str + 6, x + 81, line + 1, true);
}
#else
UI_Displaysmall_digits(2, str + 6, x + 81, line + 1, true);
#endif
#else
// show the frequency in the main font
sprintf(str, "%03u.%05u", frequency / 100000, frequency % 100000);
@ -726,14 +743,27 @@ void UI_DisplayMain(void)
// if (IS_FREQ_CHANNEL(g_eeprom.screen_channel[vfo_num]))
{ // frequency mode
#ifdef ENABLE_BIG_FREQ
NUMBER_ToDigits(frequency, str); // 8 digits
// show the main large frequency digits
UI_DisplayFrequency(str, x, line, false, false);
// show the remaining 2 small frequency digits
UI_Displaysmall_digits(2, str + 6, x + 81, line + 1, true);
#ifdef ENABLE_TRIM_TRAILING_ZEROS
{
unsigned int small_num = 2;
if (str[7] == 0)
{
small_num--;
if (str[6] == 0)
small_num--;
}
UI_Displaysmall_digits(small_num, str + 6, x + 81, line + 1, true);
}
#else
UI_Displaysmall_digits(2, str + 6, x + 81, line + 1, true);
#endif
#else
// show the frequency in the main font