Merge pull request 'fix(P4): Punkt sitzt wieder auf dem letzten Messwert (1.11.3)' (#90) from fix/punkt-auf-letztem-messwert into main

This commit was merged in pull request #90.
This commit is contained in:
2026-09-04 12:51:17 +02:00
3 changed files with 17 additions and 6 deletions
+6
View File
@@ -1,3 +1,9 @@
Version 1.11.3:
- Der Punkt sitzt wieder genau auf dem letzten Messwert, statt eine halbe Punktbreite davor.
Die Linie schaut damit rechts nicht mehr unter ihm hervor. Damit trotzdem nichts
abgeschnitten wird, lässt die Kurvenfläche rechts einen schmalen Rand frei: Der Platz
gehört noch zum Diagramm, wird aber nicht mehr bezeichnet.
Version 1.11.2: Version 1.11.2:
- Der Punkt am Kurvenende sitzt jetzt vollständig innerhalb der Kurvenfläche, statt mittig - Der Punkt am Kurvenende sitzt jetzt vollständig innerhalb der Kurvenfläche, statt mittig
auf dem letzten Messwert und damit halb außerhalb. Rechts wird nichts mehr abgeschnitten. auf dem letzten Messwert und damit halb außerhalb. Rechts wird nichts mehr abgeschnitten.
+1 -1
View File
@@ -126,7 +126,7 @@
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
// Firmware // Firmware
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
#define DISPLAY_FW_VERSION "1.11.2" // Firmware-Stand der P4-Display-Steuerung (Info-Seite) #define DISPLAY_FW_VERSION "1.11.3" // Firmware-Stand der P4-Display-Steuerung (Info-Seite)
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
// Protokoll // Protokoll
+10 -5
View File
@@ -1220,15 +1220,16 @@ static void spark_dot_place(lv_obj_t* ch, lv_chart_series_t* ser, lv_obj_t* dot,
int32_t w = lv_obj_get_content_width(ch); int32_t w = lv_obj_get_content_width(ch);
int32_t h = lv_obj_get_content_height(ch); int32_t h = lv_obj_get_content_height(ch);
if (w <= 0 || h <= 0) return; if (w <= 0 || h <= 0) return;
// Der Punkt bleibt vollstaendig innerhalb der Kurvenflaeche. Saesse seine Mitte genau // Die Mitte des Punktes sitzt genau auf dem letzten Messwert, also am rechten Rand der
// auf dem letzten Messwert - also auf der rechten Kante -, laege seine rechte Haelfte // Kurvenflaeche. Damit seine rechte Haelfte trotzdem nicht abgeschnitten wird, laesst
// ausserhalb und wuerde abgeschnitten. Der Schein darf weiterhin hinausreichen. // das Diagramm rechts einen Rand frei (siehe tempSpark) - dort steht der Punkt, ohne
// dass die Linie unter ihm hervorschaut.
int32_t r = SPARK_DOT_SIZE / 2; int32_t r = SPARK_DOT_SIZE / 2;
int32_t y = h - (int32_t)(((int64_t)(v - mn) * h) / (mx - mn)); int32_t y = h - (int32_t)(((int64_t)(v - mn) * h) / (mx - mn));
if (y < r) y = r; if (y < r) y = r;
if (y > h - r) y = h - r; if (y > h - r) y = h - r;
if (dot == g_sparkDotW) { g_dotCxW = w - r; g_dotCyW = y; } if (dot == g_sparkDotW) { g_dotCxW = w; g_dotCyW = y; }
else { g_dotCxD = w - r; g_dotCyD = y; } else { g_dotCxD = w; g_dotCyD = y; }
spark_dot_apply(dot, lv_obj_get_width(dot)); spark_dot_apply(dot, lv_obj_get_width(dot));
lv_obj_remove_flag(dot, LV_OBJ_FLAG_HIDDEN); lv_obj_remove_flag(dot, LV_OBJ_FLAG_HIDDEN);
} }
@@ -1319,6 +1320,10 @@ static lv_obj_t* tempSpark(lv_obj_t* parent, lv_color_t col, lv_chart_series_t**
lv_obj_set_style_bg_opa(ch, LV_OPA_TRANSP, 0); lv_obj_set_style_bg_opa(ch, LV_OPA_TRANSP, 0);
lv_obj_set_style_border_width(ch, 0, 0); lv_obj_set_style_border_width(ch, 0, 0);
lv_obj_set_style_pad_all(ch, 4, 0); lv_obj_set_style_pad_all(ch, 4, 0);
// Rechts etwas mehr Rand: Dort steht der Punkt auf dem letzten Messwert. Der Platz
// gehoert noch zum Diagramm, wird aber nicht mehr bezeichnet - deshalb ragt weder die
// Linie unter dem Punkt hervor noch wird der Punkt an der Kante beschnitten.
lv_obj_set_style_pad_right(ch, SPARK_DOT_SIZE / 2 + 3, 0);
lv_obj_set_style_size(ch, 0, 0, LV_PART_INDICATOR); // keine Punktmarkierungen lv_obj_set_style_size(ch, 0, 0, LV_PART_INDICATOR); // keine Punktmarkierungen
lv_obj_set_style_line_width(ch, 3, LV_PART_ITEMS); lv_obj_set_style_line_width(ch, 3, LV_PART_ITEMS);
// Runde Enden und Ecken: An den Stuetzpunkten sitzt damit kein spitzer Winkel. // Runde Enden und Ecken: An den Stuetzpunkten sitzt damit kein spitzer Winkel.