Formats des fichiers d´anyflo

FORMAT DES FICHIERS de fonctions
FORMAT DES FICHIERS ASCII
FORMAT DES FICHIERS IMAGE
FORMAT DES FICHIERS zbuf
FORMAT DES FICHIERS DE CAPTEUR
FORMAT DES FICHIERS BINAIRES
FORMAT DES FICHIERS WAV

















































FORMAT DES FICHIERS de fonctions

fonction      ascii      image      zbuffer      capteur      binaire

La commande write func

         write func("A"); stocke les fonctions dans le fichier A.func

La commande read func

         read func("A"); charge les fonctions décrites dans le fichier A.func

Format des fichiers .func

         Ils obéissent à la syntaxe simplifiée et généralisée du langage anyflo.
Ils comportent:
         1) Des commantaires
         /* commentaires ... */
         2) Des fonctions
         nom(liste de paramètres formels séparés par des virgules)
         {
         texte de la fonction ...
         }
         Ils sont modifiables sous n´importe quel éditeur de texte.

FORMAT DES FICHIERS ASCII

La commande write ascii

         write ascii obj("nnn"); stocke les objets de type obj dans le fichier nnn.ascii.obj
Exemples:
         write ascii vol("A"); stocke les volumes dans le fichier A.ascii.vol
         write ascii view("VUE1"); stocke les vues dans le fichier VUE1.ascii.view
         etc...

La commande read ascii

         read ascii obj("nnn"); charge les objets de type obj décrits dans le fichier nnn.
Exemples:
         read ascii light("L"); charge les lumières décrites dans L.ascii.view
         read ascii fog("BB"); charge les brouillards décrits dans BB.ascii.fog
         etc...

Format des fichiers *.ascii.*

OBJET
OBJET
...
avec OBJET de la forme:
         TYPE
         {
         BLOC
         BLOC
         ...
         }
         avec TYPE = type d´un objet anyflo écrit en majuscule: FOG,LIGHT,VOL,...
         BLOC est un bloc de propriete de la forme:
         PROPRIETE
         {
         valeurs
         valeurs
         ...
         }
         avec PROPRIETE = propriété d´anyflo écrite en majuscule: COL,FAC,...

Remarques

         1) Les retours charriots ne sont pas signifiants.
         Ainsi:
         NUMERO
         {
         1
         }
         Peut s´écrire:
         NUMERO { 1 }
         2) Si une propriété n´est suivie que d´une seule valeur, on peut omettre les accolades.
         Ainsi:
         NUMERO { 1 }
         Peut s´écrire:
         NUMERO 1
         3) Les accolades peuvent même être omises s´il ny a pas d´ambiguité
         Ainsi:
         FAC
         {
         1 2 3 4
         5 6 7
         }
         Peut s´écrire:
         FAC
         1 2 3 4
         5 6 7
         Mais, pour des raisons de compatibilité, il est déconseillé d´utiliser cette tolérance.
         3) N´importe quelle propriété peut être codée par:
         NOM1 NOM2 ...
         {
         liste de paramètres
         ...
         }
         ou NOM est le nom d´une commande écrite en majuscule
Exemple:
         COL SOM
         {
         1 .75 .5 Couleur du sommet 1
         0 1 .75 Couleur du sommet 2
         * Pas de couleur affectée au sommet 3
         ...
         }
Exemple 1
VOL
         {
         NUMBER{1}
         FAC
         {
         1 2 6 5
         2 3 7 6
         3 4 8 7
         4 1 5 8
         5 6 7 8
         4 3 2 1
         }
         POI
         {
         -100 100 -100
         100 100 -100
         100 100 100
         -100 100 100
         -100 -100 -100
         100 -100 -100
         100 -100 100
         -100 -100 100
         }
         }
Définit le cube de numéro 1 et de côté 200.
Exemple 2
LIGHT
         {
         NUMBER{1}
         POI
         {
         -750 -500 -1000
         }
         COL
         {
         1 1 1
         }
         }
         LIGHT
         {
         NUMBER{2}
         POI
         {
         -500 -300 -750
         }
         COL
         {
         0 1 0
         }
         }
Définit la lumière 1 par défaut et la lumière 2 positionnée en (-500,-300,-750) et de couleur verte.

FORMAT DES FICHIERS IMAGE

La commande write image

        
         write image(id)name("A"); stocke l´image id en format compressé dans le fichier A.ima
         write image(id)name("A.jpg"); stocke l´image id en format compressé par Jpeg dans le fichier A.jpg
         write image(id)name("A.rgb"); Sous UNIX de SGI stocke l´image id en format rgb dans le fichier A.rgb (sur SGI)
         write image(id)name("A.bmp"); Sous WINDOWS stocke l´image id en format bmp dans le fichier A.bmp
         write image(id)name("A.raw"); stocke l´image id en format raw dans le fichier A.raw
Ce format, de lecture très rapide, est utilisé par les commandes:
interaction read image number
image read number write number ext format
         write image(id)name("A.tga"); Sous WINDOWS stocke l´image id en format tga dans le fichier A.tga. La couche alpha peut être remplie par:
image(num)generate format("A").

La commande read image

read image("A.ext");
         Lit dans la mémoire d´image le fichier A.ext
