#ifndef GDCMMEDIASTORAGE_H
#define GDCMMEDIASTORAGE_H
#include "gdcmTransferSyntax.h"
namespace gdcm { class Tag; }
namespace gdcm_ns
{
#if !defined(SWIGPYTHON) && !defined(SWIGCSHARP) && !defined(SWIGJAVA) && !defined(SWIGPHP)
using namespace gdcm;
#endif
class DataSet;
class FileMetaInformation;
class File;
class GDCM_EXPORT MediaStorage
{
public:
typedef enum {
MediaStorageDirectoryStorage = 0,
ComputedRadiographyImageStorage,
DigitalXRayImageStorageForPresentation,
DigitalXRayImageStorageForProcessing,
DigitalMammographyImageStorageForPresentation,
DigitalMammographyImageStorageForProcessing,
DigitalIntraoralXrayImageStorageForPresentation,
DigitalIntraoralXRayImageStorageForProcessing,
CTImageStorage,
EnhancedCTImageStorage,
UltrasoundImageStorageRetired,
UltrasoundImageStorage,
UltrasoundMultiFrameImageStorageRetired,
UltrasoundMultiFrameImageStorage,
MRImageStorage,
EnhancedMRImageStorage,
MRSpectroscopyStorage,
NuclearMedicineImageStorageRetired,
SecondaryCaptureImageStorage,
MultiframeSingleBitSecondaryCaptureImageStorage,
MultiframeGrayscaleByteSecondaryCaptureImageStorage,
MultiframeGrayscaleWordSecondaryCaptureImageStorage,
MultiframeTrueColorSecondaryCaptureImageStorage,
StandaloneOverlayStorage,
StandaloneCurveStorage,
LeadECGWaveformStorage, GeneralECGWaveformStorage,
AmbulatoryECGWaveformStorage,
HemodynamicWaveformStorage,
CardiacElectrophysiologyWaveformStorage,
BasicVoiceAudioWaveformStorage,
StandaloneModalityLUTStorage,
StandaloneVOILUTStorage,
GrayscaleSoftcopyPresentationStateStorageSOPClass,
XRayAngiographicImageStorage,
XRayRadiofluoroscopingImageStorage,
XRayAngiographicBiPlaneImageStorageRetired,
NuclearMedicineImageStorage,
RawDataStorage,
SpacialRegistrationStorage, SpacialFiducialsStorage, PETImageStorage,
RTImageStorage,
RTDoseStorage,
RTStructureSetStorage,
RTPlanStorage,
CSANonImageStorage,
Philips3D,
EnhancedSR,
BasicTextSR,
HardcopyGrayscaleImageStorage,
ComprehensiveSR,
DetachedStudyManagementSOPClass,
EncapsulatedPDFStorage,
EncapsulatedCDAStorage,
StudyComponentManagementSOPClass,
DetachedVisitManagementSOPClass,
DetachedPatientManagementSOPClass,
VideoEndoscopicImageStorage,
GeneralElectricMagneticResonanceImageStorage,
GEPrivate3DModelStorage,
ToshibaPrivateDataStorage,
MammographyCADSR,
KeyObjectSelectionDocument,
HangingProtocolStorage,
ModalityPerformedProcedureStepSOPClass,
PhilipsPrivateMRSyntheticImageStorage,
VLPhotographicImageStorage,
SegmentationStorage, RTIonPlanStorage, XRay3DAngiographicImageStorage, EnhancedXAImageStorage,
RTIonBeamsTreatmentRecordStorage, SurfaceSegmentationStorage, VLWholeSlideMicroscopyImageStorage, RTTreatmentSummaryRecordStorage, EnhancedUSVolumeStorage, XRayRadiationDoseSR, VLEndoscopicImageStorage, BreastTomosynthesisImageStorage, FujiPrivateCRImageStorage, OphthalmicPhotography8BitImageStorage, OphthalmicTomographyImageStorage, VLMicroscopicImageStorage,
EnhancedPETImageStorage,
VideoPhotographicImageStorage,
XRay3DCraniofacialImageStorage,
IVOCTForPresentation,
IVOCTForProcessing,
LegacyConvertedEnhancedCTImageStorage,
LegacyConvertedEnhancedMRImageStorage,
LegacyConvertedEnhancedPETImageStorage,
BreastProjectionXRayImageStorageForPresentation,
BreastProjectionXRayImageStorageForProcessing,
HardcopyColorImageStorage,
EnhancedMRColorImageStorage,
FujiPrivateMammoCRImageStorage,
OphthalmicPhotography16BitImageStorage,
VideoMicroscopicImageStorage,
MS_END
} MSType;
typedef enum {
NoObject = 0, Video, Waveform, Audio, PDF,
URI, Segmentation, ObjectEnd
} ObjectType;
static const char* GetMSString(MSType ts);
const char* GetString() const;
static MSType GetMSType(const char *str);
MediaStorage(MSType type = MS_END):MSField(type) {}
static bool IsImage(MSType ts);
operator MSType () const { return MSField; }
const char *GetModality() const;
unsigned int GetModalityDimension() const;
static unsigned int GetNumberOfMSType();
static unsigned int GetNumberOfMSString();
static unsigned int GetNumberOfModality();
bool SetFromFile(File const &file);
bool SetFromDataSet(DataSet const &ds); bool SetFromHeader(FileMetaInformation const &fmi); bool SetFromModality(DataSet const &ds);
void GuessFromModality(const char *modality, unsigned int dimension = 2);
friend std::ostream &operator<<(std::ostream &os, const MediaStorage &ms);
bool IsUndefined() const { return MSField == MS_END; }
protected:
void SetFromSourceImageSequence(DataSet const &ds);
private:
bool SetFromDataSetOrHeader(DataSet const &ds, const Tag & tag);
std::string GetFromDataSetOrHeader(DataSet const &ds, const Tag & tag);
std::string GetFromHeader(FileMetaInformation const &fmi);
std::string GetFromDataSet(DataSet const &ds);
private:
MSType MSField;
};
inline std::ostream &operator<<(std::ostream &_os, const MediaStorage &ms)
{
const char *msstring = MediaStorage::GetMSString(ms);
_os << (msstring ? msstring : "INVALID MEDIA STORAGE");
return _os;
}
}
#endif