|
|
||
|
|
||
| .. Datenblatt .. EA-Kit IDE .. Bildformat.G16 | ||
|
|
||
|
Das EA
eDIPTFT Display benutzt zur internen Darstellung von Bildern ein
Format, das von Electronic Assembly als .G16 Format angesprochen
wird. Informationen zu diesem Aufbau von Bildern sind ganz unten
zu finden.
Aus Angaben im Datenblatt ist bekannt, dass das G16-Format eine Transparenzfarbe zulässt. Zudem kann eine Datei bis zu 255 Einzelbilder enthalten. Zur Darstellung eines Pixels benutzt es 16Bit, also ein Word. Dabei entfallen je 5Bit auf die Farben rot (R) und blau (B) sowie 6Bit auf die Farbe grün (G). Damit sind 32 Rot-, 64 Grün- und 32 Blautöne darstellbar, insgesamt also 326432= 65536 RGB-Farben. Dem entsprechend belegt ein Vollbildbild für die Anzeige mindestens 4802722= 261.120 Byte = 255kByte wobei der Overhead, von mindestens 30Bytes hinzuaddiert werden muss. Die Bilder können durch die IDE komprimiert werden, was bei fotografischen Darstellungen nicht übermäßig effektiv sein muss. Das folgend dargestellte Bild benötigt komprimiert noch immer 221kByte.
Bei Grafiken und Zeichensätzen sollte sich der Kompressionsfaktor des RLE genannten Verfahrens wesentlich verbessern. Bildvorlagen können der EA-Kit Entwicklungsumgebung in den Formaten .BMP, .GIF, .JPG und .TGA angeboten werden. Die IDE wandelt sie in das .G16 Format, bevor sie zur Anzeige übertragen werden. Zu große Bilder werden proportional verkleinert, wobei die IDE-Direktive MaxSize: behilflich ist. Mit einer zweiten Direktive MaxColorDepth: kann die Farbtiefe auf 256, 16, 8 oder 2 Farben vermindert werden. Dies spart zwar Speicherraum, kann aber naturgemäß auch zu unschönen Bildern führen. |
|
|
|
|
| Aufbau einer Bilddatei im G16 Format: Dieser Text wurde im Verzeichnis C:\ELECTRONIC ASSEMBLY LCD Tools\Tools der EA-Kit IDE Programmdatei gefunden | ||
|
|
Die Bilddatei kann sowohl ein einzlenes Bild, als auch mehrere Bilder für
z.B. Fonts oder Animationen enthalten. Eine Transparentfarbe wird
unterstützt.
----------------------------------------------------------------------------
Aufbau des Bildheaders:
1. Byte: $1B ; ESC Eine Bilddatei beginnt immer mit dem Befehl
2. Byte: $55 ; 'U' zum Bilddownload an Koordinate 0,0
3. Byte: $4C ; 'L'
4. Byte: $00 ; x -Koordinate LOW-Byte
5. Byte: $00 ; " HIGH-Byte
6. Byte: $00 ; y -Koordinate LOW-Byte
7. Byte: $00 ; " HIGH-Byte
8. Byte: 'G' ; Kennzeichnung
9. Byte: '1' ; für eine Bild-, Font- oder Animationdatei im G16 Format
10. Byte: '6'
11. Byte: $xx ; Bit pro Pixel: z.B ..
; 1=Monochromes Bild; 4=16 Farben; 8=256 Farben
; 16= 65536 Farben High-Color RGB565
12. Byte: $xx ; Transparentfarbe
; 0=keine 1=es folgen Angaben zur Transparentfarbe
; ---------------------------------------|------------------
; 4/8 Bit-Bilder | 16 Bit Bilder
; ---------------------------------------|------------------
13. Byte: $xx ; Paletten Nr. der Transparentfarbe | \ RGB565-WORD der
14. Byte: $xx ; Anzahl vorhandener Farbpaletten (0=256)| / Transparentfarbe
15. Byte: $xx ; reserviert
16. Byte: $xx ; Größe der Bilder:
; 0=Unterschiedliche Bildgrößen
; 1=gleiche Breite
; 2=gleiche Höhe (z.B proportionale Fonts)
; 3=gleich grosse Bilder
17. Byte: $xx ; Erste Bild/Zeichen Nummer
18. Byte: $xx ; Letzte Bild/Zeichen Nummer
19. Byte: $xx ; \ Breite des breitesten Bildes/Zeichens Low-Byte
20. Byte: $xx ; / High-Byte
21. Byte: $xx ; \ Höhe des höchsten Bildes/Zeichens Low-Byte
22. Byte: $xx ; / High-Byte
----------------------------------------------------------------------------
Nach dem Header folgen, die Farbpaletteneinträge, die nur bei 4/8 Bit
Bildern auftreten. G16-Bilder schließen lückenlos an. Bei ihnen wird
jedes Pixel mit einem 16 Bit Word dargestellt, bei dem wie gezeigt,
die Bits die gewünschte Farbe vollständig beinhalten.
16-Bit RGB565-WORD: 1. Byte: \ Low-Value
2. Byte: / High-Value
Bits des RGB565-WORD:
Bit-Nr. 15 14 13 13 11 10 9 8 7 6 5 4 3 2 1 0
R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0
-------------- ------------------ --------------
R-Rot 5 G-Grün 6 B-Blau 5
----------------------------------------------------------------------------
Nach den Farbpaletten folgt die Bildtabelle mit je 8 Bytes pro Bild
1. Byte: $xx ; \ Breite des Bildes in Pixel Low-Byte
2. Byte: $xx ; / High-Byte
3. Byte: $xx ; \ Hhe des Bildes in Pixel Low-Byte
4. Byte: $xx ; / High-Byte
5. Byte: $xx ; \ Low-Byte
6. Byte: $xx ; > Offset der Bilddaten Mid-Byte
7. Byte: $xx ; / (ab Fileanfang) High-Byte
8. Byte: $xx ; BIT D6..D0 = 0..127 Wartezeit in 1/10s bei Animationen
; BIT D7 = 0 unkomprimierte Bilddaten
; = 1 RLE komprimierte Bildzeilen
---------------------------------------------------------------------------
Nach der Bildtabelle folgen die eigentlichen Bilddaten. Sie sind zeilenweise
von oben nach unten abgelegt. Die Anordnung der Pixel in einer Zeile
geschieht von links nach rechts
Aufbau einer Bildzeile (unkomprimiert):
1 Bit pro Pixel: das erste Pixel ist das Datenbit D7
(Monochrom) AnzahBytesProZeile = (Breite+7) / 8
4 Bit pro Pixel: das erste Pixel ist das HI-Nibble (D7..D4)
(16-Farben) das zweite Pixel ist das LO-Nibble (D3..D0)
AnzahBytesProZeile = (Breite+1) / 2
8 Bit pro Pixel: das erste Pixel ist das erste Byte
(256-Farben) AnzahBytesProZeile = Breite
16 Bit pro Pixel: das erste Pixel ist das erste RGB565-WORD
(65636-Farben) AnzahBytesProZeile = Breite * 2
----------------------------------------------------------------------------
Aufbau einer RLE komprimierten Zeile:
1. Bei Bildern mit 1, 4 und 8 Bit pro Pixel werden die Daten Byteweise
behandelt. Das erste Byte ist das Anzahl-Byte, das zweite Byte ist das
Wiederholbyte
Angaben des Anzahlbyte mit den Bits B7 .. B0
B7 = 0 es folgen Anzahl unkomprimierte Bytes
= 1 nachfolgendes Byte wird Anzahl mal wiederholt
B6..B0 = (0..127) +1 => Anzahl= 1..128
Angabe des Wiederholbytes, je nach B7
B7=0 - unkomprimierte Einzelbytes wie in Anzahl angegeben
B7=1 - ein Byte, das Anzahl mal wiederholt werden soll
Beispiel eine monochrome Zeile mit 128 Pixel wie ..
00 00 00 00 00 12 34 56 78 FF FF FF FF FF FF FF
wird zu
84 00 03 12 34 56 78 86 FF
------------------------------------------
2. Bei High-Color 16 Bit Bildern werden die Daten Pixelweise behandelt,
wobei jedes Pixel zwei Bytes umfasst. Auch hier ist das erste Byte
das Anzahl-Byte, es folgt ein Word des zu beschreibenden Pixels, also
ein Wiederholword
Angaben des Anzahlbyte mit den Bits B7 .. B0
B7 = 0 es folgen Anzahl unkomprimierte Words
= 1 nachfolgendes Word wird Anzahl mal wiederholt
B6..B0 = (0..127) +1 => Anzahl= 1..128
Angabe des Wiederholwords, je nach B7
B7=0 - unkomprimierte Einzelwords wie in Anzahl angegeben
B7=1 - ein Word, das Anzahl mal wiederholt werden soll
Beispiel eine 16-Bit RGB565 Zeile mit 16 Pixeln wie ..
0000 0000 0000 0000 0000 1234 5678 ABCD FFFF FFFF FFFF FFFF
FFFF FFFF FFFF FFFF
wird zu
84 0000 02 1234 5678 ABCD 87 FFFF
|
|
|
|
|
|
|
|
.de