GDCM  2.0.18
gdcmMediaStorage.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program: GDCM (Grassroots DICOM). A DICOM library
00004 
00005   Copyright (c) 2006-2011 Mathieu Malaterre
00006   All rights reserved.
00007   See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE.  See the above copyright notice for more information.
00012 
00013 =========================================================================*/
00014 #ifndef GDCMMEDIASTORAGE_H
00015 #define GDCMMEDIASTORAGE_H
00016 
00017 #include "gdcmTransferSyntax.h"
00018 
00019 namespace gdcm
00020 {
00021 
00022 class DataSet;
00023 class Tag;
00024 class FileMetaInformation;
00025 class File;
00026 
00027 // WARNING: This class will be deprecated in the future. There is no reason to extend this class.
00028 // Please check the gdcm::UIDs class if adding new well known UID.
00029 
00041 class GDCM_EXPORT MediaStorage
00042 {
00043 public:
00044   typedef enum {
00045     MediaStorageDirectoryStorage = 0,
00046     ComputedRadiographyImageStorage,
00047     DigitalXRayImageStorageForPresentation,
00048     DigitalXRayImageStorageForProcessing,
00049     DigitalMammographyImageStorageForPresentation,
00050     DigitalMammographyImageStorageForProcessing,
00051     DigitalIntraoralXrayImageStorageForPresentation,
00052     DigitalIntraoralXRayImageStorageForProcessing,
00053     CTImageStorage,
00054     EnhancedCTImageStorage,
00055     UltrasoundImageStorageRetired,
00056     UltrasoundImageStorage,
00057     UltrasoundMultiFrameImageStorageRetired,
00058     UltrasoundMultiFrameImageStorage,
00059     MRImageStorage,
00060     EnhancedMRImageStorage,
00061     MRSpectroscopyStorage,
00062     NuclearMedicineImageStorageRetired,
00063     SecondaryCaptureImageStorage,
00064     MultiframeSingleBitSecondaryCaptureImageStorage,
00065     MultiframeGrayscaleByteSecondaryCaptureImageStorage,
00066     MultiframeGrayscaleWordSecondaryCaptureImageStorage,
00067     MultiframeTrueColorSecondaryCaptureImageStorage,
00068     StandaloneOverlayStorage,
00069     StandaloneCurveStorage,
00070     LeadECGWaveformStorage, // 12-
00071     GeneralECGWaveformStorage,
00072     AmbulatoryECGWaveformStorage,
00073     HemodynamicWaveformStorage,
00074     CardiacElectrophysiologyWaveformStorage,
00075     BasicVoiceAudioWaveformStorage,
00076     StandaloneModalityLUTStorage,
00077     StandaloneVOILUTStorage,
00078     GrayscaleSoftcopyPresentationStateStorageSOPClass,
00079     XRayAngiographicImageStorage,
00080     XRayRadiofluoroscopingImageStorage,
00081     XRayAngiographicBiPlaneImageStorageRetired,
00082     NuclearMedicineImageStorage,
00083     RawDataStorage,
00084     SpacialRegistrationStorage, // Spatial
00085     SpacialFiducialsStorage, // Spatial..
00086     PETImageStorage,
00087     RTImageStorage,
00088     RTDoseStorage,
00089     RTStructureSetStorage,
00090     RTPlanStorage,
00091     CSANonImageStorage,
00092     Philips3D,
00093     EnhancedSR,
00094     BasicTextSR,
00095     HardcopyGrayscaleImageStorage,
00096     ComprehensiveSR,
00097     DetachedStudyManagementSOPClass,
00098     EncapsulatedPDFStorage,
00099     StudyComponentManagementSOPClass,
00100     DetachedVisitManagementSOPClass,
00101     DetachedPatientManagementSOPClass,
00102     VideoEndoscopicImageStorage,
00103     GeneralElectricMagneticResonanceImageStorage,
00104     GEPrivate3DModelStorage,
00105     ToshibaPrivateDataStorage,
00106     MammographyCADSR,
00107     KeyObjectSelectionDocument,
00108     HangingProtocolStorage,
00109     ModalityPerformedProcedureStepSOPClass,
00110     PhilipsPrivateMRSyntheticImageStorage,
00111     VLPhotographicImageStorage,
00112     SegmentationStorage, // "1.2.840.10008.5.1.4.1.1.66.4"
00113     RTIonPlanStorage, // 1.2.840.10008.5.1.4.1.1.481.8
00114     XRay3DAngiographicImageStorage, // 1.2.840.10008.5.1.4.1.1.13.1.1
00115     EnhancedXAImageStorage,
00116     RTIonBeamsTreatmentRecordStorage, // 1.2.840.10008.5.1.4.1.1.481.9
00117     MS_END
00118   } MSType; // Media Storage Type
00119 
00120 typedef enum {
00121     NoObject = 0, // DICOMDIR
00122     Video, // Most common, include image, video and volume
00123     Waveform, // Isn't it simply a 1D video ?
00124     Audio, // ???
00125     PDF,
00126     URI, // URL...
00127     Segmentation, // TODO
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   unsigned int GetModalityDimension() const;
00148 
00149   static unsigned int GetNumberOfMSType();
00150   static unsigned int GetNumberOfMSString();
00151   static unsigned int GetNumberOfModality();
00152 
00153 
00158   bool SetFromFile(File const &file);
00159 
00162   bool SetFromDataSet(DataSet const &ds); // Will get the SOP Class UID
00163   bool SetFromHeader(FileMetaInformation const &fmi); // Will get the Media Storage SOP Class UID
00164   bool SetFromModality(DataSet const &ds);
00165   void GuessFromModality(const char *modality, unsigned int dimension = 2);
00166 
00167   friend std::ostream &operator<<(std::ostream &os, const MediaStorage &ms);
00168 
00169   bool IsUndefined() const { return MSField == MS_END; }
00170 
00171 protected:
00172   void SetFromSourceImageSequence(DataSet const &ds);
00173 
00174 private:
00175   bool SetFromDataSetOrHeader(DataSet const &ds, const Tag & tag);
00177   const char* GetFromDataSetOrHeader(DataSet const &ds, const Tag & tag);
00179   const char* GetFromHeader(FileMetaInformation const &fmi);
00181   const char* GetFromDataSet(DataSet const &ds);
00182 
00183 private:
00184   MSType MSField;
00185 };
00186 //-----------------------------------------------------------------------------
00187 inline std::ostream &operator<<(std::ostream &_os, const MediaStorage &ms)
00188 {
00189   const char *msstring = MediaStorage::GetMSString(ms);
00190   _os << (msstring ? msstring : "INVALID MEDIA STORAGE");
00191   return _os;
00192 
00193 }
00194 
00195 } // end namespace gdcm
00196 
00197 #endif // GDCMMEDIASTORAGE_H

Generated on Tue Dec 6 2011 20:36:27 for GDCM by doxygen 1.7.5.1
SourceForge.net Logo