00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00031 #ifndef __itkGE4ImageIO_h
00032 #define __itkGE4ImageIO_h
00033
00034 #ifdef _MSC_VER
00035 #pragma warning ( disable : 4786 )
00036 #endif
00037
00038 #include <fstream>
00039 #include "itkIPLCommonImageIO.h"
00040 #include "itkImageIOBase.h"
00041 #include "itkGEImageHeader.h"
00042
00043 namespace itk
00044 {
00045
00053 class ITK_EXPORT GE4ImageIO : public IPLCommonImageIO
00054 {
00055 public:
00057 typedef GE4ImageIO Self;
00058 typedef IPLCommonImageIO Superclass;
00059 typedef SmartPointer<Self> Pointer;
00060
00062 itkNewMacro(Self);
00063
00065 itkTypeMacro(GE4ImageIO, Superclass);
00066
00067
00068
00075 virtual bool CanReadFile(const char* FileNameToRead) ;
00076
00078
00079
00080
00082
00083
00084
00086
00087
00088
00092
00093
00094
00095
00096
00103
00104
00105
00107
00108
00109
00112
00113
00114 protected:
00115 GE4ImageIO();
00116 ~GE4ImageIO();
00117
00118
00119 virtual struct GEImageHeader *ReadHeader(const char *FileNameToRead);
00120 private:
00121 GE4ImageIO(const Self&);
00122 float MvtSunf (int numb);
00123 enum Study_Header_offsets {
00124 STHDR_ID= 0,
00125 STHDR_REV= 7,
00126 STHDR_BLKS= 11,
00127 STHDR_CRTRP= 12,
00128 STHDR_CRTRT= 28,
00129 STHDR_RAWNM= 29,
00130 STHDR_STNUM= 32,
00131 STHDR_RAWID= 35,
00132 STHDR_SGENID= 37,
00133 STHDR_DATE= 39,
00134 STHDR_IDATE= 44,
00135 STHDR_TIME= 47,
00136 STHDR_ITIME= 51,
00137 STHDR_PNM= 54,
00138 STHDR_PID= 70,
00139 STHDR_PIDTMP= 76,
00140 STHDR_AGE= 78,
00141 STHDR_SEX= 80,
00142 STHDR_WGHT= 81,
00143 STHDR_RFR= 83,
00144 STHDR_DGN= 99,
00145 STHDR_OP= 115,
00146 STHDR_DESC= 131,
00147 STHDR_HIST= 161,
00148 STHDR_STIME= 221,
00149 STHDR_HOSP= 223,
00150 STHDR_STAT= 239,
00151 STHDR_RSRV1= 240,
00152 STHDR_RSRV2= 256,
00153 STHDR_CHECK= 511
00154 };
00155 enum Series_Header_Offsets {
00156 SEHDR_ID= 0,
00157 SEHDR_REV= 7,
00158 SEHDR_BLKS= 11,
00159 SEHDR_CRTRP= 12,
00160 SEHDR_CRTRT= 28,
00161 SEHDR_RAWNM= 29,
00162 SEHDR_SERNUM= 31,
00163 SEHDR_RAWID= 33,
00164 SEHDR_SGENID= 35,
00165 SEHDR_DATE= 37,
00166 SEHDR_IDATE= 42,
00167 SEHDR_TIME= 45,
00168 SEHDR_ITIME= 49,
00169 SEHDR_DESC= 52,
00170 SEHDR_TYPE= 112,
00171 SEHDR_CTYPE= 113,
00172 SEHDR_CNAME= 114,
00173 SEHDR_CNTRDESC= 122,
00174 SEHDR_PTYPE= 138,
00175 SEHDR_PNAME= 139,
00176 SEHDR_IMODE= 147,
00177 SEHDR_FSTREN= 148,
00178 SEHDR_PSEQ= 149,
00179 SEHDR_PSSTYPE= 150,
00180 SEHDR_FOV= 151,
00181 SEHDR_CENTER= 153,
00182 SEHDR_ORIEN= 159,
00183 SEHDR_POS= 160,
00184 SEHDR_ANREF= 161,
00185 SEHDR_VANREF= 177,
00186 SEHDR_VERLAN= 193,
00187 SEHDR_HORLAN= 195,
00188 SEHDR_TBLLOC= 197,
00189 SEHDR_SMATRIX= 199,
00190 SEHDR_IMATRIX= 201,
00191 SEHDR_IALLOC= 202,
00192 SEHDR_GTYP= 203,
00193 SEHDR_PSMODE= 204,
00194 SEHDR_DNAME= 205,
00195 SEHDR_LNDMRK= 211,
00196 SEHDR_PROTO= 213,
00197 SEHDR_SCOIL_TYPE= 223,
00198 SEHDR_SUPP_TECH= 224,
00199 SEHDR_RSRV1= 225,
00200 SEHDR_RSRV2= 256,
00201 SEHDR_CHECK= 511
00202 };
00203 enum Image_Header_Offsets {
00204 IHDR_ID= 0,
00205 IHDR_REV= 7,
00206 IHDR_BLKS= 11,
00207 IHDR_CRTRP= 12,
00208 IHDR_CRTRT= 28,
00209 IHDR_DATE= 29,
00210 IHDR_IDATE= 34,
00211 IHDR_TIME= 37,
00212 IHDR_ITIME= 41,
00213 IHDR_IMNUM= 44,
00214 IHDR_SERNM= 46,
00215 IHDR_RAWID= 48,
00216 IHDR_SGENID= 50,
00217 IHDR_STRTX= 52,
00218 IHDR_ENDX= 54,
00219 IHDR_STRTY= 56,
00220 IHDR_ENDY= 58,
00221 IHDR_STRTZ= 60,
00222 IHDR_ENDZ= 62,
00223 IHDR_OBLIQUE= 64,
00224 IHDR_LOCATN= 73,
00225 IHDR_TBLPOS= 75,
00226 IHDR_THICK= 77,
00227 IHDR_SPACE= 79,
00228 IHDR_ROUND= 81,
00229 IHDR_TR= 82,
00230 IHDR_TS= 84,
00231 IHDR_TE= 86,
00232 IHDR_TI= 88,
00233 IHDR_TY= 90,
00234 IHDR_NECHO= 98,
00235 IHDR_ECHON= 99,
00236 IHDR_SLQUANT= 100,
00237 IHDR_NAVE= 101,
00238 IHDR_RSRCH= 102,
00239 IHDR_PNAME= 103,
00240 IHDR_PSDDT= 119,
00241 IHDR_GPRE= 125,
00242 IHDR_PSERIES= 126,
00243 IHDR_PIMAGES= 131,
00244 IHDR_SHAPE= 136,
00245 IHDR_X= 137,
00246 IHDR_Y= 138,
00247 IHDR_PIXSIZ= 139,
00248 IHDR_CMPRS= 141,
00249 IHDR_BITPIX= 142,
00250 IHDR_WINDOW= 143,
00251 IHDR_LEVEL= 144,
00252 IHDR_IFBLKS= 145,
00253 IHDR_NEX= 146,
00254 IHDR_PSAR= 148,
00255 IHDR_ASAR= 150,
00256 IHDR_MONITOR= 152,
00257 IHDR_CONTIG= 153,
00258 IHDR_HRT_RT= 154,
00259 IHDR_DEL_TRG= 155,
00260 IHDR_ARR= 157,
00261 IHDR_RTIME= 158,
00262 IHDR_IMGS_PCY= 159,
00263 IHDR_ARRS_SCN= 160,
00264 IHDR_XMTATTN= 162,
00265 IHDR_RCVATTN= 163,
00266 IHDR_FLDSTR= 164,
00267 IHDR_IMG_OFF= 166,
00268 IHDR_INTR_DEL= 167,
00269 IHDR_IHDR_DNAME=169,
00270 IHDR_FLPANG= 175,
00271 IHDR_SC_TYPE= 176,
00272 IHDR_SC_SER= 178,
00273 IHDR_SC_IMA= 180,
00274 IHDR_SC_EXTR= 182,
00275 IHDR_SC_RSRV= 183,
00276 IHDR_PSERIES_2= 193,
00277 IHDR_PIMAGE_2= 195,
00278 IHDR_R_CC= 197,
00279 IHDR_A_CC= 199,
00280 IHDR_S_CC= 201,
00281 IHDR_R_NC= 203,
00282 IHDR_A_NC= 205,
00283 IHDR_S_NC= 207,
00284 IHDR_TLHC_R= 209,
00285 IHDR_TLHC_A= 211,
00286 IHDR_TLHC_S= 213,
00287 IHDR_TRHC_R= 215,
00288 IHDR_TRHC_A= 217,
00289 IHDR_TRHC_S= 219,
00290 IHDR_BLHC_R= 221,
00291 IHDR_BLHC_A= 223,
00292 IHDR_BLHC_S= 225,
00293 IHDR_DISCLMR= 227,
00294 IHDR_MINDAT= 228,
00295 IHDR_CPHASE= 229,
00296 IHDR_TE2= 230,
00297 IHDR_SWAP_PF= 232,
00298 IHDR_PAUSIN= 233,
00299 IHDR_PAUSTM= 234,
00300 IHDR_USET= 236,
00301 IHDR_USER0= 237,
00302 IHDR_USER1= 239,
00303 IHDR_USER2= 241,
00304 IHDR_USER3= 243,
00305 IHDR_USER4= 245,
00306 IHDR_USER5= 247,
00307 IHDR_USER6= 249,
00308 IHDR_USER7= 251,
00309 IHDR_USER8= 253,
00310 IHDR_USER9= 255,
00311 IHDR_OBPLANE= 257,
00312 IHDR_CNTRST= 258,
00313 IHDR_CSTAGNT= 259,
00314 IHDR_CSTAMT= 264,
00315 IHDR_FILFMT= 266,
00316 IHDR_AUTOCF= 267,
00317 IHDR_XMTFREQ= 268,
00318 IHDR_RCVFREQ= 270,
00319 IHDR_AUTOXMTFERQ=272,
00320 IHDR_AUTORCVFREQ=274,
00321 IHDR_AUTOXMTATTN=276,
00322 IHDR_AUTORCVATTN=278,
00323 IHDR_HISTO= 280,
00324 IHDR_PF_SWAPPED= 281,
00325 IHDR_R1= 282,
00326 IHDR_R2= 283,
00327 IHDR_VBW= 284,
00328 IHDR_RSRV2= 285,
00329 IHDR_CHECK= 511
00330 };
00331 enum DSS_Header_Offsets {
00332 DSSHDR_ID= 0,
00333 DSSHDR_REV= 7,
00334 DSSHDR_BLKS= 11,
00335 DSSHDR_CRTRP= 12,
00336 DSSHDR_CRTRT= 28,
00337 DSSHDR_DATE= 29,
00338 DSSHDR_IDATE= 34,
00339 DSSHDR_TIME= 37,
00340 DSSHDR_ITIME= 41,
00341 DSSHDR_TLM= 44,
00342 DSSHDR_ASTAT= 46,
00343 DSSHDR_APEND= 47,
00344 DSSHDR_SPEND= 48,
00345 DSSHDR_LOCK= 49,
00346 DSSHDR_STLST= 57,
00347 DSSHDR_STIME= 121,
00348 DSSHDR_MSERIES= 123,
00349 DSSHDR_SERIES= 124,
00350 DSSHDR_DEFSER= 126,
00351 DSSHDR_EOF= 129,
00352 DSSHDR_SDIR= 130,
00353 DSSHDR_IMAP= 223,
00354 DSSHDR_RSRV1= 471
00355 };
00356 enum DSS_Header_Series_Offsets {
00357 DSSHDR_SERIES_MIMAGE= 0,
00358 DSSHDR_SERIES_IMAGE= 1,
00359 DSSHDR_SERIES_RSRV= 2,
00360 DSSHDR_SERIES_PTYPE= 3,
00361 DSSHDR_SERIES_PSEQ= 4,
00362 DSSHDR_SERIES_ANREF= 5,
00363 DSSHDR_SERIES_VANREF= 6,
00364 DSSHDR_SERIES_FOV= 7,
00365 DSSHDR_SERIES_DESC= 8,
00366 DSSHDR_SERIES_ASTAT= 19,
00367 DSSHDR_SERIES_APEND= 20,
00368 DSSHDR_SERIES_IMATRIX= 21,
00369 DSSHDR_SERIES_MINLOC= 22,
00370 DSSHDR_SERIES_MAXLOC= 23,
00371 DSSHDR_SERIES_LOCCHAR= 24,
00372 DSSHDR_SERIES_TLM= 25,
00373 DSSHDR_SERIES_CHECK= 27,
00374 DSSHDR_SERIES_DEFIM= 28,
00375 DSSHDR_SERIES_TIMAGE= 29,
00376 DSSHDR_SERIES_GTYPE= 30,
00377 DSSHDR_SERIES_WPENTRY= 33
00378 };
00379 enum DSS_Header_Image_Offsets {
00380 DSSHDR_IMAGE_LOCATN= 0,
00381 DSSHDR_IMAGE_THICK= 1,
00382 DSSHDR_IMAGE_NEXT= 2,
00383 DSSHDR_IMAGE_PRIOR= 3,
00384 DSSHDR_IMAGE_EXIST= 4,
00385 DSSHDR_IMAGE_T1= 5,
00386 DSSHDR_IMAGE_T2= 7,
00387 DSSHDR_IMAGE_TRGD= 9,
00388 DSSHDR_IMAGE_ECHON= 11,
00389 DSSHDR_IMAGE_NXTEN= 12,
00390 DSSHDR_IMAGE_PREN= 13,
00391 DSSHDR_IMAGE_GPRE= 14,
00392 DSSHDR_IMAGE_RCC= 15,
00393 DSSHDR_IMAGE_ACC= 17,
00394 DSSHDR_IMAGE_SCC= 19,
00395 DSSHDR_IMAGE_RNC= 21,
00396 DSSHDR_IMAGE_ANC= 23,
00397 DSSHDR_IMAGE_SNC= 25,
00398 DSSHDR_IMAGE_OBP= 27,
00399 DSSHDR_IMAGE_WPENTRY= 32
00400 };
00401 enum Block_Offsets {
00402 SYSCON_START = 0*256,
00403 SITCUS_START= 4*256,
00404 STHDR_START= 6*256,
00405 SEHDR_START= 8*256,
00406 IHDR_START= 10*256,
00407 RDBM_START= 12*256,
00408 PSD_START= 16*256,
00409 PIXMAP_START= 26*256,
00410 IDATA_START= 28*256
00411 };
00412 enum Sys_Config_Offsets {
00413 SCON_SYSID= 6,
00414 SCON_HNAME= 16
00415 };
00416 void operator=(const Self&);
00417 };
00418
00419 }
00420
00421 #endif // __itkAnalyzeImageIO_h