Loading src/core/images/tnlDicomHeader.h +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ class tnlDicomHeader inline tnlDicomSeriesInfo &getSeriesInfo(); inline bool loadFromFile( const char* fileName ); inline bool loadFromFile( const tnlString& fileName ); protected: Loading src/core/images/tnlDicomHeader_impl.h +2 −2 Original line number Diff line number Diff line Loading @@ -40,9 +40,9 @@ inline tnlDicomHeader::~tnlDicomHeader() delete fileFormat; } inline bool tnlDicomHeader::loadFromFile(const char *fileName) inline bool tnlDicomHeader::loadFromFile( const tnlString& fileName ) { OFCondition status = fileFormat->loadFile(fileName); OFCondition status = fileFormat->loadFile( fileName.getString() ); if(status.good()) { isLoaded = true; Loading src/core/images/tnlDicomSeries.h +14 −10 Original line number Diff line number Diff line Loading @@ -26,7 +26,10 @@ #include <core/tnlList.h> #include <core/tnlString.h> #include <core/param-types.h> #include <core/images/tnlImage.h> #include <core/images/tnlDicomHeader.h> #include <core/images/tnlRegionOfInterest.h> #include <mesh/tnlGrid.h> #include <tnlConfig.h> Loading @@ -49,7 +52,7 @@ struct WindowCenterWidth struct ImagesInfo { int width, height, imagesCount, frameUintsCount, bps, colorsCount, mainFrameIndex, int imagesCount, frameUintsCount, bps, colorsCount, mainFrameIndex, frameSize, maxColorValue, minColorValue; WindowCenterWidth window; }; Loading @@ -59,24 +62,25 @@ struct ImagesInfo * DICOM serie (searches the directory of the file). Call isDicomSeriesLoaded() * function to check if the load was successful. */ class tnlDicomSeries class tnlDicomSeries : public tnlImage< int > { public: inline tnlDicomSeries( const char *filePath ); inline tnlDicomSeries( const tnlString& filePath ); inline virtual ~tnlDicomSeries(); inline int getImagesCount(); template< typename Vector > bool getImage( const int imageIdx, const tnlRegionOfInterest< int > roi, Vector& vector ); #ifdef HAVE_DCMTK_H inline const Uint16 *getData(); #endif inline int getWidth(); inline int getHeight(); inline int getColorCount(); inline int getBitsPerSampleCount(); Loading @@ -95,11 +99,11 @@ class tnlDicomSeries private: bool loadDicomSeries( const char *filePath ); bool loadDicomSeries( const tnlString& filePath ); bool retrieveFileList( const char *filePath ); bool retrieveFileList( const tnlString& filePath ); bool loadImage( char *filePath, int number ); bool loadImage( const tnlString& filePath, int number ); tnlList<tnlString *> *fileList; Loading src/core/images/tnlDicomSeries_impl.h +59 −73 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ int filter(const struct dirent *dire) return 1; } inline tnlDicomSeries::tnlDicomSeries( const char* filePath) inline tnlDicomSeries::tnlDicomSeries( const tnlString& filePath) { fileList = new tnlList<tnlString *>(); dicomImage = 0; Loading Loading @@ -78,10 +78,10 @@ inline tnlDicomSeries::~tnlDicomSeries() delete pixelData; } inline bool tnlDicomSeries::retrieveFileList( const char *filePath) inline bool tnlDicomSeries::retrieveFileList( const tnlString& filePath) { tnlString filePathString(filePath); tnlString suffix(filePath, filePathString.getLength() - 3); tnlString suffix(filePath.getString(), filePathString.getLength() - 3); //char *ima = "ima"; //char *dcm = "dcm"; Loading @@ -92,8 +92,8 @@ inline bool tnlDicomSeries::retrieveFileList( const char *filePath) int fileNamePosition = findLastIndexOf(filePathString,"/"); //parse file path tnlString fileName(filePath, fileNamePosition); tnlString directoryPath(filePath, 0, filePathString.getLength() - fileNamePosition); tnlString fileName(filePath.getString(), fileNamePosition); tnlString directoryPath(filePath.getString(), 0, filePathString.getLength() - fileNamePosition); int separatorPosition = findLastIndexOf(fileName, "_"); if (separatorPosition == -1) Loading Loading @@ -135,29 +135,25 @@ inline bool tnlDicomSeries::retrieveFileList( const char *filePath) return true; } inline bool tnlDicomSeries::loadImage(char *filePath, int number) inline bool tnlDicomSeries::loadImage( const tnlString& filePath, int number) { //load header tnlDicomHeader *header = new tnlDicomHeader(); dicomSeriesHeaders.setSize( fileList->getSize() ); dicomSeriesHeaders.setElement( number, header ); if( !header->loadFromFile( filePath ) ) { return false; } //check series UID const tnlString& seriesUID = dicomSeriesHeaders.operator [](0)->getSeriesInfo().getSeriesInstanceUID(); const tnlString& seriesUID = dicomSeriesHeaders[ 0 ]->getSeriesInfo().getSeriesInstanceUID(); if( seriesUID != header->getSeriesInfo().getSeriesInstanceUID() ) { return false; } //load image if( dicomImage ) delete dicomImage; dicomImage = NULL; dicomImage = new DicomImage(filePath); dicomImage = new DicomImage( filePath.getString() ); if(dicomImage->getFrameCount() > 1) { Loading Loading @@ -198,18 +194,18 @@ inline bool tnlDicomSeries::loadImage(char *filePath, int number) if(number == 0) { imagesInfo.height = dicomImage->getHeight(); this->height = dicomImage->getHeight(); } else if(dicomImage->getHeight() != imagesInfo.height) else if(dicomImage->getHeight() != this->height) { cerr << filePath <<" image has bad height value\n"; } if(number == 0) { imagesInfo.width = dicomImage->getWidth (); this->width = dicomImage->getWidth (); } else if(dicomImage->getWidth() != imagesInfo.width) else if(dicomImage->getWidth() != this->width) { cerr << filePath <<" image has bad width value\n"; } Loading Loading @@ -266,14 +262,14 @@ inline bool tnlDicomSeries::loadImage(char *filePath, int number) dicomImage->getOutputData(target,size,16); imagesInfo.imagesCount++; //delete image object - data are stored separatedly //delete image object - data are stored separately delete dicomImage; dicomImage = NULL; return true; } inline bool tnlDicomSeries::loadDicomSeries( const char *filePath ) inline bool tnlDicomSeries::loadDicomSeries( const tnlString& filePath ) { //load list of files if( !retrieveFileList( filePath ) ) Loading @@ -283,9 +279,9 @@ inline bool tnlDicomSeries::loadDicomSeries( const char *filePath ) int imagesCountToLoad = fileList->getSize(); for( int i=0; i < imagesCountToLoad; i++ ) { if(!loadImage((fileList->operator [](i))->getString(),i)) if( !loadImage( ( ( *fileList )[ i ] )->getString(),i ) ) { cerr << (fileList->operator [](i))->getString() << " skipped"; cerr << ( ( *fileList )[ i ] )->getString() << " skipped"; } } return true; Loading @@ -301,16 +297,6 @@ inline const Uint16 *tnlDicomSeries::getData() return pixelData; } inline int tnlDicomSeries::getWidth() { return imagesInfo.width; } inline int tnlDicomSeries::getHeight() { return imagesInfo.height; } inline int tnlDicomSeries::getColorCount() { return imagesInfo.colorsCount; Loading src/core/images/tnlRegionOfInterest.h +4 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,10 @@ class tnlRegionOfInterest Index getHeight() const; template< typename Grid > bool setGrid( Grid& grid, bool verbose = false ); bool isIn( const Index row, const Index column ) const; protected: Loading Loading
src/core/images/tnlDicomHeader.h +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ class tnlDicomHeader inline tnlDicomSeriesInfo &getSeriesInfo(); inline bool loadFromFile( const char* fileName ); inline bool loadFromFile( const tnlString& fileName ); protected: Loading
src/core/images/tnlDicomHeader_impl.h +2 −2 Original line number Diff line number Diff line Loading @@ -40,9 +40,9 @@ inline tnlDicomHeader::~tnlDicomHeader() delete fileFormat; } inline bool tnlDicomHeader::loadFromFile(const char *fileName) inline bool tnlDicomHeader::loadFromFile( const tnlString& fileName ) { OFCondition status = fileFormat->loadFile(fileName); OFCondition status = fileFormat->loadFile( fileName.getString() ); if(status.good()) { isLoaded = true; Loading
src/core/images/tnlDicomSeries.h +14 −10 Original line number Diff line number Diff line Loading @@ -26,7 +26,10 @@ #include <core/tnlList.h> #include <core/tnlString.h> #include <core/param-types.h> #include <core/images/tnlImage.h> #include <core/images/tnlDicomHeader.h> #include <core/images/tnlRegionOfInterest.h> #include <mesh/tnlGrid.h> #include <tnlConfig.h> Loading @@ -49,7 +52,7 @@ struct WindowCenterWidth struct ImagesInfo { int width, height, imagesCount, frameUintsCount, bps, colorsCount, mainFrameIndex, int imagesCount, frameUintsCount, bps, colorsCount, mainFrameIndex, frameSize, maxColorValue, minColorValue; WindowCenterWidth window; }; Loading @@ -59,24 +62,25 @@ struct ImagesInfo * DICOM serie (searches the directory of the file). Call isDicomSeriesLoaded() * function to check if the load was successful. */ class tnlDicomSeries class tnlDicomSeries : public tnlImage< int > { public: inline tnlDicomSeries( const char *filePath ); inline tnlDicomSeries( const tnlString& filePath ); inline virtual ~tnlDicomSeries(); inline int getImagesCount(); template< typename Vector > bool getImage( const int imageIdx, const tnlRegionOfInterest< int > roi, Vector& vector ); #ifdef HAVE_DCMTK_H inline const Uint16 *getData(); #endif inline int getWidth(); inline int getHeight(); inline int getColorCount(); inline int getBitsPerSampleCount(); Loading @@ -95,11 +99,11 @@ class tnlDicomSeries private: bool loadDicomSeries( const char *filePath ); bool loadDicomSeries( const tnlString& filePath ); bool retrieveFileList( const char *filePath ); bool retrieveFileList( const tnlString& filePath ); bool loadImage( char *filePath, int number ); bool loadImage( const tnlString& filePath, int number ); tnlList<tnlString *> *fileList; Loading
src/core/images/tnlDicomSeries_impl.h +59 −73 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ int filter(const struct dirent *dire) return 1; } inline tnlDicomSeries::tnlDicomSeries( const char* filePath) inline tnlDicomSeries::tnlDicomSeries( const tnlString& filePath) { fileList = new tnlList<tnlString *>(); dicomImage = 0; Loading Loading @@ -78,10 +78,10 @@ inline tnlDicomSeries::~tnlDicomSeries() delete pixelData; } inline bool tnlDicomSeries::retrieveFileList( const char *filePath) inline bool tnlDicomSeries::retrieveFileList( const tnlString& filePath) { tnlString filePathString(filePath); tnlString suffix(filePath, filePathString.getLength() - 3); tnlString suffix(filePath.getString(), filePathString.getLength() - 3); //char *ima = "ima"; //char *dcm = "dcm"; Loading @@ -92,8 +92,8 @@ inline bool tnlDicomSeries::retrieveFileList( const char *filePath) int fileNamePosition = findLastIndexOf(filePathString,"/"); //parse file path tnlString fileName(filePath, fileNamePosition); tnlString directoryPath(filePath, 0, filePathString.getLength() - fileNamePosition); tnlString fileName(filePath.getString(), fileNamePosition); tnlString directoryPath(filePath.getString(), 0, filePathString.getLength() - fileNamePosition); int separatorPosition = findLastIndexOf(fileName, "_"); if (separatorPosition == -1) Loading Loading @@ -135,29 +135,25 @@ inline bool tnlDicomSeries::retrieveFileList( const char *filePath) return true; } inline bool tnlDicomSeries::loadImage(char *filePath, int number) inline bool tnlDicomSeries::loadImage( const tnlString& filePath, int number) { //load header tnlDicomHeader *header = new tnlDicomHeader(); dicomSeriesHeaders.setSize( fileList->getSize() ); dicomSeriesHeaders.setElement( number, header ); if( !header->loadFromFile( filePath ) ) { return false; } //check series UID const tnlString& seriesUID = dicomSeriesHeaders.operator [](0)->getSeriesInfo().getSeriesInstanceUID(); const tnlString& seriesUID = dicomSeriesHeaders[ 0 ]->getSeriesInfo().getSeriesInstanceUID(); if( seriesUID != header->getSeriesInfo().getSeriesInstanceUID() ) { return false; } //load image if( dicomImage ) delete dicomImage; dicomImage = NULL; dicomImage = new DicomImage(filePath); dicomImage = new DicomImage( filePath.getString() ); if(dicomImage->getFrameCount() > 1) { Loading Loading @@ -198,18 +194,18 @@ inline bool tnlDicomSeries::loadImage(char *filePath, int number) if(number == 0) { imagesInfo.height = dicomImage->getHeight(); this->height = dicomImage->getHeight(); } else if(dicomImage->getHeight() != imagesInfo.height) else if(dicomImage->getHeight() != this->height) { cerr << filePath <<" image has bad height value\n"; } if(number == 0) { imagesInfo.width = dicomImage->getWidth (); this->width = dicomImage->getWidth (); } else if(dicomImage->getWidth() != imagesInfo.width) else if(dicomImage->getWidth() != this->width) { cerr << filePath <<" image has bad width value\n"; } Loading Loading @@ -266,14 +262,14 @@ inline bool tnlDicomSeries::loadImage(char *filePath, int number) dicomImage->getOutputData(target,size,16); imagesInfo.imagesCount++; //delete image object - data are stored separatedly //delete image object - data are stored separately delete dicomImage; dicomImage = NULL; return true; } inline bool tnlDicomSeries::loadDicomSeries( const char *filePath ) inline bool tnlDicomSeries::loadDicomSeries( const tnlString& filePath ) { //load list of files if( !retrieveFileList( filePath ) ) Loading @@ -283,9 +279,9 @@ inline bool tnlDicomSeries::loadDicomSeries( const char *filePath ) int imagesCountToLoad = fileList->getSize(); for( int i=0; i < imagesCountToLoad; i++ ) { if(!loadImage((fileList->operator [](i))->getString(),i)) if( !loadImage( ( ( *fileList )[ i ] )->getString(),i ) ) { cerr << (fileList->operator [](i))->getString() << " skipped"; cerr << ( ( *fileList )[ i ] )->getString() << " skipped"; } } return true; Loading @@ -301,16 +297,6 @@ inline const Uint16 *tnlDicomSeries::getData() return pixelData; } inline int tnlDicomSeries::getWidth() { return imagesInfo.width; } inline int tnlDicomSeries::getHeight() { return imagesInfo.height; } inline int tnlDicomSeries::getColorCount() { return imagesInfo.colorsCount; Loading
src/core/images/tnlRegionOfInterest.h +4 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,10 @@ class tnlRegionOfInterest Index getHeight() const; template< typename Grid > bool setGrid( Grid& grid, bool verbose = false ); bool isIn( const Index row, const Index column ) const; protected: Loading