Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals

acrread.c File Reference

#include <string.h>
#include "idio.h"
#include "idprint.h"
#include "idacr-private.h"
#include "iddcm.h"
#include <stdio.h>
#include <stdlib.h>
#include "idgen.h"
#include "idsig.h"
#include "idcnt.h"
#include "idima.h"
#include "idvol.h"
#include "idseq.h"
#include "idacr.h"
#include "idacr-restricted.h"
#include "iderr.h"

Go to the source code of this file.

Defines

#define CCS(Type)
#define CCC(Type)
#define CCC2(Type)
#define CCI(Type, TailleType)
#define CCV(Type)
#define CCQ(Type)

Functions

int _IdAcrRecupLgr (FILE *fp, int *)
 recupere la longueur d'un champ DICOM. (le fichier doit deja avoir ete ouvert, _IdAcrCheckSwap(FILE * fp) avoir ete appelle) et la partie 'group' ainsi que la partie 'elem' de l'acr_element doivent avoir ete lues.

int _IdAcrIsAcrLibido (FILE *fp, char *bufbid)
short int SWAP_SHORT (short int)
long int SWAP_LONG (long int)
void * IdAcrReadFileIntoVector (char *filename, int type, int premIm, int dernIm, void *vector)
 Lecture d'un fichier (IMAGE) ACR/DICOM dans un Vecteur existant deja.

int IdAcrInquireInfoTot4 (char *filename, unsigned short int *typObj, unsigned short int *typLibido, unsigned short int *typData, int *NX, int *NY, int *NZ, int *NT, int *offset, int *nbFrames, int *codeSwap, int *bitsAllocated, int *bitsStored, int *highBit, int *signe)
 Retourne diverses info stockees dans l'entete ACRNEMA ou DICOM.

long _IdAcrGetPixelOffset (FILE *fp)
long IdAcrGetPixelOffsetFromFile (char *filename)
 Retourne l'offset pour atteindre le groupe des Pixels stocke dans l'entete ACRNEMA ou DICOM.

void * IdAcrReadFile (char *filename, int type)
 Lecture d'un fichier de type ACR NEMA ou DICOM.

void * IdDcmCVReadFile (char *filename, int type, int numPremIm, int numDernIm)
 Lecture d'un fichier de type ACR/DICOM dans un vecteur existant deja.

ACR_ELEMENTIdAcrInquireHeader (char *filename, int mode)
 Retourne TOUTES les info sur l'objet stocke dans un fichier ACRNEMA. sous forme d'une liste d'ACR_ELEMENT. la 'valeur' de chaque element est suivie d'un ZERO binaire, car il est IMPOSSIBLE ( pour IdAcrInquireHeader) de savoir, dans le cas d'un element d'un groupe prive (impair), si un element de longueur 2 est un UNSIGNED SHORT INT ou un CHAR *... si un element de longueur 4 est un UNSIGNED LONG ou un CHAR *...

short int _IdAcrCheckType (FILE *fp, char *bufbid, int ity, int inb, int itypObj)
int IdAcrInquireInfo (char *filename, unsigned short int *typObj, unsigned short int *typData, int *NX, int *NY, int *NZ, int *offset)
int IdAcrInquireInfoTot (char *filename, unsigned short int *typObj, unsigned short int *typLibido, unsigned short int *typData, int *NX, int *NY, int *NZ, int *NT, int *offset)
int IdAcrInquireInfoTot2 (char *filename, unsigned short int *typObj, unsigned short int *typLibido, unsigned short int *typData, int *NX, int *NY, int *NZ, int *NT, int *offset, int *nbFrames)
int IdAcrInquireInfoTot3 (char *filename, unsigned short int *typObj, unsigned short int *typLibido, unsigned short int *typData, int *NX, int *NY, int *NZ, int *NT, int *offset, int *nbFrames, int *codeSwap)
void _IdAcrPositionSwap (FILE *fp)

Variables

int __ID_CardioVascCurieux
int __ID_offset
int __Papyrus
unsigned short int __NumeroGroupePrecedent
int __TrueDicom
int __ExplicitVR


Define Documentation

#define CCC Type   ) 
 

Value:

if(!fread(&((Type)pco)[0],IdCntDimX(pco)*IdSizeOfType(pco),1,fp)) \ \ { \ IdCntFree(pco); \ IdErrPrintf("echec en lecture Contour\n"); \ return(0); \ }

Definition at line 259 of file acrread.c.

Referenced by IdDcmReadFileIntoVectorFromDcmHdr().

#define CCC2 Type   ) 
 

Value:

