PPPPP       CCCC     X   X
                     P    P     C    C    X   X
                     P    P     C          X X
                     PPPPP      C           X
                     P          C          X X
                     P          C    C    X   X
                     P           CCCC     X   X

     PCX FORMÁT

           PCX je  sice jeden z nejrozšířenějších  grafických formátů, ale
     když jsem  o něm sháněl,  informace tak jich  moc nebylo, a  proto se
     s vámi chci podělit o své zkušenosti.
           Jako většina  formátu má na  svém začátku hlavičku.  U PCXka je
     128bytová,  ale  je  využito  jen  74  bytů  (autoři  ji  chtěli  asi
     rozšířit).


    Byte | Velikost  |   Popis/poznámky
    -----+-----------+-------------------------------------------
      0  |    1      |  Konstantně 10 = ZSoft.pcx
      1  |    1      |  Informace o versi
         |           |   0 = Verse 2.5 PC Paintbrush
         |           |   2 = Verse 2.8
         |           |   3 = Verse 2.8
         |           |   4 = Verse  3.0 PC Paintbrush
         |           |    pro Wokna
         |           |   5 = Verse 3.0
         |           |    (nejrozšířenější)
      2  |    1      |  1 = .PCX
      3  |    1      |  počet Bytů na pixel
         |           |   (1, 2, 4, nebo 80
      4  |    8      |  Rozměry: XMin,YMin,XMax,YMax
     12  |    2      |  Horizontální rozlišení v DPI
     14  |    2      |  Vertikální rozlišení v DPI
     16  |   48      |  Paleta (jen pro méně než 16
         |           |   barev)
     64  |    1      |  Reservováno
     65  |    1      |  Počet plánů barev(u obrazů s více než 256 barvami)
     66  |    2      |  Bytů na řádek
     68  |    2      |  Jak se má paleta interpretovat
         |           |            1 = Barevně
         |           |            2 = Odstíny šedi
     70  |    2      |  Horizontální velikost obrazu v bodech
     72  |    2      |  Vertikální velikost obrazu v bodech
     74  |   54      |  Vyplňuje na 128 Bytů

     DPI = dots per inch (bodů na palec)


          Ale na  obrázku jsou nejdůležitější  obrazová data. V  PCX jsou
     komprimována tak,  že když jsou  horní dva bity  = 1 tak  ostatních 6
     bitů určuje kolikrát bude použit další byte. Máte-li na obrázku velké
     úseky stejné  barvy, je tato  komprese účinná. Problémy  nastanou pro
     barvy s číslem  větším než 192, ty potom  totiž zabírají dvakrát více
     místa.

     Takhle nějak může vypadat rutinka na přečtení barvy

     ch=readz(f);               //čte znak
     cou=1;                     //nastavuje počet opakování na 1
     if (0xC0==(0xC0 & ch)){    //testuje horní dva bity 0xC0 = 11000000
            cou=0x3F & ch;      //kopíruje dolních 6 bitů do cou
            ch=readz(f);        //načítá další znak do informace o barvě
     }

     Vysvětlivky : cou   - počet opakování
                   ch    - informace o barvě
                   readz - čte znak
                   & - bitový AND

           Další  důležitou částí  je paleta.  Pro obrázky  s více  než 16
     barvami je uložena na konci souboru, a to 3*PocBarev od konce souboru
     (nejčastěji  256*3=678).  Je-li  paleta  16.  barevná  je  uložena  v
     hlavičce souboru

     A  to jest  vše. Přikládám  zde program,  který načte  256 barevný
     obrázek (do 320*200 bodů) a zobrazí
     jej. (Omlouvám se za některé prasárny, ale lepší už to asi nebude)

     Upozornění k programu:
                         a) psal jsem ho já, takže není jistý, jestli bude
                            fungovat
                         b) nebyl důkladně testován takže viz. a)
                         c) funguje jen pro 256barevný soubor
                         d) v Borland C++ 3.0 lze určitě zkompilovat
                         e) je v C++ protože Pascal už neumim
                         f) máte-li dotazy či poznámky, posílejte je do
                            redakce na známou adresu.



                                                                    HIPP

     (informace  přejaty  z  "ZSoft  PCX  File  Format Technical Reference
     Manual)
     (omlouvám se za krátkost článku, ale PCXko je opravdu jednoduchý)


            výheň