Riot: disp_dev: Farbtiefe und Koordinatensystem

Erstellt am 1. Apr. 2020  ·  5Kommentare  ·  Quelle: RIOT-OS/RIOT

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.

drivers RFC new feature question

Hilfreichster Kommentar

Ping @aabadie @bergzand?

Alle 5 Kommentare

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.

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?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

pietrotedeschi picture pietrotedeschi  ·  4Kommentare

hcnhcn012 picture hcnhcn012  ·  5Kommentare

nmeum picture nmeum  ·  5Kommentare

chrysn picture chrysn  ·  5Kommentare

jia200x picture jia200x  ·  5Kommentare