ENTRÉES SORTIES

au clavier
avec le disque
périphériques

















































Entrées sorties au clavier

Sorties

       La commande print(expr) ou $expr imprime l´évaluation de expr.
Exemples:
$(1+2*3); imprime 7.
$read("toto") imprime le contenu du fichier ascii de nom toto.

Entrées

         La commande input retourne l´évaluation d´une commande tapée au clavier.
Exemples:
$input;
         =1.2 (tapé au clavier).
         Imprime: 1.2
if(input == 1) $ "UN" else $"AUTRE";
         Imprime UN si on répond 1 sinon product AUTRE.
x=input("entree"); Imprime le message "entree" et attend une valeur tapée au clavier qui sera affectée à la variable x.

Échanges avec le disque

Chemin
Non formatés
Formatés par défaut
Formatés
Objets
Codage
Images
Zbuffers
Accès direct
Protection en écriture

Chemin

La recherche d´un fichier a lieu, dans l´ordre:
       selon le chemin s´il est précisé chemin/nom.ext.
       Dans le dossier de l´exécutable d´anyflo ./nom.ext.
       Dans le dossier de l´utilisateur uti/nom.ext.
       Dans le dossier de l´environnement env/nom.ext.
Voir directory.

Non formatés

L´écriture de données se fait selon le format de celles-ci.
La lecture ne peut se faire que si l´on connait ce format avec:
read name("nnn")format("fff");
Exemples:
write("A BC DEF")name("nnn") écrit A BC DEF en caractères ascii dans le fichier de nom nnn.
read name("nnn")format("char") retourne A BC DEF.
read name("nnn") retourne aussi A BC DEF (format "char" par défaut).

write[1,4]name("nnn") écrit 1,2,3,4 en floats dans le fichier de nom nnn.
read name("nnn")format("float") retourne 1,2,3,4.

Formatés par défaut

Tout fichier d´extension ext est supposé contenir des données de format ext.
Exemples:
nnn.char est supposé contenir des caractères ascii.
read(nnn.char) retourne le contenu ascii du fichier nnn.char.

nnn.short est supposé contenir des shorts (entiers 16 bits).
read(nnn.short) retourne le contenu en shorts du fichier nnn.char.

nnn.long est supposé contenir des longs (entiers 32 bits)..
read(nnn.long) retourne le contenu en longs du fichier nnn.char.

nnn.float est supposé contenir des floats (32 bits).
read(nnn.float) retourne le contenu en floats du fichier nnn.char.

nnn.double est supposé contenir des doubles (64 bits).
read(nnn.double) retourne le contenu en doubles du fichier nnn.char.

nnn.anyflo est supposé contenir des datas au format anyflo.
read(nnn.anyflo) retourne le contenu en format anyflo du fichier nnn.anyflo.

Formatés

Afin de pouvoir lire et écrire des données compatibles avec n´importe quel application, les échanges formatés permettent de forcer un format, quelque soit l´extension du fichier.
write(expr)name("nnn")format("fff") écrit expr selon le format fff dans le fichier nnn.
read name("nnn")format("fff") retourne le contenu du fichier nnn selon le format fff.
Exemples:
write(expr)name("nnn")format("char") écrit expr en caractères ascii dans le fichier nnn.
read name("nnn")format("char") retourne le contenu du fichier nnn en caractères ascii.

write(expr)name("nnn")format("short") écrit expr en shorts dans le fichier nnn.
read name("nnn")format("short") retourne le contenu du fichier nnn en shorts.

write(expr)name("nnn")format("long") écrit expr en longs dans le fichier nnn.
read name("nnn")format("long") retourne le contenu du fichier nnn en longs.

