43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
#include "doubleprogressbar.h"
|
|
|
|
// 3rdparty lib includes
|
|
#include <cpputils.h>
|
|
|
|
// local includes
|
|
#include "tftinstance.h"
|
|
|
|
using namespace espgui;
|
|
|
|
namespace bobbygui {
|
|
DoubleProgressBar::DoubleProgressBar(int x, int y, int width, int height, int min, int max, uint32_t color1, uint32_t color2) :
|
|
m_x{x}, m_y{y}, m_width{width}, m_height{height}, m_min{min}, m_max{max}, m_color1{color1}, m_color2{color2}
|
|
{
|
|
}
|
|
|
|
void DoubleProgressBar::start()
|
|
{
|
|
m_lastValue1 = m_x+1;
|
|
m_lastValue2 = m_x+1;
|
|
tft.drawRect(m_x, m_y, m_width, m_height, TFT_WHITE);
|
|
}
|
|
|
|
void DoubleProgressBar::redraw(int value1, int value2)
|
|
{
|
|
value1 = cpputils::mapValueClamped(value1, m_min, m_max, m_x+1, m_x+m_width-1);
|
|
value2 = cpputils::mapValueClamped(value2, m_min, m_max, m_x+1, m_x+m_width-1);
|
|
|
|
if (value1 < m_lastValue1)
|
|
tft.fillRect(value1, m_y+1, m_lastValue1-value1, (m_height-2) / 2, TFT_BLACK);
|
|
else if (value1 > m_lastValue1)
|
|
tft.fillRect(m_lastValue1, m_y+1, value1-m_lastValue1, (m_height-2) / 2, m_color1);
|
|
|
|
if (value2 < m_lastValue2)
|
|
tft.fillRect(value2, m_y+1+(m_height-2)/2, m_lastValue2-value2, (m_height-2) / 2, TFT_BLACK);
|
|
else if (value2 > m_lastValue2)
|
|
tft.fillRect(m_lastValue2, m_y+1+(m_height-2)/2, value2-m_lastValue2, (m_height-2) / 2, m_color2);
|
|
|
|
m_lastValue1 = value1;
|
|
m_lastValue2 = value2;
|
|
}
|
|
} // namespace bobbygui
|