+
+class RLEFramesInfo;
+class JPEGFragmentsInfo;
+
+//-----------------------------------------------------------------------------
+// Dicom Part 3.3 Compliant
+enum ModalityType {
+ Unknow,
+ AU, // Voice Audio
+ AS, // Angioscopy
+ BI, // Biomagnetic Imaging
+ CF, // Cinefluorography
+ CP, // Culposcopy
+ CR, // Computed Radiography
+ CS, // Cystoscopy
+ CT, // Computed Tomography
+ DD, // Duplex Dopler
+ DF, // Digital Fluoroscopy
+ DG, // Diaphanography
+ DM, // Digital Microscopy
+ DS, // Digital Substraction Angiography
+ DX, // Digital Radiography
+ ECG, // Echocardiography
+ EPS, // Basic Cardiac EP
+ ES, // Endoscopy
+ FA, // Fluorescein Angiography
+ FS, // Fundoscopy
+ HC, // Hard Copy
+ HD, // Hemodynamic
+ LP, // Laparoscopy
+ LS, // Laser Surface Scan
+ MA, // Magnetic Resonance Angiography
+ MR, // Magnetic Resonance
+ NM, // Nuclear Medicine
+ OT, // Other
+ PT, // Positron Emission Tomography
+ RF, // Radio Fluoroscopy
+ RG, // Radiographic Imaging
+ RTDOSE, // Radiotherapy Dose
+ RTIMAGE, // Radiotherapy Image
+ RTPLAN, // Radiotherapy Plan
+ RTSTRUCT, // Radiotherapy Structure Set
+ SM, // Microscopic Imaging
+ ST, // Single-photon Emission Computed Tomography
+ TG, // Thermography
+ US, // Ultrasound
+ VF, // Videofluorography
+ XA, // X-Ray Angiography
+ XC // Photographic Imaging
+};
+
+//-----------------------------------------------------------------------------
+
+/**
+ * \brief DICOM elements and their corresponding values (and
+ * additionaly the corresponding DICOM dictionary entry) of the header
+ * of a DICOM file.
+ *
+ * The typical usage of instances of class File is to classify a set of
+ * dicom files according to header information e.g. to create a file hierarchy
+ * reflecting the Patient/Study/Serie informations, or extracting a given
+ * SerieId. Accessing the content (image[s] or volume[s]) is beyond the
+ * functionality of this class and belongs to gdcm::FileHelper.
+ * \note The various entries of the explicit value representation (VR) shall
+ * be managed within a dictionary which is shared by all File
+ * instances.
+ * \note The File::Set*Tag* family members cannot be defined as
+ * protected due to Swig limitations for as Has_a dependency between
+ * File and FileHelper.
+ */
+class GDCM_EXPORT File : public Document
+{
+ gdcmTypeMacro(File);
+
+public:
+ static File *New() {return new File();}
+
+ // Loading
+ // GDCM_LEGACY(bool Load( std::string const &filename ))
+ bool Load();
+ // Standard values and informations contained in the header
+ bool IsReadable();
+
+ void SetFourthDimensionLocation(uint16_t group, uint16_t elem) {
+ FourthDimensionLocation = TagKey(group, elem); }
+
+ // Some heuristic based accessors, end user intended
+ int GetImageNumber();
+ ModalityType GetModality();
+
+ int GetXSize();
+ int GetYSize();
+ int GetZSize();
+ int GetTSize(); // unnormalized in DICOM V3
+
+ bool GetSpacing(float &xspacing, float &yspacing, float &zspacing);
+ float GetXSpacing();
+ float GetYSpacing();
+ float GetZSpacing();
+
+ float GetXOrigin();
+ float GetYOrigin();
+ float GetZOrigin();
+
+ float GetXCosineOnX();
+ float GetXCosineOnY();
+ float GetXCosineOnZ();
+ float GetYCosineOnX();
+ float GetYCosineOnY();
+ float GetYCosineOnZ();
+
+ bool GetImageOrientationPatient( float iop[6] );
+ bool GetImagePositionPatient( float ipp[3] );