Remarque:
ext=ima: Format anyflo
ext=jpg: Format Jpeg
ext=rgb: Format rgb
ext=bmp: Format bmp
ext=raw: Format raw
etc...
read image(id)name("A.ext")
         Lit le fichier A.ext dans l´image id.

Format des fichiers *.ima

(En_tete)(Buffer)
         En-tête = (dim,IMAGE,num,code,dimx,dimy,dimt) de 7 entiers de 32 bits
         dim = dimension du fichiers en mots de 32 bits
         IMAGE = 28 (code de la fonction image)
         num = numéro de l´image
         code = 0: stockage par pixels, 1: Compression
         dimx = Largeur de l´image (en pixels)
         dimy = Hauteur de l´image (en pixels)
         dimt = 3 * dimx * dimy = nombre de composantes de l´image
         Si code = 0: Image non compressée:
         Buffer = (L1) ... (Ldimy): dimy lignes codant les pixels d´une ligne
         (Li) = ri,vi,bi
         ri = dimx unsigned char codant les composantes rouges
         vi = dimx unsigned char codant les composantes vertes
         bi = dimx unsigned char codant les composantes bleues
         Si code = 1: Image compressée:
         Buffer = (L1) ... (Ln) 0
         (Li) = Codage d´une ligne compressée en shorts:
         Li = (dim,y)(R)(V)(B)
         R = (ns,S1,S2,...,Sns): ns descriptions de segments
         Si = (ad,1,nss)(k1,k2,...,knss)
         ad = x (en short)
         nss = nombre de pixels contigus de couleurs différentes ki
         ou Si = (ad,0,nss)(SS1)(SS2)...(SSnss)
         SSi = (np,k)
         np = nombre de pixels (en short) de la couleur k
         k = couleur (unsigned char)

Format des fichiers *.raw


octets [0,3] codent, en ASCII, la largeur dimx
octets [4,7] codent, en ASCII, la hauteur dimy
dimx*dimy quadruplets d´octets (rvba) codent le rouge, le vert, le bleu et le canal alpha de chacun des dimx*dimy pixels de l´image.

FORMAT DES FICHIERS zbuf

La commande write zbuf

         write zbuf("A"); stocke le zbuffer dans le fichier A.zbuf
         write(1)zbuf("A"); stocke le zbuffer compressé dans le fichier A.zbuf

La commande read zbuf

         read zbuf("A"); charge le zbuffer décrit dans le fichier A.zbuf

Format des fichiers *.zbu

(En_tete)(Buffer)
         En_tête = (dim,ZBUF,num,code,dimx,dimy): 6 entiers de 32 bits
         dim = dimension du fichier en mots de 32 bits
         ZBUF = 25 (code de la fonction zbuf)
         num (non signifiant)
         code > 0: Non compressé:
         code = 1: 16 bits (short)
         Buffer = dimt shorts
         code = 2: 32 bits (float)
         Buffer = dimt float
         code < 0: Compressé:
         code = -1: 16 bits (short)
         Buffer code en shorts comme les images
         code = -2: 32 bits (float)
         Buffer code en longs et floats comme les images
         dimx = Largeur (en pixels)
         dimy = Hauteur (en pixels)

FORMAT DES FICHIERS DE CAPTEUR

Format .cap ascii

Fichier de capteurs de format  ascii (np captures de nc capteurs):
         c_1_1 c_1_2 … c_1_nc
         c_2_1 c_2_2 … c_2_nc
         …
         c_np_1 _cnp … c_np_nc

Format .per binaire

Fichier nn.per de capteur de format  binaire anyflo :
     4 longs : np enregistrements de dimp valeurs flottantes
         dimension totale=4+np
         type=A_FLOAT
         nombre d’enregistrements=np
         dimension d’un enregistrement=dimp
     np*dimp floats : valeurs du capteur
         c_1_1 c_1_2 … c_1_dimp
         c_2_1 c_2_2 … c_2_dimp
         …
         c_np_1 c_np_2 … c_np_dimp
Un tel fichier nn.per peut être généré par :
     interaction stock(np)name(«nn »)device ;
et lu par :
     interaction play(«nn »)device ;
en sollicitant un capteur qui déterminera dimp.

FORMAT DES FICHIERS BINAIRES

garer des informations de l´interpreteur

garer des informations d´anyflo

FORMAT DES FICHIERS WAV

wav file = header + datas

header

[0,3]: "RIFF" (4 octets)
[4,7]: file size (long 4 octets)
[8,11]: "WAVE" '(4 octets)
[12,15]: "fmt " '(4 octets)
[16,19]: format size (long)
[20,21]: format (long) (1)
[22,23]: channel (short 2 octets) (1,2)
[24,27]; sample rate (long) (44100,...)
[28,31]; byte rate (long) (176400)
[32,33]: block align (short) (8,16,32) (bits_per_sample*channels)/8=1,4,8 */
[34,35]: bits per sample (short) (8,16,32)
...
"data"
octets number (long) = file size - header size

datas

channel = 1
       data size = 1
              char ([-127,128]
       data size = 2
              short ([-32765,32766]
channel = 2
       data size = 1
              (char ([-127,128]) , (char ([-127,128])
       data size = 2
              (short ([-32765,32766]), (short ([-32765,32766])