X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fctndicom.h;h=0a1d0fc56aad980ff9837a988adff6b33b8226d3;hp=020ac3a0c1e2daef531d950aad758ced5c50dad2;hb=1a050c98763fbbc0662731b0b76953acede6f5d7;hpb=c953cbb6ffc2fd50e736230f4e6976a025983cff diff --git a/include/ctndicom.h b/include/ctndicom.h index 020ac3a..0a1d0fc 100644 --- a/include/ctndicom.h +++ b/include/ctndicom.h @@ -1,15 +1,15 @@ /***************************************************************************** ** FILE IDENTIFICATION ** -** Name: ctndicomp.cpp +** Name: ctndicomp.cpp ** Purpose: Interface to CTN Dicom header -** Programmer: Kevin Rosenberg -** Date Started: March 2001 +** Programmer: Kevin Rosenberg +** Date Started: March 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: ctndicom.h,v 1.1 2001/03/01 07:30:49 kevin Exp $ +** $Id$ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -29,6 +29,104 @@ #define _CTNDICOM_H_ #if HAVE_CTN_DICOM +#include +#include +#include +#ifdef GCCSUNOS +#include +#endif + +#include "ctsupport.h" + +#if SIZEOF_LONG == 4 +#define LONGSIZE 32 +#elif SIZEOF_LONG ==8 +#define LONGSIZE 64 +#endif + +#if SIZEOF_INT == 2 +#define INTSIZE 16 +#elif SIZEOF_INT == 4 +#define INTSIZE 32 +#elif SIZEOF_INT == 8 +#define INTSIZE 64 +#endif + +#if SIZEOF_SHORT == 2 +#define SHORTSIZE 16 +#elif SIZEOF_SHORT == 4 +#define SHORTSIZE 32 +#endif + +#include "dicom.h" +#include "ctnthread.h" +#include "lst.h" +#include "condition.h" +#include "dicom_objects.h" + +#include +class ImageFile; +class Projections; + +class DicomImporter { +private: + std::string m_strFilename; + bool m_bFail; + std::string m_strFailMessage; + int m_iContents; + ImageFile* m_pImageFile; + Projections* m_pProjections; + DCM_OBJECT* m_pFile; + + void loadImage(unsigned short iNRows, unsigned short iNCols, unsigned short iBitsAllocated, + unsigned short iBitsStored, unsigned short iHighBit, unsigned short iPixRep); + + void loadProjections(); + + enum { + TAG_GROUP_SOMATOM = 0x7fe1, + TAG_MEMBER_SOMATOM_DATA = 0x1000, + }; + +public: + enum { + DICOM_CONTENTS_INVALID = -1, + DICOM_CONTENTS_IMAGE, + DICOM_CONTENTS_PROJECTIONS, + }; + + DicomImporter (const char* const pszFile); + ~DicomImporter(); + + bool testImage() const {return m_iContents == DICOM_CONTENTS_IMAGE;} + bool testProjections() const {return m_iContents == DICOM_CONTENTS_PROJECTIONS;} + bool fail() const {return m_bFail;} + const std::string& failMessage() const {return m_strFailMessage;} + + ImageFile* getImageFile() const {return m_pImageFile;} + Projections* getProjections() const {return m_pProjections;} +}; + + +class DicomExporter { +private: + const ImageFile* m_pImageFile; + std::string m_strFilename; + bool m_bFail; + std::string m_strFailMessage; + DCM_OBJECT* m_pObject; + + bool createDicomObject(); + +public: + + DicomExporter (ImageFile* pImageFile); + ~DicomExporter(); + + bool writeFile (const char* const pszFilename); + bool fail() const {return m_bFail;} + const std::string& failMessage() const {return m_strFailMessage;} +}; #endif // HAVE_CTN_DICOM #endif // _CTNDICOM_H_