fix(P4): Punkt sitzt wieder auf dem letzten Messwert (1.11.3)
Um den Beschnitt an der rechten Kante zu vermeiden, war der Punkt um eine halbe Punktbreite nach innen gerueckt - die Linie schaute dadurch rechts unter ihm hervor. Statt den Punkt zu verschieben, laesst die Kurvenflaeche jetzt rechts einen schmalen Rand frei. Der Platz gehoert noch zum Diagramm, wird aber nicht mehr bezeichnet: Die Linie endet frueher, der Punkt sitzt genau auf ihrem letzten Wert und wird nicht abgeschnitten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wx7wu7uXXgRzp1zHUhtUa6
This commit is contained in:
co-authored by
Claude Opus 5
parent
1959c49d9c
commit
8933c6f115
@@ -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:
|
||||
- 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.
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
// -------------------------------------------------------------------------------------
|
||||
// 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
|
||||
|
||||
@@ -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 h = lv_obj_get_content_height(ch);
|
||||
if (w <= 0 || h <= 0) return;
|
||||
// Der Punkt bleibt vollstaendig innerhalb der Kurvenflaeche. Saesse seine Mitte genau
|
||||
// auf dem letzten Messwert - also auf der rechten Kante -, laege seine rechte Haelfte
|
||||
// ausserhalb und wuerde abgeschnitten. Der Schein darf weiterhin hinausreichen.
|
||||
// Die Mitte des Punktes sitzt genau auf dem letzten Messwert, also am rechten Rand der
|
||||
// Kurvenflaeche. Damit seine rechte Haelfte trotzdem nicht abgeschnitten wird, laesst
|
||||
// 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 y = h - (int32_t)(((int64_t)(v - mn) * h) / (mx - mn));
|
||||
if (y < r) y = r;
|
||||
if (y > h - r) y = h - r;
|
||||
if (dot == g_sparkDotW) { g_dotCxW = w - r; g_dotCyW = y; }
|
||||
else { g_dotCxD = w - r; g_dotCyD = y; }
|
||||
if (dot == g_sparkDotW) { g_dotCxW = w; g_dotCyW = y; }
|
||||
else { g_dotCxD = w; g_dotCyD = y; }
|
||||
spark_dot_apply(dot, lv_obj_get_width(dot));
|
||||
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_border_width(ch, 0, 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_line_width(ch, 3, LV_PART_ITEMS);
|
||||
// Runde Enden und Ecken: An den Stuetzpunkten sitzt damit kein spitzer Winkel.
|
||||
|
||||
Reference in New Issue
Block a user