LECTPL (3I)     version 4.6.9     March 2022

User Intro    Prog Intro    Liste des programmes    Liste des manuels
Table of Contents


NAME

lectpl, c_lectpl, c_plectpl, ecrpl, c_ecrpl, c_pecrpl - lecture, écriture de plans d'une image

SYNOPSIS

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;

DESCRIPTION

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.

EXEMPLE


/* 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;

"SEE ALSO"

Intro(3i) , lect(3i) , ligbit(3i)

DIAGNOSTICS

Ces programmes appellent imerror en cas d'erreur.