43 lines
1.3 KiB
C++

#include "touchgfx/Color.hpp"
#include "touchgfx/Unicode.hpp"
#include <gui/containers/TireTemp.hpp>
TireTemp::TireTemp() : temp{0} { updateValueBuffer(); }
void TireTemp::initialize() { TireTempBase::initialize(); }
void TireTemp::setTemp(int temp_in_celsius) {
if (temp_in_celsius < 0) {
// No space for displaying negative values
temp_in_celsius = 0;
}
if (temp_in_celsius == temp) {
// No change
return;
}
temp = temp_in_celsius;
updateValueBuffer();
if (temp < 35) {
bg.setColor(touchgfx::Color::getColorFromRGB(0x05, 0x76, 0xb7));
} else if (temp < 40) {
bg.setColor(touchgfx::Color::getColorFromRGB(0x05, 0x76, 0x64));
} else if (temp < 50) {
bg.setColor(touchgfx::Color::getColorFromRGB(0x05, 0x95, 0x38));
} else if (temp < 60) {
bg.setColor(touchgfx::Color::getColorFromRGB(0xdd, 0x6e, 0x22));
} else {
bg.setColor(touchgfx::Color::getColorFromRGB(0xdd, 0x2f, 0x22));
}
value.invalidate();
bg.invalidate(); // TODO: Only invalidate if color changed
}
void TireTemp::updateValueBuffer() {
// Unicode::utoa(temp, valueBuffer, 3, 10);
Unicode::snprintf(valueBuffer,
sizeof(valueBuffer) / sizeof(Unicode::UnicodeChar), "%02u",
temp);
value.setWildcard(valueBuffer);
}