GDCM 2.0.17

gdcmMediaStorage.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program: GDCM (Grassroots DICOM). A DICOM library
00004   Module:  $URL$
00005 
00006   Copyright (c) 2006-2010 Mathieu Malaterre
00007   All rights reserved.
00008   See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
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 // WARNING: This class will be deprecated in the future. There is no reason to extend this class.
00029 // Please check the gdcm::UIDs class if adding new well known UID.
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, // 12-
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, // Spatial
00086     SpacialFiducialsStorage, // Spatial..
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, // "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     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 Wed Feb 2 2011 19:21:02 for GDCM by doxygen 1.7.3
SourceForge.net Logo