00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _GDCMFILE_H_
00020 #define _GDCMFILE_H_
00021
00022 #include "gdcmDebug.h"
00023 #include "gdcmDocument.h"
00024 #include "gdcmTagKey.h"
00025
00026
00027 namespace GDCM_NAME_SPACE
00028 {
00029
00030 class RLEFramesInfo;
00031 class JPEGFragmentsInfo;
00032
00033
00034
00035 enum ModalityType {
00036 Unknow,
00037 AU,
00038 AS,
00039 BI,
00040 CF,
00041 CP,
00042 CR,
00043 CS,
00044 CT,
00045 DD,
00046 DF,
00047 DG,
00048 DM,
00049 DS,
00050 DX,
00051 ECG,
00052 EPS,
00053 ES,
00054 FA,
00055 FS,
00056 HC,
00057 HD,
00058 LP,
00059 LS,
00060 MA,
00061 MR,
00062 NM,
00063 OT,
00064 PT,
00065 RF,
00066 RG,
00067 RTDOSE,
00068 RTIMAGE,
00069 RTPLAN,
00070 RTSTRUCT,
00071 SM,
00072 ST,
00073 TG,
00074 US,
00075 VF,
00076 XA,
00077 XC
00078 };
00079
00080
00081
00099 class GDCM_EXPORT File : public Document
00100 {
00101 gdcmTypeMacro(File);
00102
00103 public:
00104 static File *New() {return new File();}
00105
00106
00107
00108 bool Load();
00109
00110 bool IsReadable();
00111
00112 void SetFourthDimensionLocation(uint16_t group, uint16_t elem) {
00113 FourthDimensionLocation = TagKey(group, elem); }
00114
00115
00116 int GetImageNumber();
00117 ModalityType GetModality();
00118
00119 int GetXSize();
00120 int GetYSize();
00121 int GetZSize();
00122 int GetTSize();
00123
00124 bool GetSpacing(float &xspacing, float &yspacing, float &zspacing);
00125 float GetXSpacing();
00126 float GetYSpacing();
00127 float GetZSpacing();
00128
00129 float GetXOrigin();
00130 float GetYOrigin();
00131 float GetZOrigin();
00132
00133 float GetXCosineOnX();
00134 float GetXCosineOnY();
00135 float GetXCosineOnZ();
00136 float GetYCosineOnX();
00137 float GetYCosineOnY();
00138 float GetYCosineOnZ();
00139
00140 bool GetImageOrientationPatient( float iop[6] );
00141 bool GetImagePositionPatient( float ipp[3] );
00142
00143 int GetBitsStored();
00144 int GetBitsAllocated();
00145 int GetHighBitPosition();
00146 int GetSamplesPerPixel();
00147 int GetPlanarConfiguration();
00148 int GetPixelSize();
00149 std::string GetPixelType();
00150 bool IsSignedPixelData();
00151 bool IsMonochrome();
00152 bool IsMonochrome1();
00153 bool IsPaletteColor();
00154 bool IsYBRFull();
00155
00156 bool HasLUT();
00157 int GetLUTNbits();
00158
00159
00160 bool GetRescaleSlopeIntercept(double &slope, double &intercept);
00161 double GetRescaleIntercept();
00162 double GetRescaleSlope();
00163
00164 int GetNumberOfScalarComponents();
00165 int GetNumberOfScalarComponentsRaw();
00166
00168 uint16_t GetGrPixel() { return GrPixel; }
00170 uint16_t GetNumPixel() { return NumPixel; }
00171
00172 size_t GetPixelOffset();
00173 size_t GetPixelAreaLength();
00174
00176 RLEFramesInfo *GetRLEInfo() { return RLEInfo; }
00178 JPEGFragmentsInfo *GetJPEGInfo() { return JPEGInfo; }
00179
00180
00181 void AddAnonymizeElement (uint16_t group, uint16_t elem,
00182 std::string const &value);
00184 void ClearAnonymizeList() { UserAnonymizeList.clear(); }
00185 void AnonymizeNoLoad();
00187 bool AnonymizeFile();
00188
00189 bool Write(std::string fileName, FileType filetype);
00190
00191 protected:
00192 File();
00193 virtual ~File();
00195 bool MayIWrite(uint16_t group)
00196 { if (group < 8 && group !=2 ) return false; else return true; }
00197
00199 RLEFramesInfo *RLEInfo;
00201 JPEGFragmentsInfo *JPEGInfo;
00202
00207 uint16_t NumPixel;
00212 uint16_t GrPixel;
00215 TagKey FourthDimensionLocation;
00216
00217 private:
00218 bool DoTheLoadingJob();
00219 void ComputeRLEInfo();
00220 void ComputeJPEGFragmentInfo();
00221 bool ReadTag(uint16_t, uint16_t);
00222 uint32_t ReadTagLength(uint16_t, uint16_t);
00223 void ReadEncapsulatedBasicOffsetTable();
00224 uint32_t *BasicOffsetTableItemValue;
00225
00226 };
00227 }
00228
00229
00230 #endif