if(!fread(&((Type)pco)[0],IdCntDimX(pco)*IdSizeOfType(pco)>>1,1,fp))\ \ { \ IdCntFree(pco); \ IdErrPrintf("echec en lecture Contour\n"); \ return(0); \ }

Definition at line 269 of file acrread.c.

#define CCI Type,
TailleType   ) 
 

Value:

{ \ if (vector != NULL) { /* on a une contrainte de rapidite */ \ if(!fread(vector,(int)dim[0]*(int)dim[1]*TailleType,1,fp)){ \ IdPrintf("echec en lecture Image dans Vecteur \n"); \ return(0); \ } \ } else { \ for(i=0;i<IdImaDimY(pim);i++){ \ if(!fread(((Type)pim)[i],IdImaDimX(pim)*IdSizeOfType(pim),1,fp)) { \ IdPrintf("echec en lecture Image [i : %d] lgr de %d \n", \ i,IdImaDimX(pim)*IdSizeOfType(pim)); \ IdImaFree(pim); \ return(0); \ } \ } \ } \ } \

Definition at line 278 of file acrread.c.

Referenced by IdDcmReadFileIntoVectorFromDcmHdr().

#define CCQ Type   ) 
 

Value:

for(k=0;k<IdSeqDimT(pse);k++) \ for(j=0;j<IdSeqDimZ(pse);j++) \ for(i=0;i<IdSeqDimY(pse);i++) \ if(!fread(((Type)pse)[k][j][i],IdSeqDimX(pse)*IdSizeOfType(pse),1,fp)) \ { \ IdSeqFree(pse); \ IdErrPrintf("echec en lecture Sequence\n");\ return(0); \ }

Definition at line 307 of file acrread.c.

Referenced by IdDcmReadFileIntoVectorFromDcmHdr().

#define CCS Type   ) 
 

Value:

if(!fread(&((Type)psi)[0],IdSigDimX(psi)*IdSizeOfType(psi),1,fp)) \ \ { \ IdSigFree(psi); \ IdErrPrintf("echec en lecture Signal\n");\ return(0); \ }

Definition at line 250 of file acrread.c.

Referenced by IdDcmReadFileIntoVectorFromDcmHdr().

#define CCV Type   ) 
 

Value:

for(j=0;j<IdVolDimZ(pvo);j++) \ for(i=0;i<IdVolDimY(pvo);i++) \ if(!fread(((Type)pvo)[j][i],IdVolDimX(pvo)*IdSizeOfType(pvo),1,fp)) \ { \ IdVolFree(pvo); \ IdErrPrintf("echec en lecture Volume\n"); \ return(0); \ }

Definition at line 297 of file acrread.c.

Referenced by IdDcmReadFileIntoVectorFromDcmHdr().


Function Documentation

short int _IdAcrCheckType FILE *  fp,
char *  bufbid,
int  ity,
int  inb,
int  itypObj
 

Definition at line 1079 of file acrread.c.

References _IdAcrGetElementLength(), _IdAcrReadElement(), DEBUG, IdErrPrintf(), IdPrintf(), TA_TY_CHAR, TA_TY_COMPLEX_DOUBLE, TA_TY_DOUBLE, TA_TY_FLOAT, TA_TY_LONG, TA_TY_SHORT, TA_TY_UCHAR, TA_TY_ULONG, TA_TY_USHORT, TY_CHAR, TY_COMPLEX_DOUBLE, TY_DOUBLE, TY_FLOAT, TY_LONG, TY_RGB, TY_SHORT, TY_UCHAR, TY_ULONG, and TY_USHORT.

Referenced by IdAcrInquireInfoTot4().

long _IdAcrGetPixelOffset FILE *  fp  ) 
 

Definition at line 677 of file acrread.c.

References __ID_CardioVascCurieux, __ID_offset, _IdAcrCheckSwap(), _IdAcrReadElement(), _IdAcrRecupLgr(), DEBUG, IdPrintf(), SEEK_CUR, SEEK_SET, and SWAP_SHORT().

Referenced by IdAcrGetPixelOffsetFromFile(), and IdAcrInquireInfoTot4().

int _IdAcrIsAcrLibido FILE *  fp,
char *  bufbid
 

Definition at line 1231 of file acrread.c.

References __TrueDicom, and _IdAcrReadElement().

Referenced by IdAcrInquireInfoTot4().

void _IdAcrPositionSwap FILE *  fp  ) 
 

Definition at line 1255 of file acrread.c.

References _IdAcrCheckSwap().

uint32_t _IdAcrRecupLgr FILE *  fp,
int *  skippedLength
 

