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 
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); // Will get the SOP Class UID
00162   bool SetFromHeader(FileMetaInformation const &fmi); // Will get the Media Storage SOP Class UID
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 } // end namespace gdcm
00195 
00196 #endif // GDCMMEDIASTORAGE_H

Generated on Sat Dec 4 2010 08:58:44 for GDCM by doxygen 1.7.2
SourceForge.net Logo