User Intro
Prog Intro
Liste des programmes
Liste des manuels
Table of Contents
lectpl, c_lectpl, c_plectpl, ecrpl, c_ecrpl, c_pecrpl - lecture, écriture de plans d'une image
subroutine lectpl(nf,iy,iz,nplan,nligne,buf)
integer nf,iy,iz,nplan,nligne,buf(1)
subroutine ecrpl(nf,iy,iz,nplan,nligne,buf)
integer nf,iy,iz,nplan,nligne,buf(1)
#include <inrimage/image.h>
lectpl_(nf,iy,iz,nplan,nligne,buf)
struct image **nf;Fort_int *iy,*iz,*nplan,*nligne; char *buf;
c_lectpl(nf,iy,iz,nplan,nligne,buf)
struct image *nf;int iy,iz,nplan,nligne; void *buf;
c_plectpl(nf,iy,iz,nplan,nligne,buf,lock)
struct image *nf;int iy,iz,nplan,nligne,lock; void *buf;
ecrpl_(nf,iy,iz,nplan,nligne,buf)
struct image **nf;Fort_int *iy,*iz,*nplan,*nligne; char *buf;
c_ecrpl(nf,iy,iz,nplan,nligne,buf)
struct image *nf;int iy,iz,nplan,nligne; void *buf;
c_pecrpl(nf,iy,iz,nplan,nligne,buf,lock)
struct image *nf;int iy,iz,nplan,nligne,lock; void *buf;
lectpl, c_lectpl, c_plectpl
lisent dans l'image dont la stucture est pointée par nf,
à partir du plan iz, le nombre de plans indiqué par
nplan. Le nombre de lignes à lire dans chaque plan est
indiqué dans nligne, et la ligne de départ par iy.
iz et iy sont comptés à partir de 1.
Avec c_plectpl, si lock est non nul, l'opération sera
protégée par mutex-lock,
sur les systèmes supportant la programmation parallèle avec pthreads.
Le résultat de la lecture est renvoyé dans buf, chaque bloc de nligne
d'un plan est rangé à une
frontière d'objet de type t_aligned.
La taille des sous-buffer peut être obtenue par le programme
buffer_size.
Par exemple, l'adresse des données du kème plan lu sera :
buf + (k - 1) * buffer_size(lfmt,nligne).
ecrpl, c_ecrpl, c_pecrpl
font le même travail en écriture.
/* size = nb octets du buffer initial, npl = nb de plans a lire */
Fort_int ibs, nbits; int n, bufsize;
nbits = ligbit(lfmt,&ibs);
n = buffer_split(size,npl);
nblig = n / (nbits / 8); /* nb lignes possibles pour 1 plan */
if (nblig <= 0) imerror(8,"Pas assez de memoire allouee\n");
if(nblig > lfmt[I_NDIMY]) nblig = lfmt[I_NDIMY];
bufsize = buffer_size(lfmt,nblig); /* taille buffer pour 1 plan */
c_lectpl(nf,1,1,npl,nblig,buf);
....
bufk = buf + (k - 1)* bufsize;
Intro(3i)
, lect(3i)
, ligbit(3i)
Ces programmes appellent imerror en cas d'erreur.