From f6e473b3b1d79d86cfe2af0d87ff4947f3746da9 Mon Sep 17 00:00:00 2001 From: MCelliotG Date: Mon, 1 Jan 2024 21:34:14 +0200 Subject: [PATCH] Initial color mapping --- TEF6686_ESP32.ino | 2 + src/ARS_Colors.h | 43 ++++ src/gui.cpp | 561 ++++++++++++++++++++++++---------------------- src/gui.h | 2 + src/rds.cpp | 62 ++--- src/rds.h | 2 + 6 files changed, 374 insertions(+), 298 deletions(-) create mode 100644 src/ARS_Colors.h diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 2a36c64..23d8164 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -228,6 +228,8 @@ int PrimaryColor; int PrimaryColorSmooth; int RDSColor; int RDSColorSmooth; +int RDSDropoutColor; +int RDSDropoutColorSmooth; int SignificantColor; int SignificantColorSmooth; int StereoColor; diff --git a/src/ARS_Colors.h b/src/ARS_Colors.h new file mode 100644 index 0000000..f175358 --- /dev/null +++ b/src/ARS_Colors.h @@ -0,0 +1,43 @@ +//MAIN COLORS /* RGB 565 CODES */ +#define Black 0x0000 /* 0, 0, 0 */ +#define Blue 0x001F /* 0, 0, 31 */ +#define Crimson 0xF8C3 /* 31, 6, 3 */ +#define Cyan 0x0F3F /* 1, 57, 31 */ +#define Grey 0x7BEF /* 15, 31, 15 */ +#define Darkgrey 0x39A7 /* 7, 13, 7 */ +#define Green 0x07E0 /* 0, 63, 0 */ +#define Indigo 0x881F /* 17, 0, 31 */ +#define Ocean 0x01FF /* 0, 15, 31 */ +#define Orange 0xFC00 /* 31, 32, 0 */ +#define Red 0xF800 /* 31, 0, 0 */ +#define Sakura 0xF3D5 /* 30, 30, 21 */ +#define Turquoise 0x07FF /* 0, 63, 31 */ +#define Skyblue 0x867D /* 16, 51, 29 */ +#define Tangerine 0xF980 /* 31, 12, 0 */ +#define Teal 0x07F7 /* 0, 63, 23 */ +#define White 0xFFFF /* 31, 63, 31 */ +#define Yellow 0xFFE0 /* 31, 63, 0 */ +//SMOOTH COLORS /* RGB 565 CODES */ +#define CrimsonSmooth 0x3800 /* 7, 0, 0 */ +#define CyanSmooth 0x0105 /* 0, 8, 5 */ +#define GreenSmooth 0x00C0 /* 0, 6, 0 */ +#define IndigoSmooth 0x3080 /* 4, 0, 7 */ +#define OceanSmooth 0x0006 /* 0, 0, 6 */ +#define OrangeSmooth 0x3165 /* 6, 11, 5 */ +#define RedSmooth 0x2000 /* 4, 0, 0 */ +#define SakuraSmooth 0x3008 /* 6, 0, 8 */ +#define SkyblueSmooth 0x10E4 /* 2, 7, 4 */ +#define TangerineSmooth 0x3080 /* 6, 4, 0 */ +#define TealSmooth 0x0144 /* 0, 10, 4 */ +#define WhiteSmooth 0x18E3 /* 3, 7, 3 */ +#define YellowSmooth 0x2120 /* 4, 9, 0 */ +//DARK COLORS /* RGB 565 CODES */ +#define CyanDark 0x5BAF /* 11, 29, 15 */ +#define CrimsonDark 0x6A08 /* 13, 16, 8 */ +#define CyanGrey 0x2A08 /* 5, 16, 8 */ +#define PaleGrey 0x4A69 /* 9, 19, 9 */ +#define PureGrey 0x7BCF /* 15, 30, 15 */ +#define CrimsonDarkSmooth 0x30E3 /* 6, 7, 3 */ +#define CyanDarkSmooth 0x29E8 /* 5, 15, 8 */ +#define CyanFrame 0x01E9 /* 0, 15, 9 */ +#define CrimsonDarkBW 0xFBEF /* 31, 31, 15 */ \ No newline at end of file diff --git a/src/gui.cpp b/src/gui.cpp index fb290cb..fd1bbba 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -1,330 +1,355 @@ #include "gui.h" #include "language.h" #include "constants.h" +#include "ARS_Colors.h" #include #include #include #include + byte menuitem; byte items[8] = {8, static_cast(dynamicspi ? 5 : 3), 7, 10, 9, 10, 10, 5}; void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/ switch (CurrentTheme) { case 0: // Default PE5PVB theme - PrimaryColor = TFT_YELLOW; - PrimaryColorSmooth = 0x2120; - SecondaryColor = TFT_SKYBLUE; - SecondaryColorSmooth = 0x10E4; - FrameColor = TFT_BLUE; - GreyoutColor = 0x39A7; - BackgroundColor = TFT_BLACK; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - FreqColor = TFT_YELLOW; - FreqColorSmooth = 0x2120; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = TFT_GREEN; - InsignificantColorSmooth = 0x00C0; - StereoColor = TFT_RED; - StereoColorSmooth = 0x2000; - RDSColor = TFT_YELLOW; - RDSColorSmooth = 0x2120; - BarSignificantColor = TFT_RED; - BarInsignificantColor = TFT_GREEN; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = TFT_GREEN; - BWAutoColor = 0x07F7; - BWAutoColorSmooth = 0x0144; - BatteryValueColor = 0x07F7; - BatteryValueColorSmooth = TFT_BLACK; + PrimaryColor = Yellow; + PrimaryColorSmooth = YellowSmooth; + SecondaryColor = Skyblue; + SecondaryColorSmooth = SkyblueSmooth; + FrameColor = Blue; + GreyoutColor = Darkgrey; + BackgroundColor = Black; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + FreqColor = Yellow; + FreqColorSmooth = YellowSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Green; + InsignificantColorSmooth = GreenSmooth; + StereoColor = Red; + StereoColorSmooth = RedSmooth; + RDSColor = Yellow; + RDSColorSmooth = YellowSmooth; + RDSDropoutColor = Teal; + RDSDropoutColorSmooth = TealSmooth; + BarSignificantColor = Red; + BarInsignificantColor = Green; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Green; + BWAutoColor = Teal; + BWAutoColorSmooth = TealSmooth; + BatteryValueColor = Teal; + BatteryValueColorSmooth = Black; break; case 1: // Cyan theme - PrimaryColor = 0x0F3F; - PrimaryColorSmooth = 0x0105; - SecondaryColor = 0x5BAF; - SecondaryColorSmooth = 0x29E8; - FrameColor = 0x01e9; - GreyoutColor = 0x2A08; - BackgroundColor = TFT_BLACK; - FreqColor = 0x0F3F; - FreqColorSmooth = 0x0105; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = TFT_GREEN; - InsignificantColorSmooth = 0x00C0; - StereoColor = 0x0F3F; - StereoColorSmooth = 0x0105; - RDSColor = 0x0F3F; - RDSColorSmooth = 0x0105; - BarSignificantColor = TFT_RED; - BarInsignificantColor = 0x0F3F; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = 0x0F3F; - BWAutoColor = 0x07F7; - BWAutoColorSmooth = 0x0144; - BatteryValueColor = 0x07F7; - BatteryValueColorSmooth = 0x0144; + PrimaryColor = Cyan; + PrimaryColorSmooth = CyanSmooth; + SecondaryColor = Teal; + SecondaryColorSmooth = TealSmooth; + FrameColor = CyanFrame; + GreyoutColor = CyanGrey; + BackgroundColor = Black; + FreqColor = Cyan; + FreqColorSmooth = CyanSmooth; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Green; + InsignificantColorSmooth = GreenSmooth; + StereoColor = Cyan; + StereoColorSmooth = CyanSmooth; + RDSColor = Cyan; + RDSColorSmooth = CyanSmooth; + RDSDropoutColor = Teal; + RDSDropoutColorSmooth = TealSmooth; + BarSignificantColor = Red; + BarInsignificantColor = Cyan; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Cyan; + BWAutoColor = Teal; + BWAutoColorSmooth = TealSmooth; + BatteryValueColor = Teal; + BatteryValueColorSmooth = TealSmooth; break; case 2: // Crimson theme - PrimaryColor = 0xF8C3; - PrimaryColorSmooth = 0x3800; - SecondaryColor = 0x6A08; - SecondaryColorSmooth = 0x30E3; - FrameColor = 0x3800; - GreyoutColor = 0x4A69; - BackgroundColor = TFT_BLACK; - FreqColor = 0xF8C3; - FreqColorSmooth = 0x3800; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - SignificantColor = TFT_GREEN; - SignificantColorSmooth = 0x2000; - InsignificantColor = TFT_GREEN; - InsignificantColorSmooth = 0x00C0; - StereoColor = 0xF8C3; - StereoColorSmooth = TFT_BLACK; - RDSColor = 0xF8C3; - RDSColorSmooth = TFT_BLACK; - BarSignificantColor = TFT_YELLOW; - BarInsignificantColor = 0xF8C3; - ModBarSignificantColor = TFT_YELLOW; - ModBarInsignificantColor = 0xF8C3; - BWAutoColor = 0xFBEF; + PrimaryColor = Crimson; + PrimaryColorSmooth = CrimsonSmooth; + SecondaryColor = CrimsonDarkBW; + SecondaryColorSmooth = 0x4124; + FrameColor = CrimsonSmooth; + GreyoutColor = PaleGrey; + BackgroundColor = Black; + FreqColor = Crimson; + FreqColorSmooth = CrimsonSmooth; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + SignificantColor = Green; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Green; + InsignificantColorSmooth = GreenSmooth; + StereoColor = Crimson; + StereoColorSmooth = Black; + RDSColor = Crimson; + RDSColorSmooth = Black; + RDSDropoutColor = CrimsonDarkBW; + RDSDropoutColorSmooth = 0x4124; + BarSignificantColor = Yellow; + BarInsignificantColor = Crimson; + ModBarSignificantColor = Yellow; + ModBarInsignificantColor = Crimson; + BWAutoColor = CrimsonDarkBW; BWAutoColorSmooth = 0x4124; BatteryValueColor = 0xFA8D; BatteryValueColorSmooth = 0x3083; break; case 3: // Monochrome theme - PrimaryColor = TFT_WHITE; - PrimaryColorSmooth = TFT_BLACK; - SecondaryColor = 0x7BCF; + PrimaryColor = White; + PrimaryColorSmooth = Black; + SecondaryColor = PureGrey; SecondaryColorSmooth = 0x1082; FrameColor = 0x2965; - GreyoutColor = 0x4A69; - BackgroundColor = TFT_BLACK; - FreqColor = TFT_WHITE; - FreqColorSmooth = TFT_BLACK; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = TFT_BLACK; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = TFT_GREEN; - InsignificantColorSmooth = 0x00C0; - StereoColor = TFT_WHITE; - StereoColorSmooth = TFT_BLACK; - RDSColor = TFT_WHITE; - RDSColorSmooth = TFT_BLACK; - BarSignificantColor = TFT_RED; - BarInsignificantColor = TFT_GREEN; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = TFT_GREEN; - BWAutoColor = 0x7BCF; + GreyoutColor = PaleGrey; + BackgroundColor = Black; + FreqColor = White; + FreqColorSmooth = Black; + ActiveColor = White; + ActiveColorSmooth = Black; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Green; + InsignificantColorSmooth = GreenSmooth; + StereoColor = White; + StereoColorSmooth = Black; + RDSColor = White; + RDSColorSmooth = Black; + RDSDropoutColor = PureGrey; + RDSDropoutColorSmooth = 0x1082; + BarSignificantColor = Red; + BarInsignificantColor = Green; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Green; + BWAutoColor = PureGrey; BWAutoColorSmooth = 0x1082; - BatteryValueColor = TFT_WHITE; - BatteryValueColorSmooth = TFT_BLACK; + BatteryValueColor = White; + BatteryValueColorSmooth = Black; break; case 4: // Volcano theme - PrimaryColor = TFT_ORANGE; + PrimaryColor = Orange; PrimaryColorSmooth = 0x2965; - SecondaryColor = 0x6A86; - SecondaryColorSmooth = 0x3123; + SecondaryColor = Tangerine; + SecondaryColorSmooth = TangerineSmooth; FrameColor = 0x2965; GreyoutColor = 0x5140; BackgroundColor = 0x0806; - FreqColor = TFT_ORANGE; + FreqColor = Orange; FreqColorSmooth = 0x2965; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = TFT_GREEN; - InsignificantColorSmooth = 0x00C0; - StereoColor = TFT_ORANGE; - StereoColorSmooth = 0x0105; - RDSColor = TFT_ORANGE; - RDSColorSmooth = TFT_WHITE; - BarSignificantColor = TFT_RED; - BarInsignificantColor = TFT_ORANGE; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = TFT_ORANGE; - BWAutoColor = 0xF980; - BWAutoColorSmooth = 0x3080; - BatteryValueColor = 0xF980; - BatteryValueColorSmooth = 0x3080; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Green; + InsignificantColorSmooth = GreenSmooth; + StereoColor = Orange; + StereoColorSmooth = CyanSmooth; + RDSColor = Orange; + RDSColorSmooth = White; + RDSDropoutColor = Tangerine; + RDSDropoutColorSmooth = TangerineSmooth; + BarSignificantColor = Red; + BarInsignificantColor = Orange; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Orange; + BWAutoColor = Tangerine; + BWAutoColorSmooth = TangerineSmooth; + BatteryValueColor = Tangerine; + BatteryValueColorSmooth = TangerineSmooth; break; case 5: // Dendro theme - PrimaryColor = TFT_GREEN; + PrimaryColor = Green; PrimaryColorSmooth = 0x0200; - SecondaryColor = 0x748E; - SecondaryColorSmooth = 0x3206; + SecondaryColor = 0x07F6; + SecondaryColorSmooth = 0x0184; FrameColor = 0x0200; - GreyoutColor = 0x4A69; - BackgroundColor = TFT_BLACK; - FreqColor = TFT_GREEN; + GreyoutColor = PaleGrey; + BackgroundColor = Black; + FreqColor = Green; FreqColorSmooth = 0x0200; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; InsignificantColor = 0xAA1C; - InsignificantColorSmooth = 0x00C0; - StereoColor = TFT_GREEN; + InsignificantColorSmooth = GreenSmooth; + StereoColor = Green; StereoColorSmooth = 0x0200; - RDSColor = TFT_GREEN; + RDSColor = Green; RDSColorSmooth = 0x0200; - BarSignificantColor = TFT_RED; - BarInsignificantColor = TFT_GREEN; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = TFT_GREEN; + RDSDropoutColor = 0x07F6; + RDSDropoutColorSmooth = 0x0184; + BarSignificantColor = Red; + BarInsignificantColor = Green; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Green; BWAutoColor = 0x07F6; BWAutoColorSmooth = 0x0184; BatteryValueColor = 0x07F6; BatteryValueColorSmooth = 0x0184; break; case 6: // Sakura theme - PrimaryColor = 0xF3D5; - PrimaryColorSmooth = 0x3008; - SecondaryColor = 0x9B90; - SecondaryColorSmooth = 0x3946; + PrimaryColor = Sakura; + PrimaryColorSmooth = SakuraSmooth; + SecondaryColor = 0xF00A; + SecondaryColorSmooth = 0x2802; FrameColor = 0x3845; GreyoutColor = 0x38C5; - BackgroundColor = TFT_BLACK; - FreqColor = 0xF3D5; - FreqColorSmooth = 0x3008; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = TFT_GREEN; - InsignificantColorSmooth = 0x00C0; - StereoColor = 0xF3D5; - StereoColorSmooth = 0x3008; - RDSColor = 0xF3D5; - RDSColorSmooth = 0x3008; - BarSignificantColor = TFT_RED; - BarInsignificantColor = 0xF3D5; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = 0xF3D5; + BackgroundColor = Black; + FreqColor = Sakura; + FreqColorSmooth = SakuraSmooth; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Green; + InsignificantColorSmooth = GreenSmooth; + StereoColor = Sakura; + StereoColorSmooth = SakuraSmooth; + RDSColor = Sakura; + RDSColorSmooth = SakuraSmooth; + RDSDropoutColor = 0xF00A; + RDSDropoutColorSmooth = 0x2802; + BarSignificantColor = Black; + BarSignificantColor = Red; + BarInsignificantColor = Sakura; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Sakura; BWAutoColor = 0xF00A; BWAutoColorSmooth = 0x2802; BatteryValueColor = 0xF00A; BatteryValueColorSmooth = 0x2802; break; case 7: // Whiteout theme - PrimaryColor = TFT_BLACK; - PrimaryColorSmooth = TFT_WHITE; + PrimaryColor = Black; + PrimaryColorSmooth = White; SecondaryColor = 0x9492; - SecondaryColorSmooth = TFT_WHITE; + SecondaryColorSmooth = White; FrameColor = 0x630C; GreyoutColor = 0x9492; BackgroundColor = 0xDFFC; - FreqColor = TFT_BLACK; - FreqColorSmooth = TFT_WHITE; - ActiveColor = TFT_BLACK; + FreqColor = Black; + FreqColorSmooth = White; + ActiveColor = Black; ActiveColorSmooth = 0xDFFC; - SignificantColor = TFT_RED; + SignificantColor = Red; SignificantColorSmooth = 0xDFFC; - InsignificantColor = TFT_GREEN; + InsignificantColor = Green; InsignificantColorSmooth = 0x0140; - StereoColor = TFT_BLACK; + StereoColor = Black; StereoColorSmooth = 0xDFFC; - RDSColor = TFT_BLACK; + RDSColor = Black; RDSColorSmooth = 0xDFFC; - BarSignificantColor = TFT_BLACK; - BarInsignificantColor = TFT_GREEN; - ModBarSignificantColor = TFT_BLACK; - ModBarInsignificantColor = TFT_GREEN; - BWAutoColor = 0x7BCF; - BWAutoColorSmooth = TFT_WHITE; - BatteryValueColor = TFT_BLACK; - BatteryValueColorSmooth = TFT_WHITE; + RDSDropoutColor = PureGrey; + RDSDropoutColorSmooth = White; + BarSignificantColor = Black; + BarInsignificantColor = Green; + ModBarSignificantColor = Black; + ModBarInsignificantColor = Green; + BWAutoColor = PureGrey; + BWAutoColorSmooth = White; + BatteryValueColor = Black; + BatteryValueColorSmooth = White; break; case 8: // Tangerine theme - PrimaryColor = 0xF980; - PrimaryColorSmooth = 0x3080; - SecondaryColor = 0x9B8D; - SecondaryColorSmooth = 0x5207; + PrimaryColor = Tangerine; + PrimaryColorSmooth = TangerineSmooth; + SecondaryColor = 0xED20; + SecondaryColorSmooth = 0x3940; FrameColor = 0x38A1; GreyoutColor = 0x6247; - BackgroundColor = TFT_BLACK; - FreqColor = 0xF980; - FreqColorSmooth = 0x3080; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = TFT_GREEN; - InsignificantColorSmooth = 0x00C0; - StereoColor = 0xF980; - StereoColorSmooth = 0x3080; - RDSColor = 0xF980; - RDSColorSmooth = 0x3080; - BarSignificantColor = TFT_RED; - BarInsignificantColor = TFT_GREEN; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = TFT_GREEN; + BackgroundColor = Black; + FreqColor = Tangerine; + FreqColorSmooth = IndigoSmooth; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Green; + InsignificantColorSmooth = GreenSmooth; + StereoColor = Tangerine; + StereoColorSmooth = IndigoSmooth; + RDSColor = Tangerine; + RDSColorSmooth = IndigoSmooth; + RDSDropoutColor = 0xED20; + RDSDropoutColorSmooth = 0x3940; + BarSignificantColor = Red; + BarInsignificantColor = Green; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Green; BWAutoColor = 0xED20; BWAutoColorSmooth = 0x3940; BatteryValueColor = 0xED20; BatteryValueColorSmooth = 0x3940; break; case 9: // Ocean theme - PrimaryColor = 0x01FF; - PrimaryColorSmooth = 0x0006; - SecondaryColor = 0x73F4; - SecondaryColorSmooth = 0x31A8; + PrimaryColor = Ocean; + PrimaryColorSmooth = OceanSmooth; + SecondaryColor = 0x051F; + SecondaryColorSmooth = 0x0106; FrameColor = 0x0010; GreyoutColor = 0x420C; - BackgroundColor = TFT_BLACK; - FreqColor = 0x01FF; - FreqColorSmooth = 0x0006; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = 0x0F3F; - InsignificantColorSmooth = 0x0105; - StereoColor = 0x01FF; - StereoColorSmooth = 0x0006; - RDSColor = 0x01FF; - RDSColorSmooth = 0x0006; - BarSignificantColor = TFT_RED; - BarInsignificantColor = 0x01FF; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = 0x01FF; + BackgroundColor = Black; + FreqColor = Ocean; + FreqColorSmooth = OceanSmooth; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Cyan; + InsignificantColorSmooth = CyanSmooth; + StereoColor = Ocean; + StereoColorSmooth = OceanSmooth; + RDSColor = Ocean; + RDSColorSmooth = OceanSmooth; + RDSDropoutColor = 0x051F; + RDSDropoutColorSmooth = 0x0106; + BarSignificantColor = Red; + BarInsignificantColor = Ocean; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Ocean; BWAutoColor = 0x051F; BWAutoColorSmooth = 0x0106; BatteryValueColor = 0x051F; BatteryValueColorSmooth = 0x0106; break; case 10: // Indigo theme - PrimaryColor = 0x881F; - PrimaryColorSmooth = 0x2007; - SecondaryColor = 0x9C96; - SecondaryColorSmooth = 0x41C8; + PrimaryColor = Indigo; + PrimaryColorSmooth = IndigoSmooth; + SecondaryColor = 0xD01F; + SecondaryColorSmooth = 0x400A; FrameColor = 0x6016; GreyoutColor = 0x49AC; - BackgroundColor = TFT_BLACK; - FreqColor = 0x881F; + BackgroundColor = Black; + FreqColor = Indigo; FreqColorSmooth = 0x2007; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = TFT_GREEN; - InsignificantColorSmooth = 0x00C0; - StereoColor = 0x881F; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Green; + InsignificantColorSmooth = GreenSmooth; + StereoColor = Indigo; StereoColorSmooth = 0x2007; - RDSColor = 0x881F; + RDSColor = Indigo; RDSColorSmooth = 0x2007; - BarSignificantColor = TFT_RED; - BarInsignificantColor = 0x881F; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = 0x881F; + RDSDropoutColor = 0x9C96; + RDSDropoutColorSmooth = 0x41C8; + BarSignificantColor = Red; + BarInsignificantColor = Indigo; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Indigo; BWAutoColor = 0xD01F; BWAutoColorSmooth = 0x400A; BatteryValueColor = 0xD01F; @@ -332,33 +357,35 @@ void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de break; case 11: // GoldBrite - PrimaryColor = TFT_YELLOW; - PrimaryColorSmooth = 0x2120; - SecondaryColor = TFT_SKYBLUE; - SecondaryColorSmooth = 0x10E4; - FrameColor = TFT_BLUE; - GreyoutColor = 0x39A7; - BackgroundColor = TFT_BLACK; - ActiveColor = TFT_WHITE; - ActiveColorSmooth = 0x18E3; - FreqColor = TFT_WHITE; - FreqColorSmooth = 0x18E3; - SignificantColor = TFT_RED; - SignificantColorSmooth = 0x2000; - InsignificantColor = 0x01FF; - InsignificantColorSmooth = 0x0006; - StereoColor = TFT_RED; - StereoColorSmooth = 0x2000; - RDSColor = TFT_YELLOW; - RDSColorSmooth = 0x2120; - BarSignificantColor = TFT_RED; - BarInsignificantColor = 0x01FF; - ModBarSignificantColor = TFT_RED; - ModBarInsignificantColor = TFT_GREEN; - BWAutoColor = 0x07F7; - BWAutoColorSmooth = 0x0144; - BatteryValueColor = 0x07F7; - BatteryValueColorSmooth = TFT_BLACK; + PrimaryColor = Yellow; + PrimaryColorSmooth = YellowSmooth; + SecondaryColor = Skyblue; + SecondaryColorSmooth = SkyblueSmooth; + FrameColor = Blue; + GreyoutColor = Darkgrey; + BackgroundColor = Black; + ActiveColor = White; + ActiveColorSmooth = WhiteSmooth; + FreqColor = White; + FreqColorSmooth = WhiteSmooth; + SignificantColor = Red; + SignificantColorSmooth = RedSmooth; + InsignificantColor = Ocean; + InsignificantColorSmooth = OceanSmooth; + StereoColor = Red; + StereoColorSmooth = RedSmooth; + RDSColor = Yellow; + RDSColorSmooth = YellowSmooth; + RDSDropoutColor = Teal; + RDSDropoutColorSmooth = TealSmooth; + BarSignificantColor = Red; + BarInsignificantColor = Ocean; + ModBarSignificantColor = Red; + ModBarInsignificantColor = Green; + BWAutoColor = Teal; + BWAutoColorSmooth = TealSmooth; + BatteryValueColor = Teal; + BatteryValueColorSmooth = Black; break; } } diff --git a/src/gui.h b/src/gui.h index 2b02d31..6d1b273 100644 --- a/src/gui.h +++ b/src/gui.h @@ -141,6 +141,8 @@ extern int PrimaryColor; extern int PrimaryColorSmooth; extern int RDSColor; extern int RDSColorSmooth; +extern int RDSDropoutColor; +extern int RDSDropoutColorSmooth; extern int rssiold; extern int SecondaryColor; extern int SecondaryColorSmooth; diff --git a/src/rds.cpp b/src/rds.cpp index 613ce67..e3dca62 100644 --- a/src/rds.cpp +++ b/src/rds.cpp @@ -83,7 +83,7 @@ void ShowAdvancedRDS() { } if (xPos2 < -tft.textWidth(afstring) + (charWidth * 14)) xPos2 = 0; RDSSprite.fillSprite(BackgroundColor); - if (RDSstatus) RDSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RDSSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + if (RDSstatus) RDSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RDSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); RDSSprite.drawString(afstring, xPos2, 2); RDSSprite.pushSprite(35, 197); afticker = millis(); @@ -110,7 +110,7 @@ void ShowAdvancedRDS() { } if (xPos3 < -tft.textWidth(eonstring) + (charWidth * 14)) xPos3 = 0; RDSSprite.fillSprite(BackgroundColor); - if (RDSstatus) RDSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RDSSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + if (RDSstatus) RDSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RDSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); RDSSprite.drawString(eonstring, xPos3, 2); RDSSprite.pushSprite(35, 172); eonticker = millis(); @@ -138,7 +138,7 @@ void ShowAdvancedRDS() { } if (xPos4 < -tft.textWidth(rtplusstring) + (charWidth * 14)) xPos4 = 0; RDSSprite.fillSprite(BackgroundColor); - if (RDSstatus) RDSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RDSSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + if (RDSstatus) RDSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RDSSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); RDSSprite.drawString(rtplusstring, xPos4, 2); RDSSprite.pushSprite(35, 146); rtplusticker = millis(); @@ -256,17 +256,17 @@ void readRds() { if (!RDSstatus) { if (radio.rds.correctPI != 0 && !dropout) { if (region == REGION_EU) { - if (advancedRDS) tftPrint(0, PIold, 275, 75, SecondaryColor, SecondaryColorSmooth, 28); else tftPrint(0, PIold, 275, 187, SecondaryColor, SecondaryColorSmooth, 28); + if (advancedRDS) tftPrint(0, PIold, 275, 75, RDSDropoutColor, RDSDropoutColorSmooth, 28); else tftPrint(0, PIold, 275, 187, RDSDropoutColor, RDSDropoutColorSmooth, 28); } if (region == REGION_US) { - if (advancedRDS) tftPrint(-1, PIold, 240, 72, SecondaryColor, SecondaryColorSmooth, 16); else tftPrint(-1, PIold, 240, 184, SecondaryColor, SecondaryColorSmooth, 16); - if (advancedRDS) tftPrint(-1, stationIDold, 240, 89, SecondaryColor, SecondaryColorSmooth, 16); else tftPrint(-1, stationIDold, 240, 201, SecondaryColor, SecondaryColorSmooth, 16); - if (advancedRDS) tftPrint(1, stationStateold, 318, 89, SecondaryColor, SecondaryColorSmooth, 16); else tftPrint(1, stationStateold, 318, 201, SecondaryColor, SecondaryColorSmooth, 16); + if (advancedRDS) tftPrint(-1, PIold, 240, 72, RDSDropoutColor, RDSDropoutColorSmooth, 16); else tftPrint(-1, PIold, 240, 184, RDSDropoutColor, RDSDropoutColorSmooth, 16); + if (advancedRDS) tftPrint(-1, stationIDold, 240, 89, RDSDropoutColor, RDSDropoutColorSmooth, 16); else tftPrint(-1, stationIDold, 240, 201, RDSDropoutColor, RDSDropoutColorSmooth, 16); + if (advancedRDS) tftPrint(1, stationStateold, 318, 89, RDSDropoutColor, RDSDropoutColorSmooth, 16); else tftPrint(1, stationStateold, 318, 201, RDSDropoutColor, RDSDropoutColorSmooth, 16); } - if (advancedRDS) tftPrint(-1, PSold, 38, 75, SecondaryColor, SecondaryColorSmooth, 28); else tftPrint(-1, PSold, 38, 187, SecondaryColor, SecondaryColorSmooth, 28); - if (advancedRDS) tftPrint(-1, PTYold, 38, 109, SecondaryColor, SecondaryColorSmooth, 16); else tftPrint(-1, PTYold, 38, 163, SecondaryColor, SecondaryColorSmooth, 16); + if (advancedRDS) tftPrint(-1, PSold, 38, 75, RDSDropoutColor, RDSDropoutColorSmooth, 28); else tftPrint(-1, PSold, 38, 187, RDSDropoutColor, RDSDropoutColorSmooth, 28); + if (advancedRDS) tftPrint(-1, PTYold, 38, 109, RDSDropoutColor, RDSDropoutColorSmooth, 16); else tftPrint(-1, PTYold, 38, 163, RDSDropoutColor, RDSDropoutColorSmooth, 16); if (advancedRDS) { tft.fillCircle(86, 41, 5, SignificantColor); tft.fillCircle(124, 41, 5, SignificantColor); @@ -277,22 +277,22 @@ void readRds() { if (advancedRDS && radio.rds.stationText.length() < 20) { xPos = 0; AdvRadiotextSprite.fillSprite(BackgroundColor); - AdvRadiotextSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + AdvRadiotextSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); AdvRadiotextSprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 2); AdvRadiotextSprite.pushSprite(35, 220); } else if (!advancedRDS && radio.rds.stationText.length() < 29) { xPos = 0; RadiotextSprite.fillSprite(BackgroundColor); - RadiotextSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + RadiotextSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); RadiotextSprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 2); RadiotextSprite.pushSprite(38, 220); } if (radio.rds.hasCT) { if (advancedRDS) { - tftPrint(1, rds_clock, 205, 109, SecondaryColor, SecondaryColorSmooth, 16); + tftPrint(1, rds_clock, 205, 109, RDSDropoutColor, RDSDropoutColorSmooth, 16); } else { - tftPrint(1, rds_clock, 205, 163, SecondaryColor, SecondaryColorSmooth, 16); + tftPrint(1, rds_clock, 205, 163, RDSDropoutColor, RDSDropoutColorSmooth, 16); } } dropout = true; @@ -412,40 +412,40 @@ void showPI() { if (advancedRDS) { if (region == REGION_EU) { if (!RDSstatus) { - tftReplace(0, PIold, radio.rds.picode, 275, 75, SecondaryColor, SecondaryColorSmooth, 28); + tftReplace(0, PIold, radio.rds.picode, 275, 75, RDSDropoutColor, RDSDropoutColorSmooth, 28); } else { tftReplace(0, PIold, radio.rds.picode, 275, 75, PrimaryColor, PrimaryColorSmooth, 28); } } if (region == REGION_US) { if (!RDSstatus) { - if (String(radio.rds.picode) != PIold) tftReplace(-1, PIold, radio.rds.picode, 240, 72, SecondaryColor, SecondaryColorSmooth, 16); - tftReplace(-1, stationIDold, radio.rds.stationID, 240, 89, SecondaryColor, SecondaryColorSmooth, 16); + if (String(radio.rds.picode) != PIold) tftReplace(-1, PIold, radio.rds.picode, 240, 72, RDSDropoutColor, RDSDropoutColorSmooth, 16); + tftReplace(-1, stationIDold, radio.rds.stationID, 240, 89, RDSDropoutColor, RDSDropoutColorSmooth, 16); } else { if (String(radio.rds.picode) != PIold) tftReplace(-1, PIold, radio.rds.picode, 240, 72, PrimaryColor, PrimaryColorSmooth, 16); tftReplace(-1, stationIDold, radio.rds.stationID, 240, 89, PrimaryColor, PrimaryColorSmooth, 16); } - tftReplace(1, stationStateold, radio.rds.stationState, 318, 89, SecondaryColor, SecondaryColorSmooth, 16); + tftReplace(1, stationStateold, radio.rds.stationState, 318, 89, RDSDropoutColor, RDSDropoutColorSmooth, 16); } } else if (afscreen) { tftReplace(-1, PIold, radio.rds.picode, 30, 201, BWAutoColor, BWAutoColorSmooth, 16); } else { if (region == REGION_EU) { if (!RDSstatus) { - tftReplace(0, PIold, radio.rds.picode, 275, 187, SecondaryColor, SecondaryColorSmooth, 28); + tftReplace(0, PIold, radio.rds.picode, 275, 187, RDSDropoutColor, RDSDropoutColorSmooth, 28); } else { tftReplace(0, PIold, radio.rds.picode, 275, 187, PrimaryColor, PrimaryColorSmooth, 28); } } if (region == REGION_US) { if (!RDSstatus) { - if (String(radio.rds.picode) != PIold) tftReplace(-1, PIold, radio.rds.picode, 240, 184, SecondaryColor, SecondaryColorSmooth, 16); - tftReplace(-1, stationIDold, radio.rds.stationID, 240, 201, SecondaryColor, SecondaryColorSmooth, 16); + if (String(radio.rds.picode) != PIold) tftReplace(-1, PIold, radio.rds.picode, 240, 184, RDSDropoutColor, RDSDropoutColorSmooth, 16); + tftReplace(-1, stationIDold, radio.rds.stationID, 240, 201, RDSDropoutColor, RDSDropoutColorSmooth, 16); } else { if (String(radio.rds.picode) != PIold) tftReplace(-1, PIold, radio.rds.picode, 240, 184, PrimaryColor, PrimaryColorSmooth, 16); tftReplace(-1, stationIDold, radio.rds.stationID, 240, 201, PrimaryColor, PrimaryColorSmooth, 16); } - tftReplace(1, stationStateold, radio.rds.stationState, 318, 201, SecondaryColor, SecondaryColorSmooth, 16); + tftReplace(1, stationStateold, radio.rds.stationState, 318, 201, RDSDropoutColor, RDSDropoutColorSmooth, 16); } } PIold = radio.rds.picode; @@ -465,13 +465,13 @@ void showPTY() { if (!screenmute) { if (advancedRDS) { if (!RDSstatus) { - tftReplace(-1, PTYold, radio.rds.stationType, 38, 109, SecondaryColor, SecondaryColorSmooth, 16); + tftReplace(-1, PTYold, radio.rds.stationType, 38, 109, RDSDropoutColor, RDSDropoutColorSmooth, 16); } else { tftReplace(-1, PTYold, radio.rds.stationType, 38, 109, PrimaryColor, PrimaryColorSmooth, 16); } } else { if (!RDSstatus) { - tftReplace(-1, PTYold, radio.rds.stationType, 38, 163, SecondaryColor, SecondaryColorSmooth, 16); + tftReplace(-1, PTYold, radio.rds.stationType, 38, 163, RDSDropoutColor, RDSDropoutColorSmooth, 16); } else { tftReplace(-1, PTYold, radio.rds.stationType, 38, 163, PrimaryColor, PrimaryColorSmooth, 16); } @@ -493,7 +493,7 @@ void showPS() { if (!screenmute) { if (advancedRDS) { if (!RDSstatus) { - tftReplace(-1, PSold, radio.rds.stationName, 38, 75, SecondaryColor, SecondaryColorSmooth, 28); + tftReplace(-1, PSold, radio.rds.stationName, 38, 75, RDSDropoutColor, RDSDropoutColorSmooth, 28); } else { tftReplace(-1, PSold, radio.rds.stationName, 38, 75, PrimaryColor, PrimaryColorSmooth, 28); } @@ -501,7 +501,7 @@ void showPS() { tftReplace(0, PSold, radio.rds.stationName, 160, 201, BWAutoColor, BWAutoColorSmooth, 16); } else { if (!RDSstatus) { - tftReplace(-1, PSold, radio.rds.stationName, 38, 187, SecondaryColor, SecondaryColorSmooth, 28); + tftReplace(-1, PSold, radio.rds.stationName, 38, 187, RDSDropoutColor, RDSDropoutColorSmooth, 28); } else { tftReplace(-1, PSold, radio.rds.stationName, 38, 187, PrimaryColor, PrimaryColorSmooth, 28); } @@ -542,7 +542,7 @@ void showCT() { if (advancedRDS) tftReplace(1, rds_clockold, rds_clock, 205, 109, PrimaryColor, PrimaryColorSmooth, 16); else tftReplace(1, rds_clockold, rds_clock, 205, 163, PrimaryColor, PrimaryColorSmooth, 16); } else { if (rtcset) { - if (advancedRDS) tftReplace(1, rds_clockold, rds_clock, 205, 109, SecondaryColor, SecondaryColorSmooth, 16); else tftReplace(1, rds_clockold, rds_clock, 205, 163, SecondaryColor, SecondaryColorSmooth, 16); + if (advancedRDS) tftReplace(1, rds_clockold, rds_clock, 205, 109, RDSDropoutColor, RDSDropoutColorSmooth, 16); else tftReplace(1, rds_clockold, rds_clock, 205, 163, RDSDropoutColor, RDSDropoutColorSmooth, 16); } else { if (advancedRDS) { tftPrint(1, rds_clockold, 205, 109, BackgroundColor, BackgroundColor, 16); @@ -564,13 +564,13 @@ void showRadioText() { if (advancedRDS && radio.rds.stationText.length() < 20) { xPos = 0; AdvRadiotextSprite.fillSprite(BackgroundColor); - if (RDSstatus) AdvRadiotextSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else AdvRadiotextSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + if (RDSstatus) AdvRadiotextSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else AdvRadiotextSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); AdvRadiotextSprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 2); AdvRadiotextSprite.pushSprite(35, 220); } else if (!advancedRDS && radio.rds.stationText.length() < 29) { xPos = 0; RadiotextSprite.fillSprite(BackgroundColor); - if (RDSstatus) RadiotextSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RadiotextSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + if (RDSstatus) RadiotextSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RadiotextSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); RadiotextSprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 2); RadiotextSprite.pushSprite(38, 220); } else { @@ -587,13 +587,13 @@ void showRadioText() { if (advancedRDS) { if (xPos < -tft.textWidth(radio.rds.stationText + " " + radio.rds.stationText32) + (charWidth * 10)) xPos = 0; AdvRadiotextSprite.fillSprite(BackgroundColor); - if (RDSstatus) AdvRadiotextSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else AdvRadiotextSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + if (RDSstatus) AdvRadiotextSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else AdvRadiotextSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); AdvRadiotextSprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 2); AdvRadiotextSprite.pushSprite(35, 220); } else { if (xPos < -tft.textWidth(radio.rds.stationText + " " + radio.rds.stationText32) + (charWidth * 20)) xPos = 0; RadiotextSprite.fillSprite(BackgroundColor); - if (RDSstatus) RadiotextSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RadiotextSprite.setTextColor(SecondaryColor, SecondaryColorSmooth, false); + if (RDSstatus) RadiotextSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); else RadiotextSprite.setTextColor(RDSDropoutColor, RDSDropoutColorSmooth, false); RadiotextSprite.drawString(radio.rds.stationText + " " + radio.rds.stationText32, xPos, 2); RadiotextSprite.pushSprite(38, 220); } @@ -701,7 +701,7 @@ void ShowAFEON() { tftPrint(-1, "PS", 46, 32, ActiveColor, ActiveColorSmooth, 16); if (strcmp(radio.eon[i + y].ps.c_str(), eonpsold[i + y].c_str()) != 0) tftPrint(-1, String(eonpsold[i + y]), 46, 48 + (15 * i), BackgroundColor, BackgroundColor, 16); - tftPrint(-1, String(radio.eon[i + y].ps), 46, 48 + (15 * i), SecondaryColor, SecondaryColorSmooth, 16); + tftPrint(-1, String(radio.eon[i + y].ps), 46, 48 + (15 * i), RDSDropoutColor, RDSDropoutColorSmooth, 16); eonpsold[i + y] = radio.eon[i + y].ps; } else { tftPrint(-1, String(eonpsold[i + y]), 46, 48 + (15 * i), BackgroundColor, BackgroundColor, 16); diff --git a/src/rds.h b/src/rds.h index bc30551..6399b43 100644 --- a/src/rds.h +++ b/src/rds.h @@ -63,6 +63,8 @@ extern int InsignificantColor; extern int InsignificantColorSmooth; extern int PrimaryColor; extern int PrimaryColorSmooth; +extern int RDSDropoutColor; +extern int RDSDropoutColorSmooth; extern int SecondaryColor; extern int SecondaryColorSmooth; extern int SignificantColor;