Open Inventor Release 2024.2.1
 
Loading...
Searching...
No Matches
SoVRDicomFileReader.h
1/*=======================================================================
2 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
3 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
4 *** ***
5 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
6 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
7 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
8 *** ***
9 *** RESTRICTED RIGHTS LEGEND ***
10 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
11 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
12 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
13 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
14 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
15 *** ***
16 *** COPYRIGHT (C) 1996-2023 BY FEI S.A.S, ***
17 *** BORDEAUX, FRANCE ***
18 *** ALL RIGHTS RESERVED ***
19**=======================================================================*/
20/*=======================================================================
21** Author : L.Taboni (Apr 2004)
22**=======================================================================*/
23#ifndef _SO_VR_DICOM_FILE_READER_
24#define _SO_VR_DICOM_FILE_READER_
25
26#ifdef _WIN32
27#pragma warning( push )
28#pragma warning(disable:4251)
29#endif
30
31#include <LDM/readers/SoVolumeReader.h>
32#include <VolumeViz/readers/SoVRDicomData.h>
33#include <VolumeViz/nodes/SoVolumeData.h>
34
35class SiDicomSliceVector;
36class SoDicomSliceCache;
37
38SO_PIMPL_BASE_PUBLIC_DECLARATION(SoVRDicomFileReader);
39
199 {
200
201 SO_FIELDCONTAINER_HEADER(SoVRDicomFileReader);
202 SO_PIMPL_BASE_PUBLIC_HEADER(SoVRDicomFileReader);
203
204 public:
207
221 virtual int setFilename( const SbString& filename );
222
230 int setFilenamePattern( const SbString& pattern );
231
244 int setFilenameList(const SbStringList& filenameList);
245
261 SbBool setFilenameList(const SbString& format, const int startIndex = 0, const int endIndex = INT_MAX, const int indexStep = 1);
262
271
301
316
320 virtual ReadError getDataChar (SbBox3f &size, SoDataSet::DataType &type, SbVec3i32 &dim) override;
321
329
330
334 virtual void getSubSlice (const SbBox2i32 &subSlice, int sliceNumber, void *data);
335
344
350
363
371 const SiDicomDataSet* getDicomDataSet( const size_t sliceIdx ) const;
372
378 void loadSliceDicomData( int slice, SoVRDicomData& dicomData ) const;
379
381 virtual SbBool isThreadSafe() const;
382
388 virtual void closeAllHandles();
389
395 virtual void restoreAllHandles();
396
397 private:
398
400 virtual ~SoVRDicomFileReader ();
401
402private:
407 static std::vector<SbString> s_extensions;
408};
409
410#ifdef _WIN32
411#pragma warning( pop )
412#endif
413
414#endif /* _SO_VR_DICOM_FILE_READER_ */
415
416
2D box class.
Definition SbBox.h:2383
3D box class.
Definition SbBox.h:649
Class for smart character strings.
Definition SbString.h:202
Maintains a list of pointers to SbString instances.
3D vector class.
Definition SbVec.h:1517
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> DICOM data.
DataType
Supported data type.
Definition SoDataSet.h:664
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> DICOM data.
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> DICOM file reader.
virtual SoVolumeReader::ReaderType getReaderType()
Returns the reader type.
SbBool setDirectory(const SbString &folder)
Specify a directory containing DICOM files to load.
void loadInMemory()
Load the DICOM data into contiguous memory if possible.
virtual int setFilename(const SbString &filename)
Specify the name of a DICOM file or a file containing a list of DICOM files to load.
const SiDicomDataSet * getDicomDataSet(const size_t sliceIdx) const
Returns a DICOM data object for the specified slice containing all the DICOM attributes.
virtual SbBool setOutputDataType(SbBool doChange, SoDataSet::DataType type)
Requests that the input be converted (if necessary) to the specified data type.
bool setFilenameListFromSeries(const SbString &base)
Specify a DICOM file and load all image files in the same directory that are part of the same "series...
virtual void closeAllHandles()
Close all file handles currently opened by the reader.
int setFilenamePattern(const SbString &pattern)
Specify a pattern of DICOM files to load.
int setFilenameList(const SbStringList &filenameList)
Specify a list of DICOM files to load.
virtual void restoreAllHandles()
Restore all file handles closed by closeAllHandles method.
virtual ReadError getDataChar(SbBox3f &size, SoDataSet::DataType &type, SbVec3i32 &dim) override
Gets the characteristics (file header) of the data volume.
void loadSliceDicomData(int slice, SoVRDicomData &dicomData) const
Loads the Dicom data of the given slice.
SbBool setFilenameList(const SbString &format, const int startIndex=0, const int endIndex=INT_MAX, const int indexStep=1)
Specify a list of DICOM files to load, using a sprintf-like format.
int getNumSignificantBits()
This method is optional.
virtual void getSubSlice(const SbBox2i32 &subSlice, int sliceNumber, void *data)
Must copy the rectangular part defined by subSlice of the XY slice sliceNumber to the memory refe...
SoVRDicomFileReader()
Constructor.
virtual SbBool isThreadSafe() const
SoVRDicomFileReader is thread safe.
const SoVRDicomData & getDicomData() const
Returns an instance of SoVRDicomData for the first image of this volume.
<a href="IconLegend.html"><img src="extLDM.gif" alt="Large Data Management" border="0"></a> Abstract...
ReaderType
Available reader type.
ReadError
Read error.
int SbBool
Boolean type.
Definition SbBase.h:87