feat(display): draw hint animation at touch position instead of center
This commit is contained in:
@@ -136,6 +136,7 @@ HoldState DisplayDriverTFT::updateHold(unsigned long holdMs) {
|
||||
if (!_holdActive) {
|
||||
_holdActive = true;
|
||||
_holdStartMs = millis();
|
||||
h.started = true;
|
||||
}
|
||||
uint32_t held = millis() - _holdStartMs;
|
||||
h.active = true;
|
||||
@@ -147,8 +148,8 @@ HoldState DisplayDriverTFT::updateHold(unsigned long holdMs) {
|
||||
_tft.fillRect(0, DISPLAY_HEIGHT - 8, barW, 8, TFT_WHITE);
|
||||
_tft.fillRect(barW, DISPLAY_HEIGHT - 8, DISPLAY_WIDTH - barW, 8, TFT_DARKGREY);
|
||||
} else {
|
||||
if (_ // Clear theholdActive) {
|
||||
progress bar when released
|
||||
if (_holdActive) {
|
||||
// Clear the progress bar when released
|
||||
_tft.fillRect(0, DISPLAY_HEIGHT - 8, DISPLAY_WIDTH, 8, TFT_DARKGREY);
|
||||
}
|
||||
_holdActive = false;
|
||||
@@ -156,9 +157,10 @@ HoldState DisplayDriverTFT::updateHold(unsigned long holdMs) {
|
||||
return h;
|
||||
}
|
||||
|
||||
void DisplayDriverTFT::updateHint() {
|
||||
void DisplayDriverTFT::updateHint(int x, int y) {
|
||||
float t = (millis() % 2000) / 2000.0f;
|
||||
uint8_t v = (uint8_t)(30.0f + 30.0f * sinf(t * 2 * PI));
|
||||
uint16_t col = _tft.color565(v, v, v);
|
||||
_tft.drawRect(DISPLAY_WIDTH / 2 - 40, DISPLAY_HEIGHT / 2 + 20, 80, 40, col);
|
||||
// Draw at touch position instead of center
|
||||
_tft.drawRect(x - 40, y - 20, 80, 40, col);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user