📄 dicomobject.h
字号:
// DicomObject.h: interface for the RxDicomObject class.////////////////////////////////////////////////////////////////////////#if !defined(_DICOMOBJECT_H_)#define _DICOMOBJECT_H_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#include "dicom.h"#include "lst.h"#include "dicom_objects.h"#define ID_CHANGE WM_USER+7enum _RedefinedType {RX_INT, RX_FLOAT, RX_SZ, RX_WORD, RX_LPBYTE, RX_LPDOUBLE, RX_DOUBLE};enum _DicomIndex { DI_ECHOTIME, DI_REPEATTIME, DI_EXPOSURETIME, DI_SCANSEQUENCE, DI_TABLEANGLE, DI_INSTITUTIONAME, DI_FLIPANGLE, DI_SLICETHICKNESS, DI_CONTRAST, DI_PATIENTORIENTATION, DI_STUDYID, DI_SERIESUID, DI_STUDYUID, DI_IMAGEID, DI_IMAGETIME, DI_SERIESTIME, DI_IMAGENO, DI_NOOFAVE, DI_TI, DI_MA, DI_EXAMTIME, DI_DEVICENAME, DI_IMAGEDATA, DI_PIXELSPACE, DI_PIXELYSPACE, DI_BITALLOCATED, DI_COLUMN, DI_ROW, DI_SAMPLEPERPIXEL, DI_FILENAME, DI_SLICELOCATION, DI_LOCATION, DI_SERIESNO, DI_EXAMDATE, DI_SEX, DI_BIRTHDATE, DI_ORIGINALBIRTHDATE, DI_PATIENTNAME, DI_KVP, DI_RESCALEINTERCEPT, DI_RESCALESLOPE, DI_IMAGEBEGININDEX, DI_PATIENTID, DI_MODALITY, DI_MATRIX, DI_SOPINSTANCEUID, DI_ACQUISITIONTIME, DI_IMAGEORIENTATION, DI_JPEGDATALENGTH, //test DI_JPEGOFFSET //test};typedef struct _DataElement { short iGroup; short iItem; int nLength;} DataElement;typedef struct _tagDataElement { short iGroup; short iItem; char VR[2]; int nLength;} TagDataElement;class RxDicomObject {public: enum DICOM_FOLDER_TYPE {FT_STUDY, FT_SERIES};private: CString m_strEchoTime; CString m_strRepeatTime; CString m_strInstitutionName; CString m_strExposureTime; CString m_strScanSequence; CString m_strContrast; CString m_strPatientOrientation; CString m_strExamDate; CString m_strSex; CString m_strBirthDate; CString m_strOriginalBirthDate; CString m_strPatientName; CString m_strStudyID; CString m_strSeriesUID; CString m_strStudyUID; CString m_strImageID; CString m_strImageTime; CString m_strSeriesTime; CString m_strImageNo; CString m_strExamTime; CString m_strAcquisitionTime; CString m_strDeviceName; CString m_strPatientID; CString m_strModal; CString m_strMatrix; CString m_strFilename; CString m_strSOPInstanceUID; float m_fTableAngle; float m_fFlipAngle; float m_fSliceThickness; float m_fPixelSpace; float m_fPixelYSpace; float m_fSliceLocation; float m_fLocation; float m_fKVP; float m_fRescaleIntercept; float m_fRescaleSlope; float m_afImagePosition[3]; double m_afImageOrientation[6]; int m_iNoOfAve; int m_iTempImageBeginIndex; // RxDicomObject啊 郴何利栏肺 荤侩窍绰 image矫累困摹 int m_iDataType; int m_iTI; int m_iMA; int m_iImageBeginIndex; int m_iSeriesNo; // test int m_iLengthOfJPEGFile; unsigned int m_iOffsetOfJPEGFile; LPBYTE m_lpbyImageData; unsigned short m_nBitsAllocated; unsigned short m_nColumn; unsigned short m_nRow; unsigned short m_nSamplesPerPixel; HANDLE m_hFile; HANDLE m_hMap; LPVOID m_lpvFile; // jjchoi LPCSTR m_pBuffer; unsigned int m_iOffset; BOOL m_bImagePosition;public: BOOL ResetDicom(); RxDicomObject(); virtual ~RxDicomObject(); //BOOL LoadHeader(CString filename, BOOL bLoadImage = FALSE, unsigned char *pBufLoc = NULL, CRect rcROI = CRect(0, 0, 0, 0)); BOOL LoadHeader(CString filename, BOOL bLoadImage = FALSE, BOOL bSaveHeader = FALSE); CString NormalizeDate(CString strTemp); CString NormalizeTime(CString strTemp); CString GetFolderName(int iType); RxDicomObject operator=(const RxDicomObject& di); void ClearTrailingWhiteSpace(); // by kyobum void TrimLeftZero(CString *pstrText); // Information retrieve function BOOL GetDicomInfo(int iIndex, void* pValue, int* piType); LPBYTE GetImageData() {return m_lpbyImageData;} BOOL WriteDicomFile(CString strFilename, CString strName, CString strID); int GetHeaderCount() { return m_iHeaderNo; }; DCM_ELEMENT* GetArpElement(int iElement) { return m_arpElement[iElement]; };protected: unsigned int m_iFileLength; void CloseFileHandle(); int SetDicom3(short iGroup, short iItem, int nLength, BOOL bLoadImage, BOOL bSaveHeader); BOOL ReadJPG(CString strFilename); BOOL DecodeJPGFileToGeneralBuffer(LPCSTR lpszPathName, DWORD* width, DWORD* height, DWORD* nchannels, BYTE** buffer, DWORD *buffersize); BOOL FindStart(); int m_iHeaderNo; DCM_ELEMENT *m_arpElement[1000];};#endif // !defined(_DICOMOBJECT_H_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -