 [6] PASCAL.GER (2:2446/212.14@FidoNet)  PASCAL.GER 
 Msg  : #733 [218]                                                              
 From : Thomas Weidner                      2:310/15.33     11 Jul 94  20:04:00 
 To   : Robert Frana                                                            
 Subj : Format von PCX-Dateien                                                  

Hy Robert!

Aufbau von PCX Dateien :

Entwickler : ZSoft Corporation

Dateiendung : PCX, PCC

Erkennung : Byte 0 = $0A  ($ ist fuer Hex und in Pascal genau so einzutippen)
            Byte 1 = $00 OR $02 OR $03 OR $05
            Byte 2 < $02

>Die Daten sind im INTEL-Format abgespeichert!

PCX-Kopfdaten :

 Byte Typ      Beschreibung
--------------------------------------------------------------------
 $00  Byte    Dateikennung ist IMMER $0A
 $01  Byte    Versionsnr. 0 = Version 2.5
                          2 = Version 2.8 mit Palette
                          3 = Version 2.8 ohne Palette
                          5 = Version 3.0 mit Palette
 $02  Byte    Komprimierungsflag (0 = unkodiert / 1 = RLE kodiert)
 $03  Byte    Bits pro Pixel / Ebene
 $04  Word    XMin Linke Koodinate
 $06  Word    YMin Obere Koordinate
 $08  Word    XMax Rechte Koordinate
 $0A  Word    YMax Untere Koordinate
 $0C  Word    Horizontale Aufloesung (DPI = Dots per Inch vom Erzeuger)
 $0E  Word    Vertikale Aufloesung (DPI = Dots per Inch vom Erzeuger)
 $10  48 Byte Farbpalette fuer 16 Farben
 $40  Byte    Reserviert
 $41  Byte    Anzahl der Farbebenen (Maximal 4)
 $42  Word    Bytes pro Zeile (MUSS eine GERADE Zahl sein)
 $44  Word    Paletteninformation 1 = Farbe oder Schwarzweiss
                                  2 = Graustufen
 $46  58 Byte Leerbytes zum auffuellen des Headers
SUMME = 128 Byte

Palette :

 16 Farben (Bits pro Pixel = 1 / Ebenen = 4)
--------------------------------------------
 Je 3 Bytes pro Farbwert , abgespeichert in der Reihenfolge ROT GRUEN BLAU
 ! Wenn das Bild diese Palette nicht benoetigt dann sind zufaellige Werte
enthalten die keinesfalls in die Palette uebernommen werden duerfen !

 256 Farben (Bits pro Pixel = 8 / Ebenen = 1)
---------------------------------------------
Wenn das 769te Byte vor Dateiende $0C enthaelt, dann enthalten die
darauffolgenden Bytes die Palette. Gespeichert wie im 16 Farb Modus
( Rot Gruen Blau ).

Die Werte fuer die Palette liegen zwischen 0 und 255.

 Kodierung
-----------
Bei gesetztem Komprimierungsflag eine Lauflaengenkodierung.

SCHEMA:

 Hole Byte vom BUFFER nach A
 Komprimierungsflag gesetzt ?
 JA : Ist Bit 6 und Bit 7 von A gesetzt ?
      JA : M = A AND $3F  (Bits 0 bis 5 ausblenden)
           Hole Byte vom BUFFER nach C
      NEIN : M = 1
             C = A
      Schleife von A = 1 bis A = M
        Wert C 1 mal ausgeben
      Ende Schleife
 NEIN : Wert A 1 mal ausgeben.

Bei weiteren Fragen zu Grafikformaten meldet euch bei mir.

Bye Thomas !

---
 * Origin: ***  FutureSoft  -  Programmer's Point *** (2:310/15.33)

 [6] PASCAL.GER (2:2446/212.14@FidoNet)  PASCAL.GER 
 Msg  : #1142 [218] - 734                                                       
 From : THOMAS SEIFERT                      2:2452/171.5    11 Jul 94  09:28:00 
 To   : Arnd Empting                                                            
 Subj : Re: PCX-Format?                                                         

Arnd Empting@2:2464/66.2 meinte am 07.07.94
zum Thema "PCX-Format?":

Hi Arnd,

AE> Kann mir jemand sagen, wie ein Bild im PCX-Format aufgebaut ist, bzw. wie
AE> ich an die Information sonst drankommen kann?


Ich gebe Dir hier mal den Aufbau des Headers durch :

Der Header einer PCX-Datei ist insgesamt 128 Bytes gross.

BYTE 0 : Identifizierungbyte (10 (0A HEX) steht z.b. fuer ZSoft.pcx)
BYTE 1 : Versionsnummer ( 05 steht fuer Versionsnummer PC-Paintbrush 3.0)
BYTE 2 : Lauflaengenkodierung ( 01 steht fuer PCX-Lauflaengenkodierung)
         Ist der Algorithmus mit dem das PCX-Bild gepackt ist.
BYTE 3 : Anzahl der Bits/Pixel

Die Bytes 4-11 legen die Groesse des Bildes in Pixeln fest.
Ich geb Dir hier mal ein Beispiel fuer 320x200

BYTE 4 und 5 : kleinster Wert in X-Richtung (00 00)
BYTE 6 und 7 : kleinster Wert in Y-Richtung (00 00)
BYTE 8 und 9 : groesster Wert in X-Richtung (3F 01) = 319
BYTE 10 und 11 : groesster Wert in Y-Richtung (C7 00) = 199

Die Bytes 12-15 bezeichnen die horizontale und vertikale Aufloesung der
erzeugten Hardware.

BYTE 12 und 13 : horizontale Aufloesung (z.B 80 02 = 640)
BYTE 14 und 15 : vertikale Aufloesung   (z.B 01 E0 = 480)

Die Bytes 16 bis 63 enthalten die Informationen zur Farbpalette in
Dreiergruppen (gruen, blau, rot) ( Werte koennen zwischen 0 und 255
liegen)

BYTE 64 : reserviert zur Zeit immer 0.
BYTE 65 : enthaelt die Anzahl der Farbebenen.
BYTE 66 und 67 : Anzahl der Bytes/Zeile pro Farbebene.
BYTE 68 und 69 : Festlegung ob Farbe oder Graustufenbild (0 entspricht
                 einem Graustufenbild. Wird jedoch ein 256-Farben-Bild
                 verwendet, so steht hier ebenfalls eine 0.)

Die Bytes 70-128 sind nicht belegt.

Ab Byte 129 stehen nun die Pixeldaten. Bei einem 256-Farbenbild werden
zusaetzlich am Ende des Headers die restlichen Farbinformationen abgelegt.


Bis danne

Thomas




--- CrossPoint v3.0
 * Origin:  (2:2452/171.5)

 [3] PASCAL.GER (2:2446/212.14@FidoNet)  PASCAL.GER 
 Msg  : #3020 [549] - 2814 + 3683                                               
 From : HARALD SCHUSTER                     2:2464/42.7     10 Jul 94  13:46:00 
 To   : Robert Frana                                                            
 Subj : Re: Format von PCX-Dateien                                              

Hallo Robert Frana,

Du schriebst am 06.07.94 "Format von PCX-Dateien"

> Hallo ihr da drauen.
>
> Kann mir einer von euch sagen, wie der Aufbau einer PCX-Datei aussieht.

Jau

Ich kann Dir hier nur den Aufbau einer 265-Farb PCX-Datei erklren. Eine
vollstndige Turbo-Pascal Unit, mit der Du die Files auswhlen und
Anzeigen kannst hab ich auch. Schreib, wenn Du sie brauchst!

Aufbau: (alle Offsets in HEX)

