TPCCLIB
Loading...
Searching...
No Matches
tpcdcm.h
Go to the documentation of this file.
1
7#ifndef _TPCDCM_H_
8#define _TPCDCM_H_
9/*****************************************************************************/
10
11/*****************************************************************************/
12#include "tpcclibConfig.h"
13/*****************************************************************************/
14#include <stdio.h>
15#include <stdlib.h>
16#include <string.h>
17#include <math.h>
18/*****************************************************************************/
19#include "tpcextensions.h"
20#include "tpcift.h"
21#include "tpcfileutil.h"
22#include "tpcisotope.h"
23/*****************************************************************************/
24
25/*****************************************************************************/
27typedef struct DCMTAG {
42 unsigned short int group;
44 unsigned short int element;
45} DCMTAG;
46/*****************************************************************************/
47
48/*****************************************************************************/
80/*****************************************************************************/
81
82/*****************************************************************************/
125/*****************************************************************************/
126
127/*****************************************************************************/
129typedef struct DCMITEM {
131 FILE *fp;
133 fpos_t pos;
141 unsigned int vl;
152 char *rd;
153} DCMITEM;
154
156typedef struct DCMFILE {
158 char filename[FILENAME_MAX];
160 FILE *fp;
165} DCMFILE;
166/*****************************************************************************/
167
168/*****************************************************************************/
172typedef struct DCMMATRIX {
175 char *filename;
177 char acqDate[16];
179 char acqTime[16];
182 unsigned int frame;
184 unsigned int plane;
188 double frameDur;
189} DCMMATRIX;
190
192typedef struct DCMML {
194 unsigned int nr;
196 unsigned int anr;
199} DCMML;
200/*****************************************************************************/
201
202/*****************************************************************************/
203/* dcmdata */
204void dcmfileInit(DCMFILE *d);
205void dcmitemFree(DCMITEM *d);
206void dcmfileFree(DCMFILE *d);
207unsigned short int dcmfileMaxDepth(DCMFILE *df);
208unsigned short int dcmitemMaxDepth(DCMITEM *d);
209unsigned short int dcmitemParentNr(DCMITEM *d);
210char *dcmValueString(DCMITEM *d);
211long int dcmitemGetInt(DCMITEM *d);
212double dcmitemGetReal(DCMITEM *d);
213DCMITEM *dcmFindTag(DCMITEM *d, const short int omit, DCMTAG *tag, const int verbose);
214void dcmitemPrint(DCMITEM *d);
215void dcmTagSet(DCMTAG *tag, unsigned short int group, unsigned short int element);
216int dcmAddItem(
217 DCMFILE *dcm, DCMITEM *d, short int aschild, DCMTAG tag, dcmvr vr, unsigned int vl,
218 char *rd, const int verbose
219);
220
221DCMITEM *dcmFindDownTag(DCMITEM *d, const short int omit, DCMTAG *tag, const int verbose);
222int dcmTagIntRange(DCMITEM *d, DCMTAG *tag, int *mi, int *ma, const int verbose);
223
224/* dcmuid */
225dcmtruid dcmTrUID(const char *s);
226char *dcmTrUIDDescr(dcmtruid id);
227char *dcmTrUIDString(dcmtruid id);
228
229/* dcmsop */
230unsigned int dcmSOPIdentify(const char *s);
231char *dcmSOPName(unsigned int i);
232char *dcmSOPUID(unsigned int i);
233char *dcmSOPUIDName(const char *s);
234
235/* dcmvr */
236unsigned char dcmVRReserved(dcmvr id);
237dcmvr dcmVRId(const char *s);
238char *dcmVRName(dcmvr id);
239size_t dcmVRVLength(dcmvr id);
240char *dcmVRDescr(dcmvr id);
241char *dcmDA2intl(const char *orig, char *intl);
242char *dcmTM2intl(const char *orig, char *intl);
243char *dcmDT2intl(const char *orig, char *intl);
244
245/* dcmdictionary */
246unsigned int dcmDictSize();
247int dcmDictIndexTag(unsigned int i, unsigned short int *group, unsigned short int *element);
248char *dcmDictIndexVR(unsigned int i);
249char *dcmDictIndexType(unsigned int i);
250char *dcmDictIndexDescr(unsigned int i);
251unsigned int dcmDictFindTag(DCMTAG *tag);
252
253/* dcmfile */
254int dcmSameImage(const DCMFILE *d1, const DCMFILE *d2, const int verbose);
255int dcmFileList(const char *filename, IFT *ift, TPCSTATUS *status);
256int dcmFileRemove(const char *filename, TPCSTATUS *status);
257
258/* dcmio */
259int dcmVerifyMagic(const char *filename, FILE *fp);
261int dcmReadFileTag(FILE *fp, DCMTAG *tag);
262int dcmWriteFileTag(FILE *fp, DCMTAG *tag);
263int dcmWriteFileSQDelimItem(FILE *fp);
264int dcmWriteFileSQItemDelimTag(FILE *fp);
265dcmvr dcmReadFileVR(FILE *fp, char *vrstr);
266unsigned int dcmReadFileVL(FILE *fp, unsigned int n);
267int dcmReadFileVRVL(FILE *fp, dcmvr *vr, unsigned int *vl, unsigned int *n);
268int dcmWriteFileVRVL(FILE *fp, dcmvr vr, unsigned int vl, unsigned int *n);
270 DCMFILE *dcm, DCMITEM *prev_item, DCMITEM *parent_item, const short int sub,
271 const short int headerOnly, /*const*/ int verbose
272);
273int dcmFileRead(
274 const char *filename, DCMFILE *dcm, const short int headerOnly,
275 TPCSTATUS *status
276);
277int dcmFileWrite(const char *filename, DCMFILE *dcm, TPCSTATUS *status);
278
279/* dcmimage */
280int dcmImgIsotope(DCMFILE *d, isotope *isot, decaycorrection *dc, const int verbose);
281int dcmImgPos(DCMFILE *d, double *imgpos, const int verbose);
282int dcmImgDim(DCMFILE *d, unsigned short int *imgdim, const int verbose);
283int dcmImgPxlsize(DCMFILE *d, double *pxlsize, const int verbose);
284int dcmImgOrient(DCMFILE *d, double *iop, const int verbose);
285int dcmImgXform(double *iop, double *xyzMM, double *imgPos, double *xform, const int verbose);
286int dcmXformToQuatern(double *xform, double *quatern, double *qoffset, const int verbose);
287
288/* dcmmatrix */
289void dcmmatrixInit(DCMMATRIX *m);
290void dcmmatrixFree(DCMMATRIX *m);
291void dcmmlInit(DCMML *d);
292void dcmmlFree(DCMML *d);
293int dcmmlAllocate(DCMML *d, int mNr);
294int dcmMListRead(IFT *ift, DCMML *ml, TPCSTATUS *status);
295int dcmmlSortByPlane(DCMML *d, TPCSTATUS *status);
296/*****************************************************************************/
297
298/*****************************************************************************/
299#endif /* TPCDCM */
dcmtruid truid
Definition tpcdcm.h:162
DCMITEM * item
Definition tpcdcm.h:164
char filename[FILENAME_MAX]
Definition tpcdcm.h:158
FILE * fp
Definition tpcdcm.h:160
dcmtruid truid
Definition tpcdcm.h:135
dcmvr vr
Definition tpcdcm.h:139
struct DCMITEM * child_item
Definition tpcdcm.h:143
struct DCMITEM * next_item
Definition tpcdcm.h:147
unsigned int vl
Definition tpcdcm.h:141
FILE * fp
Definition tpcdcm.h:131
fpos_t pos
Definition tpcdcm.h:133
char * rd
Definition tpcdcm.h:152
struct DCMITEM * prev_item
Definition tpcdcm.h:149
struct DCMITEM * parent_item
Definition tpcdcm.h:145
DCMTAG tag
Definition tpcdcm.h:137
double frameDur
Definition tpcdcm.h:188
unsigned int plane
Definition tpcdcm.h:184
double frameStart
Definition tpcdcm.h:186
char * filename
Definition tpcdcm.h:175
char acqTime[16]
Definition tpcdcm.h:179
char acqDate[16]
Definition tpcdcm.h:177
unsigned int frame
Definition tpcdcm.h:182
DCMMATRIX * m
Definition tpcdcm.h:198
unsigned int anr
Definition tpcdcm.h:196
unsigned int nr
Definition tpcdcm.h:194
unsigned short int element
Definition tpcdcm.h:44
unsigned short int group
Definition tpcdcm.h:42
Definition tpcift.h:43
int dcmAddItem(DCMFILE *dcm, DCMITEM *d, short int aschild, DCMTAG tag, dcmvr vr, unsigned int vl, char *rd, const int verbose)
Definition dcmdata.c:501
int dcmImgPxlsize(DCMFILE *d, double *pxlsize, const int verbose)
Definition dcmimage.c:320
char * dcmDictIndexType(unsigned int i)
dcmtruid dcmReadTransferSyntaxUID(FILE *fp)
Definition dcmio.c:73
int dcmMListRead(IFT *ift, DCMML *ml, TPCSTATUS *status)
Definition dcmmatrix.c:120
long int dcmitemGetInt(DCMITEM *d)
Definition dcmdata.c:295
unsigned short int dcmitemMaxDepth(DCMITEM *d)
Definition dcmdata.c:83
unsigned char dcmVRReserved(dcmvr id)
Definition dcmvr.c:85
unsigned int dcmSOPIdentify(const char *s)
Definition dcmsop.c:62
int dcmWriteFileVRVL(FILE *fp, dcmvr vr, unsigned int vl, unsigned int *n)
Definition dcmio.c:366
char * dcmTrUIDDescr(dcmtruid id)
Definition dcmuid.c:87
size_t dcmVRVLength(dcmvr id)
Definition dcmvr.c:144
int dcmImgDim(DCMFILE *d, unsigned short int *imgdim, const int verbose)
Definition dcmimage.c:232
char * dcmDictIndexVR(unsigned int i)
void dcmmlInit(DCMML *d)
Definition dcmmatrix.c:54
void dcmfileInit(DCMFILE *d)
Definition dcmdata.c:22
void dcmTagSet(DCMTAG *tag, unsigned short int group, unsigned short int element)
Definition dcmdata.c:483
dcmvr dcmVRId(const char *s)
Definition dcmvr.c:103
char * dcmDictIndexDescr(unsigned int i)
void dcmmlFree(DCMML *d)
Definition dcmmatrix.c:70
dcmvr
Definition tpcdcm.h:91
@ DCM_VR_INVALID
Invalid DICOM value representation.
Definition tpcdcm.h:123
@ DCM_VR_DT
DICOM date time, max 26 bytes.
Definition tpcdcm.h:98
@ DCM_VR_UI
DICOM unique identifier (UID), max 64 bytes.
Definition tpcdcm.h:117
@ DCM_VR_FD
DICOM floating point double precision, 8 bytes fixed.
Definition tpcdcm.h:100
@ DCM_VR_UC
DICOM unlimited characters.
Definition tpcdcm.h:116
@ DCM_VR_PN
DICOM person name, max 64 chars per component group.
Definition tpcdcm.h:109
@ DCM_VR_CS
DICOM code (control) string, max 16 bytes.
Definition tpcdcm.h:95
@ DCM_VR_SS
DICOM signed short (16-bit integer), 2 bytes fixed.
Definition tpcdcm.h:113
@ DCM_VR_SH
DICOM short string, max 16 chars.
Definition tpcdcm.h:110
@ DCM_VR_OF
DICOM other float (32-bit) stream, endian sensitive.
Definition tpcdcm.h:106
@ DCM_VR_UT
DICOM unlimited text, character string.
Definition tpcdcm.h:122
@ DCM_VR_US
DICOM unsigned short (16-bit) integer, 2 bytes fixed.
Definition tpcdcm.h:121
@ DCM_VR_TM
DICOM time HHMMSS.FFFFFF, max 14 bytes.
Definition tpcdcm.h:115
@ DCM_VR_OB
DICOM other byte string, even bytes, endian insensitive.
Definition tpcdcm.h:104
@ DCM_VR_AS
DICOM age string, 4 bytes fixed.
Definition tpcdcm.h:93
@ DCM_VR_ST
DICOM short text, max 1024 chars.
Definition tpcdcm.h:114
@ DCM_VR_AT
DICOM attribute tag, 4 bytes fixed.
Definition tpcdcm.h:94
@ DCM_VR_LT
DICOM long text, max 10240 chars.
Definition tpcdcm.h:103
@ DCM_VR_DA
DICOM date in format YYYYMMDD, 8 bytes fixed.
Definition tpcdcm.h:96
@ DCM_VR_UL
DICOM unsigned long (32-bit) integer, 4 bytes fixed.
Definition tpcdcm.h:118
@ DCM_VR_UN
DICOM unknown, any valid length of another VR.
Definition tpcdcm.h:119
@ DCM_VR_DS
DICOM decimal string, max 16 bytes.
Definition tpcdcm.h:97
@ DCM_VR_OW
DICOM other word (16-bit) stream, even bytes, endian sensitive.
Definition tpcdcm.h:108
@ DCM_VR_IS
DICOM integer string, max 12 bytes.
Definition tpcdcm.h:101
@ DCM_VR_AE
DICOM application entity, max 16 bytes.
Definition tpcdcm.h:92
@ DCM_VR_UR
DICOM URI or URL, string of characters.
Definition tpcdcm.h:120
@ DCM_VR_LO
DICOM long string, max 64 chars.
Definition tpcdcm.h:102
@ DCM_VR_SQ
DICOM sequence of zero or more elements (used for nested data).
Definition tpcdcm.h:112
@ DCM_VR_FL
DICOM floating point single precision, 4 bytes fixed.
Definition tpcdcm.h:99
@ DCM_VR_SL
DICOM signed long (32-bit integer), 4 bytes fixed.
Definition tpcdcm.h:111
@ DCM_VR_OL
DICOM other long (32-bit) stream, endian sensitive.
Definition tpcdcm.h:107
@ DCM_VR_OD
DICOM other double (64-bit) stream, endian sensitive.
Definition tpcdcm.h:105
DCMITEM * dcmFindTag(DCMITEM *d, const short int omit, DCMTAG *tag, const int verbose)
Definition dcmdata.c:375
char * dcmDT2intl(const char *orig, char *intl)
Definition dcmvr.c:225
int dcmmlSortByPlane(DCMML *d, TPCSTATUS *status)
Definition dcmmatrix.c:540
DCMITEM * dcmFindDownTag(DCMITEM *d, const short int omit, DCMTAG *tag, const int verbose)
Definition dcmdata.c:428
void dcmfileFree(DCMFILE *d)
Definition dcmdata.c:67
char * dcmDA2intl(const char *orig, char *intl)
Definition dcmvr.c:179
void dcmitemFree(DCMITEM *d)
Definition dcmdata.c:39
int dcmFileRemove(const char *filename, TPCSTATUS *status)
Remove DICOM files belonging to one image.
Definition dcmfile.c:270
char * dcmTM2intl(const char *orig, char *intl)
Definition dcmvr.c:202
char * dcmVRName(dcmvr id)
Definition dcmvr.c:126
dcmvr dcmReadFileVR(FILE *fp, char *vrstr)
Definition dcmio.c:237
int dcmTagIntRange(DCMITEM *d, DCMTAG *tag, int *mi, int *ma, const int verbose)
Definition dcmdata.c:631
int dcmImgOrient(DCMFILE *d, double *iop, const int verbose)
Definition dcmimage.c:387
int dcmImgIsotope(DCMFILE *d, isotope *isot, decaycorrection *dc, const int verbose)
Definition dcmimage.c:24
void dcmitemPrint(DCMITEM *d)
Definition dcmdata.c:467
int dcmSameImage(const DCMFILE *d1, const DCMFILE *d2, const int verbose)
Definition dcmfile.c:24
int dcmImgPos(DCMFILE *d, double *imgpos, const int verbose)
Definition dcmimage.c:121
int dcmReadFileTag(FILE *fp, DCMTAG *tag)
Definition dcmio.c:135
int dcmFileRead(const char *filename, DCMFILE *dcm, const short int headerOnly, TPCSTATUS *status)
Definition dcmio.c:768
int dcmFileList(const char *filename, IFT *ift, TPCSTATUS *status)
List DICOM files belonging to one image.
Definition dcmfile.c:123
double dcmitemGetReal(DCMITEM *d)
Definition dcmdata.c:331
int dcmReadFileVRVL(FILE *fp, dcmvr *vr, unsigned int *vl, unsigned int *n)
Definition dcmio.c:306
char * dcmSOPUIDName(const char *s)
Definition dcmsop.c:119
int dcmFileWrite(const char *filename, DCMFILE *dcm, TPCSTATUS *status)
Definition dcmio.c:852
unsigned int dcmDictSize()
void dcmmatrixInit(DCMMATRIX *m)
Definition dcmmatrix.c:22
int dcmFileReadNextElement(DCMFILE *dcm, DCMITEM *prev_item, DCMITEM *parent_item, const short int sub, const short int headerOnly, int verbose)
Definition dcmio.c:409
int dcmWriteFileSQItemDelimTag(FILE *fp)
Definition dcmio.c:216
unsigned int dcmDictFindTag(DCMTAG *tag)
unsigned short int dcmfileMaxDepth(DCMFILE *df)
Definition dcmdata.c:102
unsigned int dcmReadFileVL(FILE *fp, unsigned int n)
Definition dcmio.c:274
char * dcmTrUIDString(dcmtruid id)
Definition dcmuid.c:105
int dcmDictIndexTag(unsigned int i, unsigned short int *group, unsigned short int *element)
unsigned short int dcmitemParentNr(DCMITEM *d)
Definition dcmdata.c:122
dcmtruid
Definition tpcdcm.h:57
@ DCM_TRUID_LEI
Little Endian Implicit VR (DICOM default)
Definition tpcdcm.h:59
@ DCM_TRUID_JPEG81
Lossy JPEG-LS.
Definition tpcdcm.h:67
@ DCM_TRUID_JPEG93
Multicomponent JPEG 2000.
Definition tpcdcm.h:71
@ DCM_TRUID_MPEG100
MPEG-2.
Definition tpcdcm.h:72
@ DCM_TRUID_JPEG92
Lossless multicomponent JPEG 2000.
Definition tpcdcm.h:70
@ DCM_TRUID_JPEG91
JPEG 2000.
Definition tpcdcm.h:69
@ DCM_TRUID_JPEG70
Lossless JPEG.
Definition tpcdcm.h:65
@ DCM_TRUID_XML
XML encoding.
Definition tpcdcm.h:77
@ DCM_TRUID_INVALID
Invalid Transfer Syntax UID.
Definition tpcdcm.h:78
@ DCM_TRUID_MPEG103
MPEG-4 BD-compatible.
Definition tpcdcm.h:74
@ DCM_TRUID_RFC
RFC 2557.
Definition tpcdcm.h:76
@ DCM_TRUID_JPEG80
Lossless JPEG-LS.
Definition tpcdcm.h:66
@ DCM_TRUID_UNKNOWN
Unknown Transfer Syntax UID
Definition tpcdcm.h:58
@ DCM_TRUID_LEED
Little Endian Explicit Deflated VR.
Definition tpcdcm.h:61
@ DCM_TRUID_BEE
Big Endian Explicit VR (retired)
Definition tpcdcm.h:62
@ DCM_TRUID_JPEG51
Lossy JPEG 12-bit compression.
Definition tpcdcm.h:64
@ DCM_TRUID_RLE
Lossless RLE.
Definition tpcdcm.h:75
@ DCM_TRUID_LEE
Little Endian Explicit VR.
Definition tpcdcm.h:60
@ DCM_TRUID_JPEG90
Lossless JPEG 2000.
Definition tpcdcm.h:68
@ DCM_TRUID_JPEG50
Lossy JPEG 8-bit compression.
Definition tpcdcm.h:63
@ DCM_TRUID_MPEG102
MPEG-4.
Definition tpcdcm.h:73
char * dcmValueString(DCMITEM *d)
Definition dcmdata.c:141
int dcmXformToQuatern(double *xform, double *quatern, double *qoffset, const int verbose)
Definition dcmimage.c:540
char * dcmVRDescr(dcmvr id)
Definition dcmvr.c:162
char * dcmSOPUID(unsigned int i)
Definition dcmsop.c:101
dcmtruid dcmTrUID(const char *s)
Definition dcmuid.c:66
int dcmWriteFileTag(FILE *fp, DCMTAG *tag)
Definition dcmio.c:165
int dcmImgXform(double *iop, double *xyzMM, double *imgPos, double *xform, const int verbose)
Definition dcmimage.c:431
int dcmVerifyMagic(const char *filename, FILE *fp)
Definition dcmio.c:25
int dcmmlAllocate(DCMML *d, int mNr)
Definition dcmmatrix.c:89
char * dcmSOPName(unsigned int i)
Definition dcmsop.c:83
int dcmWriteFileSQDelimItem(FILE *fp)
Definition dcmio.c:191
void dcmmatrixFree(DCMMATRIX *m)
Definition dcmmatrix.c:40
Header file for library libtpcextensions.
Header file for libtpcfileutil.
Header file for library libtpcift.
Header file for library libtpcisotope.
decaycorrection
Definition tpcisotope.h:78
isotope
Definition tpcisotope.h:50