006
30.12.2003, 19:10 Uhr
0xdeadbeef
Gott (Operator)
|
C++: |
rgb = (((u16) red) << 10) | (((u16) green) << 5) | blue
|
Oder besser gleich in einer Funktion (spart die casts):
C++: |
u16 rgb(u16 red, u16 green, u16 blue) { return (red << 10) | (green << 5) | blue; }
|
Ich gehe dabei davon aus, dass die Werte von red, green und blue auch in 5 bit passen würden. Wenn du dich gegen bogus-input absichern willst, machs so:
C++: |
u16 rgb_safe(u16 red, u16 green, u16 blue) { return ((red & 31) << 10) | ((green & 31) << 5) | (blue & 31); }
|
Das frißt dann allerdings auch mehr Rechenzeit. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 30.12.2003 um 19:13 Uhr von 0xdeadbeef editiert. |