/*************************************************************************** * E-Com Technology Ltd. * * ECOMPACS DICOM Network Transport Libraries * Version 0.1 Beta ***************************************************************************/ #ifndef _DICOM_DICOM_DIR_ #define _DICOM_DICOM_DIR_ ////////////////////////////////////////////////////////////////////// // class DicomDir class DICOM_API DicomDir : public DICOMFile { public: DicomDir (); BOOL ReadDicomDir (const char * FileName); BOOL WriteDicomDir (const char * FileName, const char * FileSetID, const char * FileSetDesc); BOOL CreateDicomDir (const char * Path, const char * FileSetID, const char * FileSetDesc); BOOL AddDicomFile (const char * FileName); void SetPath (const char * Path); public: BOOL m_bAddIcon; protected: BOOL AddPatient (DICOMVRSet * VRS, DICOMFile * DicomFile); BOOL AddStudy (DICOMVRSet * VRS, DICOMFile * DicomFile); BOOL AddSeries (DICOMVRSet * VRS, DICOMFile * DicomFile); BOOL AddImage (DICOMVRSet * VRS, DICOMFile * DicomFile); virtual BOOL BuildMetaHead (void) const; BOOL LoadOneSequence (UINT32 Offset, DICOMDataSet * DDS); BOOL LoadSQ (DICOMDataSet * DDS, DICOMDataSet * PDDS); protected: DString m_CurrentPath; public: class DICOM_API Iterator { public: Iterator (DicomDir & dir); Iterator (Iterator & Iter); ~Iterator () { if (m_pIter) delete m_pIter; } void operator ++ () { Next (); } void operator ++ (int) { Next (); } void Next (void) { (*m_pIter) ++; if (*m_pIter) m_VRS = m_pIter->Current (); } DICOMVRSet & operator () (void) { return *m_VRS; } DICOMVRSet & Current (void) { return *m_VRS; } operator bool () { if (! m_pIter) return false; return (*m_pIter); } protected: Array ::Iterator * m_pIter; DICOMVRSet * m_VRS; }; }; ////////////////////////////////////////////////////////////////////// #endif