Ich habe gerade eine Implementierung von disp_dev
(siehe #13262) zu #12509 hinzugefügt. Ich habe einige (zugegebenermaßen geringfügige) Rückmeldungen zur aktuellen API:
Der Parameter color
für disp_dev_map
ist ein uint16_t
Zeiger. Dies impliziert, dass Pixel mindestens 16 Bit haben sollten. Die E-Paper-Anzeige in #12509 verwendet ein einzelnes Byte pro 8 Pixel, daher wäre es natürlicher, dort uint8_t
zu verwenden. Vor allem, wenn es sich um ein 8x3-Pixel-Bild handelt.
In der Implementierung für das ili9341 beschreiben x2
und y2
die Koordinate des inneren Pixels der Ecke, nicht die äußere Ecke. Dies ist auch in der Dokumentation dieses Treibers vermerkt. Es wird jedoch nicht in disp_dev_map
notiert. Ich denke auch, dass dies (auch wenn es ausdrücklich erwähnt wird) keine intuitive Verwendung von Koordinaten ist: Ein Rechteck mit zwei gegenüberliegenden Ecken mit den Koordinaten (5,5) und (5,5) hat eine Fläche von 0, nicht 1.
disp_dev_set_invert
wird wahrscheinlich nicht für alle Displays gelten. Dies kann dem Nutzer derzeit nicht mitgeteilt werden.
Vorschläge:
Machen Sie color
uint8_t
.
Verwenden Sie Breite ( w
) und Höhe ( h
) anstelle von x2
und y2
, um Verwirrung zu vermeiden. Das machen auch SDL , Gegl und Kairo .
Fügen Sie einen Rückgabetyp zu disp_dev_set_invert
, der Erfolg/Fehler anzeigt. Dies sollte wahrscheinlich auch für disp_dev_map
der Fall sein.
Fügen Sie einen Rückgabetyp zu
disp_dev_set_invert
, der Erfolg/Fehler anzeigt. Dies sollte wahrscheinlich auch fürdisp_dev_map
der Fall sein.
Eine andere Lösung hierfür könnte darin bestehen, einem Treiber eine Anzahl von Fähigkeitsflags hinzuzufügen, um unterschiedliche Treiberfähigkeiten anzuzeigen.
Ich habe einen Vorschlag für das Thema Farbtiefe in der PR #14054 .
Während ich in #14051 einige Vereinfachungen der API für Koordinaten vorgenommen habe.
Ich denke auch, dass dies (auch wenn es ausdrücklich erwähnt wird) keine intuitive Verwendung von Koordinaten ist: Ein Rechteck mit zwei gegenüberliegenden Ecken mit den Koordinaten (5,5) und (5,5) hat eine Fläche von 0, nicht 1.
Aber die Vereinfachung des Koordinators geht dieses Problem nicht an. Nur eine Vereinfachung der API selbst.
Verwenden Sie Breite (w) und Höhe (h) anstelle von x2 und y2, um Verwechslungen zu vermeiden. Das machen auch SDL, Gegl und Kairo.
Dem stimme ich zu. Sollte das Problem beheben.
Ist es irgendwie möglich, dieses Thema voranzutreiben, damit es nicht sterben wird? :)
Ping @aabadie @bergzand?
Ping @aabadie @bergzand?
Hilfreichster Kommentar
Ping @aabadie @bergzand?