recupere la longueur d'un champ DICOM. (le fichier doit deja avoir ete ouvert, _IdAcrCheckSwap(FILE * fp) avoir ete appelle) et la partie 'group' ainsi que la partie 'elem' de l'acr_element doivent avoir ete lues.

Parameters:
fp File descriptor dans lequel effectuer la recherche.
skippedLength nombre d'octets que l'on saute qd la lecture est finie
Returns:
longueur du champ

Definition at line 1060 of file acrutil.c.

References __ExplicitVR, _ID_dicom_vr, DEBUG, IdPrintf(), SWAP_LONG(), and SWAP_SHORT().

long IdAcrGetPixelOffsetFromFile char *  filename  ) 
 

Retourne l'offset pour atteindre le groupe des Pixels stocke dans l'entete ACRNEMA ou DICOM.

Parameters:
filename Nom du Fichier.
Returns:
longueur de l'entete.

Definition at line 809 of file acrread.c.

References _IdAcrGetPixelOffset(), ID_RFILE_BIN, and IdErrPrintf().

ACR_ELEMENT* IdAcrInquireHeader char *  filename,
int  mode
 

Retourne TOUTES les info sur l'objet stocke dans un fichier ACRNEMA. sous forme d'une liste d'ACR_ELEMENT. la 'valeur' de chaque element est suivie d'un ZERO binaire, car il est IMPOSSIBLE ( pour IdAcrInquireHeader) de savoir, dans le cas d'un element d'un groupe prive (impair), si un element de longueur 2 est un UNSIGNED SHORT INT ou un CHAR *... si un element de longueur 4 est un UNSIGNED LONG ou un CHAR *...

L'utilisateur desirant connaitre connaitre la valeur d'un element particulier saura, en consultant le 'Conformance Statement' de l'imageur sur lequel il travaille le type de cet element. il procedera alors comme suit:

unsigned short int gr =0x0010; .. par exemple .. unsigned short int num=0x0010; ACR_ELEMENT *elem=_IdAcrFindElement(liste,gr,num); uint32_t lgr = elem->length;

Selon que :

c'est un char * de lgr !=2, !=4 On l'utilisera directement : printf("%s\n",elem->value);

c'est un char * de lgr =4 On le Swappera : *(long *)elem->value=SWAP_LONG((*(long*)elem->value)); printf("%s\n",elem->value); c'est un char * de lgr =2 On le Swappera : *(long *)elem->value=SWAP_SHORT((*(long*)elem->value)); printf("%s\n",elem->value); c'est un short int On le castera : unsigned short int x = *(short int *) elem->value;

c'est un long int On le castera : unsigned long x = *(unsigned long *) elem->value;

Parameters:
filename Nom du Fichier ACR-NEMA ou DICOM.
mode = 1 : on charge EGALEMENT les Elements 'longs' (>5000) , = 0 : on NE CHARGE PAS les Elements 'longs' (>5000) ,
Returns:
Pointeur vers une ensemble chaine d'ACR_ELEMENT.

Definition at line 1029 of file acrread.c.

References __ID_CardioVascCurieux, __NumeroGroupePrecedent, _IdAcrAppendElement(), _IdAcrCheckSwap(), _IdAcrReadNextElement(), ACR_ELEMENT, acr_element::group, ID_RFILE_BIN, IDERR_NON_ACR_FILE, IdErrno, IdErrPrintf(), and SEEK_SET.

int IdAcrInquireInfo char *  filename,
unsigned short int *  typObj,
unsigned short int *  typData,
int *  NX,
int *  NY,
int *  NZ,
int *  offset
 

Definition at line 1178 of file acrread.c.

References IdAcrInquireInfoTot4().

int IdAcrInquireInfoTot char *  filename,
unsigned short int *  typObj,
unsigned short int *  typLibido,
unsigned short int *  typData,
int *  NX,
int *  NY,
int *  NZ,
int *  NT,
int *  offset
 

Definition at line 1194 of file acrread.c.

References IdAcrInquireInfoTot4().

int IdAcrInquireInfoTot2 char *  filename,
unsigned short int *  typObj,
unsigned short int *  typLibido,
unsigned short int *  typData,
int *  NX,
int *  NY,
int *  NZ,
int *  NT,
int *  offset,
int *  nbFrames
 

Definition at line 1207 of file acrread.c.

References IdAcrInquireInfoTot4().

int IdAcrInquireInfoTot3 char *  filename,
unsigned short int *  typObj,
unsigned short int *  typLibido,
unsigned short int *  typData,
int *  NX,
int *  NY,
int *  NZ,
int *  NT,
int *  offset,
int *  nbFrames,
int *  codeSwap
 

Definition at line 1219 of file acrread.c.

References IdAcrInquireInfoTot4().

