GDCM  2.2.3
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     EncapsulatedCDAStorage,
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, // "1.2.840.10008.5.1.4.1.1.66.4"
00114     RTIonPlanStorage, // 1.2.840.10008.5.1.4.1.1.481.8
00115     XRay3DAngiographicImageStorage, // 1.2.840.10008.5.1.4.1.1.13.1.1
00116     EnhancedXAImageStorage,
00117     RTIonBeamsTreatmentRecordStorage, // 1.2.840.10008.5.1.4.1.1.481.9
00118     SurfaceSegmentationStorage, // "1.2.840.10008.5.1.4.1.1.66.5"
00119     VLWholeSlideMicroscopyImageStorage, // 1.2.840.10008.5.1.4.1.1.77.1.6
00120     RTTreatmentSummaryRecordStorage, // 1.2.840.10008.5.1.4.1.1.481.7
00121     EnhancedUSVolumeStorage, // 1.2.840.10008.5.1.4.1.1.6.2
00122     XRayRadiationDoseSR, // 1.2.840.10008.5.1.4.1.1.88.67
00123     VLEndoscopicImageStorage, // 1.2.840.10008.5.1.4.1.1.77.1.1
00124     BreastTomosynthesisImageStorage, // 1.2.840.10008.5.1.4.1.1.13.1.3
00125     FujiPrivateCRImageStorage, // 1.2.392.200036.9125.1.1.2
00126     MS_END
00127   } MSType; // Media Storage Type
00128 
00129 typedef enum {
00130     NoObject = 0, // DICOMDIR
00131     Video, // Most common, include image, video and volume
00132     Waveform, // Isn't it simply a 1D video ?
00133     Audio, // ???
00134     PDF,
00135     URI, // URL...
00136     Segmentation, // TODO
00137     ObjectEnd
00138   } ObjectType;
00139 
00141   static const char* GetMSString(MSType ts);
00142 
00144   const char* GetString() const;
00145   static MSType GetMSType(const char *str);
00146 
00147   MediaStorage(MSType type = MS_END):MSField(type) {}
00148 
00151   static bool IsImage(MSType ts);
00152 
00153   operator MSType () const { return MSField; }
00154 
00155   const char *GetModality() const;
00156   unsigned int GetModalityDimension() const;
00157 
00158   static unsigned int GetNumberOfMSType();
00159   static unsigned int GetNumberOfMSString();
00160   static unsigned int GetNumberOfModality();
00161 
00162 
00167   bool SetFromFile(File const &file);
00168 
00171   bool SetFromDataSet(DataSet const &ds); // Will get the SOP Class UID
00172   bool SetFromHeader(FileMetaInformation const &fmi); // Will get the Media Storage SOP Class UID
00173   bool SetFromModality(DataSet const &ds);
00174   void GuessFromModality(const char *modality, unsigned int dimension = 2);
00175 
00176   friend std::ostream &operator<<(std::ostream &os, const MediaStorage &ms);
00177 
00178   bool IsUndefined() const { return MSField == MS_END; }
00179 
00180 protected:
00181   void SetFromSourceImageSequence(DataSet const &ds);
00182 
00183 private:
00184   bool SetFromDataSetOrHeader(DataSet const &ds, const Tag & tag);
00186   const char* GetFromDataSetOrHeader(DataSet const &ds, const Tag & tag);
00188   const char* GetFromHeader(FileMetaInformation const &fmi);
00190   const char* GetFromDataSet(DataSet const &ds);
00191 
00192 private:
00193   MSType MSField;
00194 };
00195 //-----------------------------------------------------------------------------
00196 inline std::ostream &operator<<(std::ostream &_os, const MediaStorage &ms)
00197 {
00198   const char *msstring = MediaStorage::GetMSString(ms);
00199   _os << (msstring ? msstring : "INVALID MEDIA STORAGE");
00200   return _os;
00201 
00202 }
00203 
00204 } // end namespace gdcm
00205 
00206 #endif // GDCMMEDIASTORAGE_H

Generated on Thu Nov 28 2013 07:02:50 for GDCM by doxygen 1.7.6.1
SourceForge.net Logo