Add ability to change the color

This commit is contained in:
Florian Wetzel
2025-02-25 14:49:01 +01:00
parent 5f889d4d73
commit 20e359a1b9
2 changed files with 22 additions and 2 deletions

View File

@ -31,4 +31,22 @@ void ProgressBar::redraw(TftInterface &tft, int value)
m_lastValue = value;
}
void ProgressBar::changeColor(TftInterface &tft, const uint32_t color, const uint32_t backgroundColor)
{
if (color != m_color)
{
// redraw already drawn area in new color
tft.fillRect(m_x+1, m_y+1, m_lastValue-m_x-1, m_height-2, color);
m_color = color;
}
if (backgroundColor != m_backgroundColor)
{
// redraw background in new color
tft.fillRect(m_x+1, m_y+1, m_width-2, m_height-2, backgroundColor);
m_backgroundColor = backgroundColor;
}
}
} // namespace espgui

View File

@ -21,6 +21,8 @@ public:
void start(TftInterface &tft);
void redraw(TftInterface &tft, int value);
void changeColor(TftInterface &tft, const uint32_t color = TFT_YELLOW, const uint32_t backgroundColor = TFT_BLACK);
private:
const int m_x;
const int m_y;
@ -28,8 +30,8 @@ private:
const int m_height;
const int m_min;
const int m_max;
const uint32_t m_color;
const uint32_t m_backgroundColor;
uint32_t m_color;
uint32_t m_backgroundColor;
int m_lastValue{};
};