Bug bei der Darstellung von Farben 24bpp (qrgb888)

Verschiedenes zu Qt
Antworten
Ghal_Maraz
Beiträge: 12
Registriert: 19. Mai 2010 11:12

Bug bei der Darstellung von Farben 24bpp (qrgb888)

Beitrag von Ghal_Maraz »

Hallo,

ich bin der Meinung einen Fehler in der Klasse gefunden zu haben, die für die Darstellung von Farben mit 24bit Farbtiefe zuständig ist. Kann mir jemand das bestätigen? sonst werd ich nämlich wohl noc hweiter suchen müssen.
Die Klasse qrgb888 aus der Datei src/gui/painting/qdrawhepler_p.h implementiert zwei Funktionen um den Farbwert als quint32 zurück zu bekommen. Beide liefern unterschiedliche Ergebnisse.

Code: Alles auswählen

qrgb888::operator quint32() const
{
    return qRgb(data[0], data[1], data[2]);
}

Q_GUI_EXPORT_INLINE QRgb qRgb(int r, int g, int b)// set RGB value
{ return (0xffu << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff); }
Die oben stehende Funktion gibt die Farben in der Reihenfolge RGB zurück. Das geht aus dem Konstruktor hervor:

Code: Alles auswählen

qrgb888::qrgb888(quint32 v)
{
    data[0] = qRed(v);
    data[1] = qGreen(v);
    data[2] = qBlue(v);
}
Die folgende Funktion geht umgekehrt vor

Code: Alles auswählen

quint32 qrgb888::rawValue() const
{
    return (data[2] << 16) | (data[1] << 8) | data[0];
}
Betreibt hier vielleicht selber jemand Qt Embedded auf einem 24bit TFT und kann dies bestätigen? Der Fehler müsste dann ja bei jedem Qt Embedded mit 24bit Farbtiefe auftrten.

Mit freundlichen Grüßen
Ghal Maraz
Antworten