Kennung BYTE Immer 10 bei PCX
Version BYTE 5 fr 256 Farben
Kodier  BYTE 1=RLE Kodierung
BPP     BYTE Bits pro Pixel (8)
XSTART  WORD X Koordinate oben links
YSTART  WORD Y Koordinate oben links
XENDE   WORD X Koordinate rechts unten
YENDE   WORD Y Koordinate rechts unten
XRES    WORD Horiz. Bildschirmauflsung
YRES    WORD Vertikale Bildschirmauflsung
PAL     48 Bytes Bei 256 einfach ignorieren
RES     BYTE reserviert
PLANES  BYTE Anzahl der Ebenen (1 bei 265)
BPR     WORD Anzahl der Bytes der unkompr. Zeile
PALTP   WORD Art der Palette 1=Farbe (auch graustufen 256)
DUMMY   58 Bytes

RLE Komprimierung

Wenn das Bild RLE komprimiert ist, ist die grte direkt darstellbare
Farbe die mit der Nummer 192. Jeder Wert grer als 192 wird als Repeat
Counter angesehen. 193 wre als ein repeat counter von 1 194 von 2. Das
auf einen Repeat Counter folgende Byte ist wieder eine Farbinformation.
Sie wird so oft ausgegeben, wie im Reapeat counter angegeben. Nach X-RES
Pixeln mu dann die neue Zeile begonnen werden. Es sind max. 63
Widerholungen mit RLE mglich. Bei 100 Punkten der Farbe 4 also 63*4 +
37*4.

Die Farbwerte der Paletteninformation sind normalcodiert. D. h. sie sind
fr 24-Bit Register gedacht. Da die VGA Karte aber nur 64 Grundfarben
darstellen kann (6 Bit pro Farbregister RGB) mu man den Wert der Palette
durch 4 teilen ( / oder shr).

Die Palette steht am Ende des Files in der Form RGB. Bei 256 Eintrgen
sind das also 768 Bytes. Kann man bequem mit fileseek(sizeof(dat)-768)
anpeilen.

Die von mir geschriebene Unit hat auch eine bequeme Buffer-Verwaltung und
steht in punkto Speed kommerziellen Programmen in nix nach. Warum aber
PCX? GIF is doch viel effektiver. Hab auch da ein Proggi fr Pascal.

Ich habs langsam satt, da ich immer brav schreibe aber nie selbst Mail
bekomme. Schreib mir doch bitte, ob das hier bei Dir angekommen ist.



Bis dann

Harald 8-)

--- CrossPoint v3.02
 * Origin:  (2:2464/42.7)

 [3] PASCAL.GER (2:2446/212.14@FidoNet)  PASCAL.GER 
 Msg  : #3683 [549] - 3020                                                      
 From : Florian Reitmeir                    2:317/2.52      12 Jul 94  23:20:00 
 To   : Robert Frana                                                            
 Subj : Re: Format von PCX-Dateien                                              

Hi Robert !!
============
RF> Oder ist eiene PCX-Datei ganz anders aufgebaut ?
RF> Wenn JA dann wie ?
RF> Wo finde ich in diesem Code die Palette und wo die Farbe der einzelnen
RF> Pixel ?

Nun das Format einer PCX Datei:

Kennung     byte    Kennungsbyte fr PCX-Datein immer 10
Version     byte    Versionsnummer des PCX-Formates 5=Version 3.0 mit 256
                    Farben
Kodierung   byte    Art der Kodierung 1=standart Kodierung RLE
Bits_pixel  byte    8=256 Farben
x_Start     word
y_start     word
x_ende      word
y_ende      word
palette     48 bytes    16-Farbenpalette bei 256 Farben ohne Bedeutung
reserviert  byte
anz_ebenen  byte        Farbebenen bei 256 Farben =1
dummy       58 bytes

NUN BILDDATEN:
jedes byte eine Farbe, sind aber gleichkodiert wie bei 16 Farben(also RLE ohne
Bitplanes)
Nach den Daten:
3*256 byte Farbpalette immer RGB jeder Farbe
           VORSICHT: ZUM PALETTEN SETZEN MIT DEM DAC MUESSEN DIE
                     FARBPALETTENWERTE um 2 Bits nach rechts geschoben werden
                     oder mit 4 Multipliziert

Ich hoffe ich konnte helfen.
ciao Flo
--- Yuppie v2.10
 * Origin: Dummheit ist ein Hohlmass. (2:317/2.52)