int IdAcrInquireInfoTot4 char *  filename,
unsigned short int *  typObj,
unsigned short int *  typLibido,
unsigned short int *  typData,
int *  NX,
int *  NY,
int *  NZ,
int *  NT,
int *  offset,
int *  nbFrames,
int *  codeSwap,
int *  bitsAllocated,
int *  bitsStored,
int *  highBit,
int *  signe
 

Retourne diverses info stockees dans l'entete ACRNEMA ou DICOM.

Parameters:
filename Nom du fichier.
typObj Pointeur vers le Unsigned Short qui recevra le type d'OBJET (SIG, IMA, VOL, SEQ, CNT, etc ..)
typLibido Pointeur vers le Unsigned Short qui recevra le type LibIDO (ex : SIG_COMPLEX_FLOAT, IMA_USHORT, VOL_DOUBLE)
typData Pointeur vers le Unsigned Short qui recevra le type de Donnees (ex : TY_COMPLEX_FLOAT, TY_USHORT, TY_DOUBLE)
NX Pointeur vers l'integer qui recevra le nombre de Colonnes
NY Pointeur vers l'integer qui recevra le nombre de Lignes
NZ Pointeur vers l'integer qui recevra le nombre de Colonnes
NT Pointeur vers l'integer qui recevra le nombre d' Instants
offset Pointeur vers l'integer qui recevra la valeur de l'offset des Pixels
nbFrames Pointeur vers l'integer qui recevra le nombre de Frames
codeSwap Pointeur vers l'integer qui la valeur du code de Swap pour les entiers 1234 : pas de swap 4321 2143 : Bad Big Endian 3412 : Bad Little Endian
nb Pointeur vers l'integer qui recevra le nombre de bits alloues
nbu Pointeur vers l'integer qui recevra le nombre de bits utilises
nb Pointeur vers l'integer qui recevra le nombre le bit de poids fort
ty Pointeur vers l'integer qui recevra le signe
Returns:
1 : l'objet est ACR-NEMA ou DICOM 0 : sinon

Definition at line 486 of file acrread.c.

References __ID_CardioVascCurieux, _IdAcrCheckSwap(), _IdAcrCheckType(), _IdAcrGetPixelOffset(), _IdAcrIsAcrLibido(), _IdAcrReadElement(), ID_RFILE_BIN, IDERR_NON_ACR_FILE, IDERR_OPEN_FAILED, IdErrno, IdErrPrintf(), IdPrintf(), IMA, SEEK_SET, SEQ, SIG, TY_RGB, TY_SIZE, and VOL.

Referenced by IdAcrInquireInfo(), IdAcrInquireInfoTot(), IdAcrInquireInfoTot2(), and IdAcrInquireInfoTot3().

void* IdAcrReadFile char *  filename,
int  type
 

Lecture d'un fichier de type ACR NEMA ou DICOM.

A L'ATTENTION DES Kamikazes Creatissiens : La fonction IdDcmCVReadFile est une extention de IdAcrReadFile qui a evolue au fil des ans, en fonction des choses que l'on a considere comme utiles de rajouter dans NOTRE entete. Puis, on a eu de 'vrais' fichiers ACR-NEMA, V2 puis V3. Puis des fichiers DICOM single-frame. Puis des fichiers DICOM multiframe. A ajouter a ca, des particularites a la limite de la mauvaise foi, dependant des constructeurs...

DONC :

Contrairement aux autres fonctions, la lecture de ce source est TOUT PARTICULIEREMENT deconseillee ! Ne perdez pas votre temps a essayer de comprendre POURQUOI ... La reponse est : PARCE QUE !

Parameters:
filename Nom du fichier ACR-NEMA ou DICOM SINGLE-FRAME
type Type de l'object a lire (IMA_UCHAR, SIG_CHAR, ...).
Returns:
Pointeur vers l'objet lu ( PSIGNAL, PPIMAGE, PPPVOLUME, PPPPSEQUENCE..).

Definition at line 854 of file acrread.c.

References IdAcrReadFileIntoVector().

Referenced by CreateObject1DSectionKi(), CreateObject2DCircleKi(), CreateObject2DKi(), CreateObject3DSphereKi(), GetParamFromDataFile(), and ReadObject().

void* IdAcrReadFileIntoVector char *  filename,
int  type,
int  premIm,
int  dernIm,
void *  vector
 

Lecture d'un fichier (IMAGE) ACR/DICOM dans un Vecteur existant deja.

