From 259c4d6bbf77faeba6a514a99d6d8ae08696f7a9 Mon Sep 17 00:00:00 2001 From: Sebastian Nieto Date: Wed, 9 Sep 2026 22:50:06 -0300 Subject: [PATCH] gauge: render unlit blocks as hollow wireframe outlines (only aristas in grey) --- sketch/obd2_gauge/meter.h | 42 +++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/sketch/obd2_gauge/meter.h b/sketch/obd2_gauge/meter.h index 4008aab..5003c59 100644 --- a/sketch/obd2_gauge/meter.h +++ b/sketch/obd2_gauge/meter.h @@ -179,11 +179,24 @@ inline void drawBarBlock(uint8_t i, uint16_t color) { if (d < min_d) min_d = d; } if (min_d <= -0.5f) continue; - if (min_d >= 0.5f) { - tft.drawPixel(x, y, color); + if (color == TFT_BLACK) { + tft.drawPixel(x, y, TFT_BLACK); + } else if (color == TFT_DARKGREY) { // Outline only (solo las aristas) + if (min_d > 1.5f) { + tft.drawPixel(x, y, TFT_BLACK); + } else if (min_d >= 0.5f) { + tft.drawPixel(x, y, TFT_DARKGREY); + } else { + uint8_t alpha = (uint8_t)((min_d + 0.5f) * 255.0f); + tft.drawPixel(x, y, TFT_DARKGREY, alpha, TFT_BLACK); + } } else { - uint8_t alpha = (uint8_t)((min_d + 0.5f) * 255.0f); - tft.drawPixel(x, y, color, alpha, TFT_BLACK); + if (min_d >= 0.5f) { + tft.drawPixel(x, y, color); + } else { + uint8_t alpha = (uint8_t)((min_d + 0.5f) * 255.0f); + tft.drawPixel(x, y, color, alpha, TFT_BLACK); + } } } } @@ -294,11 +307,24 @@ inline void drawQuadBarBlock(uint8_t cell, uint8_t i, uint16_t color) { } if (min_d <= -0.5f) continue; int16_t sx = ox + x; - if (min_d >= 0.5f) { - tft.drawPixel(sx, sy, color); + if (color == TFT_BLACK) { + tft.drawPixel(sx, sy, TFT_BLACK); + } else if (color == TFT_DARKGREY) { // Outline only (solo las aristas) + if (min_d > 1.3f) { + tft.drawPixel(sx, sy, TFT_BLACK); + } else if (min_d >= 0.5f) { + tft.drawPixel(sx, sy, TFT_DARKGREY); + } else { + uint8_t alpha = (uint8_t)((min_d + 0.5f) * 255.0f); + tft.drawPixel(sx, sy, TFT_DARKGREY, alpha, TFT_BLACK); + } } else { - uint8_t alpha = (uint8_t)((min_d + 0.5f) * 255.0f); - tft.drawPixel(sx, sy, color, alpha, TFT_BLACK); + if (min_d >= 0.5f) { + tft.drawPixel(sx, sy, color); + } else { + uint8_t alpha = (uint8_t)((min_d + 0.5f) * 255.0f); + tft.drawPixel(sx, sy, color, alpha, TFT_BLACK); + } } } }