00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef GDCMMEDIASTORAGE_H
00016 #define GDCMMEDIASTORAGE_H
00017
00018 #include "gdcmTransferSyntax.h"
00019
00020 namespace gdcm
00021 {
00022
00023 class DataSet;
00024 class Tag;
00025 class FileMetaInformation;
00026 class File;
00027
00028
00029
00030
00042 class GDCM_EXPORT MediaStorage
00043 {
00044 public:
00045 typedef enum {
00046 MediaStorageDirectoryStorage = 0,
00047 ComputedRadiographyImageStorage,
00048 DigitalXRayImageStorageForPresentation,
00049 DigitalXRayImageStorageForProcessing,
00050 DigitalMammographyImageStorageForPresentation,
00051 DigitalMammographyImageStorageForProcessing,
00052 DigitalIntraoralXrayImageStorageForPresentation,
00053 DigitalIntraoralXRayImageStorageForProcessing,
00054 CTImageStorage,
00055 EnhancedCTImageStorage,
00056 UltrasoundImageStorageRetired,
00057 UltrasoundImageStorage,
00058 UltrasoundMultiFrameImageStorageRetired,
00059 UltrasoundMultiFrameImageStorage,
00060 MRImageStorage,
00061 EnhancedMRImageStorage,
00062 MRSpectroscopyStorage,
00063 NuclearMedicineImageStorageRetired,
00064 SecondaryCaptureImageStorage,
00065 MultiframeSingleBitSecondaryCaptureImageStorage,
00066 MultiframeGrayscaleByteSecondaryCaptureImageStorage,
00067 MultiframeGrayscaleWordSecondaryCaptureImageStorage,
00068 MultiframeTrueColorSecondaryCaptureImageStorage,
00069 StandaloneOverlayStorage,
00070 StandaloneCurveStorage,
00071 LeadECGWaveformStorage,
00072 GeneralECGWaveformStorage,
00073 AmbulatoryECGWaveformStorage,
00074 HemodynamicWaveformStorage,
00075 CardiacElectrophysiologyWaveformStorage,
00076 BasicVoiceAudioWaveformStorage,
00077 StandaloneModalityLUTStorage,
00078 StandaloneVOILUTStorage,
00079 GrayscaleSoftcopyPresentationStateStorageSOPClass,
00080 XRayAngiographicImageStorage,
00081 XRayRadiofluoroscopingImageStorage,
00082 XRayAngiographicBiPlaneImageStorageRetired,
00083 NuclearMedicineImageStorage,
00084 RawDataStorage,
00085 SpacialRegistrationStorage,
00086 SpacialFiducialsStorage,
00087 PETImageStorage,
00088 RTImageStorage,
00089 RTDoseStorage,
00090 RTStructureSetStorage,
00091 RTPlanStorage,
00092 CSANonImageStorage,
00093 Philips3D,
00094 EnhancedSR,
00095 BasicTextSR,
00096 HardcopyGrayscaleImageStorage,
00097 ComprehensiveSR,
00098 DetachedStudyManagementSOPClass,
00099 EncapsulatedPDFStorage,
00100 StudyComponentManagementSOPClass,
00101 DetachedVisitManagementSOPClass,
00102 DetachedPatientManagementSOPClass,
00103 VideoEndoscopicImageStorage,
00104 GeneralElectricMagneticResonanceImageStorage,
00105 GEPrivate3DModelStorage,
00106 ToshibaPrivateDataStorage,
00107 MammographyCADSR,
00108 KeyObjectSelectionDocument,
00109 HangingProtocolStorage,
00110 ModalityPerformedProcedureStepSOPClass,
00111 PhilipsPrivateMRSyntheticImageStorage,
00112 VLPhotographicImageStorage,
00113 SegmentationStorage,
00114 RTIonPlanStorage,
00115 XRay3DAngiographicImageStorage,
00116 EnhancedXAImageStorage,
00117 MS_END
00118 } MSType;
00119
00120 typedef enum {
00121 NoObject = 0,
00122 Video,
00123 Waveform,
00124 Audio,
00125 PDF,
00126 URI,
00127 Segmentation,
00128 ObjectEnd
00129 } ObjectType;
00130
00132 static const char* GetMSString(MSType ts);
00133
00135 const char* GetString() const;
00136 static MSType GetMSType(const char *str);
00137
00138 MediaStorage(MSType type = MS_END):MSField(type) {}
00139
00142 static bool IsImage(MSType ts);
00143
00144 operator MSType () const { return MSField; }
00145
00146 const char *GetModality() const;
00147
00148 static unsigned int GetNumberOfMSType();
00149 static unsigned int GetNumberOfMSString();
00150 static unsigned int GetNumberOfModality();
00151
00152
00157 bool SetFromFile(File const &file);
00158
00161 bool SetFromDataSet(DataSet const &ds);
00162 bool SetFromHeader(FileMetaInformation const &fmi);
00163 bool SetFromModality(DataSet const &ds);
00164 void GuessFromModality(const char *modality, unsigned int dimension = 2);
00165
00166 friend std::ostream &operator<<(std::ostream &os, const MediaStorage &ms);
00167
00168 bool IsUndefined() const { return MSField == MS_END; }
00169
00170 protected:
00171 void SetFromSourceImageSequence(DataSet const &ds);
00172
00173 private:
00174 bool SetFromDataSetOrHeader(DataSet const &ds, const Tag & tag);
00176 const char* GetFromDataSetOrHeader(DataSet const &ds, const Tag & tag);
00178 const char* GetFromHeader(FileMetaInformation const &fmi);
00180 const char* GetFromDataSet(DataSet const &ds);
00181
00182 private:
00183 MSType MSField;
00184 };
00185
00186 inline std::ostream &operator<<(std::ostream &_os, const MediaStorage &ms)
00187 {
00188 const char *msstring = MediaStorage::GetMSString(ms);
00189 _os << (msstring ? msstring : "INVALID MEDIA STORAGE");
00190 return _os;
00191
00192 }
00193
00194 }
00195
00196 #endif // GDCMMEDIASTORAGE_H