A L'ATTENTION DES Kamikazes Creatissiens : La fonction IdAcrReadFileIntoVector est une extention de IdAcrReadFile LIMITEE pour le moment aux fichiers IMAGES (non SIGNAL, non VOLUME, non SEQUENCE) Elle n'a d'interet que lorsqu'on lit une serie de fichiers *dans un vecteur* et permettra, par exemple de court-circuiter VtkReader, particulierement peu efficace

ATTENTION : elle NE CREE PAS l'entete privee de PPIMAGE !!! de plus, l'adresse de debut dans le vecteur est a la charge de l'utilisateur ... ==> a n'utiliser qu'avec precaution

Exemple d'utilisation :

int nbImages; int tailleImage=dimx*dimy*sizeof(...)); char * vect, *curPos;; curPos = vect = (char *)malloc(tailleImage*nbImages); for(i=0;i<nbImages;i++) { IdAcrReadFileIntoVector(nomImage[i],-1,-1,curPos=+tailleImage); } // vect pointe sur le vecteur des pixels de l'ensemble des images. // vect n'EST PAS un 'objet' LibIDO // C'est a l'utilisateur de l'exploiter comme il lui convient

Parameters:
filename Nom du fichier DICOM ACR/DICOM
type Type des images a lire (IMA_UCHAR,IMA_USHORT, ...).
premIm Num premiere image a lire (Dicom multiframe uniquement; -1 sinon) (si -1 ou 0 on commence a la premiere).
dernIm Num derniere image a lire a lire (Dicom multiframe uniquement; -1 sinon) (si -1 ou 0 on fini a la derniere).
vector adresse dans le Vecteur, deja alloue, a laquelle sera rangée l'image lue
Returns:
Pointeur vers un tableau unidimentionel (celui passe en parametre; NULL si echec)

Definition at line 360 of file acrread.c.

References IdDcmReadFileIntoVector().

Referenced by IdAcrReadFile(), and IdDcmCVReadFile().

void* IdDcmCVReadFile char *  filename,
int  type,
int  numPremIm,
int  numDernIm
 

Lecture d'un fichier de type ACR/DICOM dans un vecteur existant deja.

A L'ATTENTION DES Kamikazes Creatissiens : La fonction IdAcrReadFileIntoVector est une extention de IdAcrReadFile qui a evolue au fil des ans, en fonction des choses que l'on a considere comme utiles de rajouter dans NOTRE entete. Puis, on a eu de 'vrais' fichiers ACR-NEMA, V2 puis V3. Puis des fichiers DICOM single-frame. Puis des fichiers DICOM multiframe. A ajouter a ca, des particularites a la limite de la mauvaise foi, dependant des constructeurs...

DONC :

Contrairement aux autres fonctions, la lecture de ce source est TOUT PARTICULIEREMENT deconseillee ! Ne perdez pas votre temps a essayer de comprendre POURQUOI ... La reponse est : PARCE QUE !

Parameters:
filename Nom du fichier ACR / DICOM
type Type des images a lire (IMA_UCHAR,IMA_USHORT, ...).
premIm Num premiere image a lire (si -1 ou 0 on commence a la premiere).
dernIm Num derniere image a lire a lire (si -1 ou 0 on fini a la derniere).
Returns:
Pointeur vers un tableau de PPIMAGE

Definition at line 904 of file acrread.c.

References IdAcrReadFileIntoVector().

long int SWAP_LONG long  int  ) 
 

short int SWAP_SHORT short  int  ) 
 

Definition at line 162 of file acrutil.c.


Variable Documentation

int __ExplicitVR
 

Definition at line 195 of file acrread.c.

Referenced by _IdAcrCheckSwap(), and _IdAcrRecupLgr().

int __ID_CardioVascCurieux
 

Definition at line 190 of file acrread.c.

Referenced by _IdAcrCheckSwap(), _IdAcrGetPixelOffset(), IdAcrInquireHeader(), and IdAcrInquireInfoTot4().

int __ID_offset
 

Definition at line 191 of file acrread.c.

Referenced by _IdAcrAffListe2(), _IdAcrCheckSwap(), and _IdAcrGetPixelOffset().

unsigned short int __NumeroGroupePrecedent
 

Definition at line 193 of file acrread.c.

Referenced by _IdAcrReadNextElement(), and IdAcrInquireHeader().

int __Papyrus
 

Definition at line 192 of file acrread.c.

Referenced by _IdAcrCheckSwap().

int __TrueDicom
 

Definition at line 194 of file acrread.c.

Referenced by _IdAcrCheckSwap(), _IdAcrGetElementLength(), _IdAcrIsAcrLibido(), and _IdAcrReadElement_avec_creation().


Generated on Wed Oct 19 09:28:35 2005 for SIMRI3D by doxygen 1.3.7