write(expr)name("nnn")format("float") écrit expr en floats dans le fichier nnn.
read name("nnn")format("floatcode> retourne le contenu du fichier nnn en floats.

write(expr)name("nnn")format("double") écrit expr en doubles dans le fichier nnn.
read name("nnn")format("double") retourne le contenu du fichier nnn en doubles.

write(expr)name("nnn")format("anyflo") écrit expr en format anyflo dans le fichier nnn.
read name("nnn")format("anyflo") retourne le contenu du fichier nnn en format anyflo.

Garer et read des objets

write com name("name"); gare tous les objets de type com dans le fichier binaire nnn.ext (écriture valable pour write et read pour n´importe quel objet d´anyflo).
L´extension ext du fichier caractérise le type de l´objet:
       fog: pour les brouillards.
       field: pour les champs.
       gen: pour les génétiques.
       light: pour les lumièes.
       mem: pour les mémoires.
       menu: pour les menus.
       object: pour les objets.
       network: pour les réseaux.
       vol: pour les volumes.
       view: pour les vues. Exemples:
write alea name("nnn"); gare le tableau des aléatoires dans nnn.ale.
read alea name("nnn"); charge le tableau des aléatoires avec le contenu de nnn.ale.

write func name("nnn"); gare toutes les fonctions dans nnn.func.
read func name("nnn"); lit les fonctions de nnn.func.

write func("nom1")name(nom2"); gare la fonction nom1 dans nom2.func.
read func name("nnn"); lit les fonctions de nnn.func.

write history name("nnn"); gare l´history dans nnn.history.
read history name("nnn"); lit l´history contenu dans le fichier nnn.history.

write var name("nnn"); gare toutes les variables dans nnn.var.
x=read name("nnn"); donne à la variable x la valeur contenue de nnn.var.

garre type name("nnn"); gare les types dans le fichier nnn.type.
read type "nnn"; initialise les types avec ceux décrits dans le fichier nnn.type.

write obj name("nnn") gare tous les objets
dans le fichier nnn.obj.
Exemples:
write vol name("nnn") gare tous les volumes dans nnn.vol
read light name("nnn") lit les lumières décrites dans nnn.light

Codage

Les fichiers binaires sont ainsi structurés:
       numéro: 1 long.
       dim: dim long. Si dim > 1 le nom est codé sur dim-1 longs.
       env,type: 2 longs (type principal).
       env2,type2: 2 longs (type secondaire) .
       nx,ny,nz,close,validate: 5 longs.
       dim: dim long (dimension du bloc de propriétés).
       AD,nb,A: 3 longs (nb propriétés).
       (dim,type,np,dimp)(paramètres): bloc_1 de propriétés.
       ...
       (dim,type,np,dimp)(paramètres): bloc_nb de propriétés.

Images

L´extension du nom précise le type de codage:
write image(id)name("xxx.ext"); gare l´image id dans le fichier image de nom nnn.ext selon le format ext qui peut être:
ima format anyflo par défaut.
jpg format jpeg.
bmp format bit map.
tga format tga.

Zbuffers

L´extension précise la taille des mots:
       zbuf1: shorts (16 bits).
       zbuf2: floats (32 bits).

Accès direct

On peut accéder directement au contenu d´un fichier par les commandes:
id=fopen("nnn") qui retourne un identificateur de fichier.
w=getword(id) qui retourne un mot.
fwrite(id,"datas") qui écrit datas.
w=fread(id,np) qui retourne np octets.
fclose(id); ferme un fichier.

Protection en écriture

Les commande no write, yes write, et status write(s) permettent de préciser la protection des fichiers en écriture.

EN DEVELOPPEMENT

Garer des images antialiasées (haute definition)

         Lancer anyflo avec l´option:
         anyflo hau=2
         L´image en mémoire centrale a 4 fois la taille vidéo. Lors d´un ´write image´, cette image sera convolée à la taille video.
         Il sera nécessaire de construire les bases de données en fonction de la taille de la memory d´image. Par exemple:
         d=dim screen;D=.1*d[0]; Fournit une base D independante de l´image
         On peut préciser la taille de l´image antialiasée (dimx,dimy) et le facteur d´antialiasage k:
         anyflo x=dimx y=dimy gra=0 mem=1 hau=k
Remarque:          write com1 com2 ... "nnn": Gare les objets de type comi dans les fichiers nnn.comi
Exemple:
write vol light "toto"; Gare tous les volumes dans toto.vol, toutes les lumières dans toto.light

Périphériques.

Principe:

Périphériques standards
         Des périphériques standards existent (selon la machine et le système):
                  mouse
                  audio
                  video
                  ...
Périphériques utilisant des drivers
device(id)type("TYP")name("NOM")
TYP est:
         FIC pour les fichiers
         MEM pour la mémoire partagée
         COM pour les ports séries
         TCP pour les sockets en format TCP/IP
         UDP pour les sockets en format UDP
         MID pour les prises MIDI
NOM est un nom dépendant du type
Remarque:
         Un périphérique déjà initialisé ne peut pas être redéfini, sauf à faire ´device(num) end´.
Exemple:
         webcam.js lance le driver exe/WebCam.exe utilisant la méloire partagée de nom WEBCAM. Il suffit alors de déclarer, dans anyflo, un périphérique de type MEM:
device(id)type("MEM")name("WEBCAM");
La commande device(id)var; retourne alors une image de définition 8 par 8.

ENTREES SORTIES EN MODE INTERACTION

Interaction ascii

see