Commit d5f8dda2 authored by emilie.harquel's avatar emilie.harquel
Browse files

Merge from branch fw4spl_0.9.2 to branch fw4spl_0.10.0

--HG--
branch : fw4spl_0.10.0
parents abe4f693 57013c8f
......@@ -256,29 +256,7 @@ void WindowLevel::receiving( ::fwServices::ObjectMsg::csptr msg ) throw(::fwTool
if (msg->hasEvent( ::fwComEd::ImageMsg::BUFFER ))
{
::fwData::Image::sptr image = this->getObject< ::fwData::Image >();
bool imageIsValid = ::fwComEd::fieldHelper::MedicalImageHelpers::checkImageValidity( image );
if (imageIsValid)
{
this->updateImageInfos(image);
this->updateTransferFunction(image, this->getSptr());
if(m_autoWindowing)
{
double min, max;
::fwComEd::fieldHelper::MedicalImageHelpers::getMinMax(image, min, max);
this->updateImageWindowLevel(min, max);
}
::fwData::TransferFunction::sptr pTF = this->getTransferFunction();
SLM_ASSERT("TransferFunction null pointer", pTF);
::fwData::TransferFunction::TFValuePairType minMax = pTF->getWLMinMax();
this->onImageWindowLevelChanged( minMax.first, minMax.second );
}
this->setEnabled(imageIsValid);
this->updating();
}
if (msg->hasEvent( ::fwComEd::TransferFunctionMsg::WINDOWING ))
{
......
......@@ -31,9 +31,7 @@ namespace uiMedData
namespace editor
{
/**
* @class SOrganTransformation
* @brief Display the organs list and allow an interactive selection to set the corresponding meshes in a composite
*/
class UIMEDDATAQT_CLASS_API SOrganTransformation : public QObject, public ::gui::editor::IEditor
......
......@@ -324,7 +324,6 @@
<service>::visuVTKAdaptor::ImageSliceOrientationText</service>
<object>::fwData::Object</object>
</extension>
</plugin>
=== fw4spl_0.9.2.3 ( diff from fw4spl_0.9.2.2 ) 10/09/2014 ===
* Transplanted from fw4spl_0.10.0:
* Removed all services working on deprecated data PatientDB
* Removed ARLcore dependency in uiMeasurement : load/save landmarks with ioAtoms
* Moved Examples, POC and Training to fw4spl-ext repository
* Fixed AppConfig::getUniqueIdentifier()
* Fixed wrong warning in PushObjectSrv.
* Fixed gui doxygen (menuBar and toolBar)
* Removed useless notify in TransferFunctionEditor::initTransferFunctions()
* General:
* Updated fwAtomsPatch and spyLogger according to Bost 1.54
* Removed author field in doxygen
* Fixed Mac OS issue with Qt (QTBUG-32789)
* Fixed ProfileRunner for Mac OS
* Fixed guiQt, SliceCursor and WindowLevel memory leak
* Moved gdcmIO, ioGdcm and ioGdcmQt to FW4SPL-ext
* Added CMakeLists
* Removed useless SelectedNodeIOUpdater service
* Core:
* Added getConfigDesc in fwServices
* Fixed timer asio one shot
* Changed SigSevBacktrace log level to ERROR
* Fixed PushObjectSrv
* Added 'launched' signal to ConfigActionSrv and SConfigLauncher
* Added 'updated' signal on Graph and Node
* Optimized Graph route
* Added SSignal service
* Updated template arguments to manage five parameters in fwCom
* Fixed fwRuntime compilation on Linux
* Added support of ! operator in seshat path (returns a string pointed by the seshat path if possible, the uid otherwise)
* Allowed empty string in XML <parameter> default value.
* Memory dump system
* Set default streamFactory when buffer's streamFactory was never explicitly set
* Fixed buffer lock and buffer streams
* Fixed an issue due to some implementations returning a non-NULL pointer for malloc(0) in buffer allocation
* Fixed BufferManager and StructureTraits binding
* Added getTemporaryFolder in System
* IO:
* Fixed fwData::Array initialization in vtkGdcmIO/fwVtkIO SeriesDB reader
* Fixed zipped json/xml loading
* Updated ioAtoms to be able to overwrite a lazy-loaded file
* Added custom extensions ability in ioAtoms
* Fixed atom custom extension when using JSON/XML backends
* UI:
* Added a way to configure button state
* Fixed relative URLs in uiGenericQt::action::LaunchBrowserActionService
* Updated IOSelector to display config's description if applicable
* Fixed compilation of DataInfoFromMsgUpdaterSrv
* Updated SExportSeries to use an existing activity description or physician name
* Added ability to pass parameters in config
* Updated Qt MessageDialog to manage a default button
* Added several editors and services to propose a new export config
* Set SShowAbout to modal
* Tools:
* Added fwDataTools::TransformationMatrix3D to manipulate ::fwData::TransformationMatrix3D
* Removed useless dimension check for medical images
* Added lib fwMedDataTools to manage fwMedData UID
* Visu:
* Added autoRender option in genericScene
* Added ability of hidding cropping box by default in visuVTKVRAdaptor::Volume
* Added locks in VTK adaptors
* Updated VTK text adaptor to manage Seshat path, text alignment and font size
* Added patient name in all generic scene.
* Patch system:
* Fixed fatal when visiting enum object in ::fwDataCamp::visitor::getObject class.
* Added medical workspace filtering for MedicalData V2 context
* Added ImageSeries and ActivitySeries to fwStructuralPatch
* Added resection patching in MedicalData V2 context
* Activities:
* Added activity validator concept to fwActivites
* Added image properties validator
* Added new option for SActivityLauncher to define a default association
* Made activity launch cancelable
* Added a new validator for authorizing activity launching with several series from the same study
* Added seshat path ability in activity launcher
* UT:
* Fixed several compilation issues (b4be6561e715 and 20ff6c2d0cda)
* Fixed working directory
* Software:
* Updated VRRender activities:
* 3DVisualisationActivity
* blendActivity
* volumeRenderingActivity
=== fw4spl_0.9.2.2 ( diff from fw4spl_0.9.2.1 ) 20/06/2013 ===
* Transplanted from fw4spl_0.9.1.4.:
......
/* ***** BEGIN LICENSE BLOCK *****
* FW4SPL - Copyright (C) IRCAD, 2009-2012.
* FW4SPL - Copyright (C) IRCAD, 2009-2014.
* Distributed under the terms of the GNU Lesser General Public License (LGPL) as
* published by the Free Software Foundation.
* ****** END LICENSE BLOCK ****** */
......@@ -8,6 +8,8 @@
#include <fwAtoms/Map.hpp>
#include <fwAtoms/Sequence.hpp>
#include <fwData/Graph.hpp>
#include <fwTools/UUID.hpp>
#include "fwAtomConversion/mapper/Graph.hpp"
#include "fwAtomConversion/mapper/registry/macros.hpp"
......@@ -43,6 +45,8 @@ fwAtomConversionRegisterMacro( ::fwAtomConversion::mapper::Graph, ::fwData::Grap
{
value = ::fwAtoms::Object::New();
value->setMetaInfo("ID_METAINFO", ::fwTools::UUID::generateUUID());
value->setAttribute("edge", ::fwAtomConversion::convert(elem.first, cache));
value->setAttribute("source", ::fwAtomConversion::convert(elem.second.first, cache));
value->setAttribute("destination", ::fwAtomConversion::convert(elem.second.second, cache));
......@@ -75,7 +79,6 @@ fwAtomConversionRegisterMacro( ::fwAtomConversion::mapper::Graph, ::fwData::Grap
elemAtom->type() != ::fwAtoms::Base::OBJECT );
::fwAtoms::Object::sptr objectAtom = ::fwAtoms::Object::dynamicCast( elemAtom );
::fwAtoms::Object::sptr edgeAtom = ::fwAtoms::Object::dynamicCast( objectAtom->getAttribute("edge") );
::fwData::Edge::sptr edge = ::fwData::Edge::dynamicCast( ::fwAtomConversion::convert( edgeAtom, cache, uuidPolicy ) );
......
......@@ -56,6 +56,7 @@ protected :
<name>My App</name>
<icon>Bundles/myApp_1-0/icon.ico</icon>
<minSize width="800" height="600" />
<style mode="MODAL" />
</frame>
<toolBar />
<menuBar />
......@@ -71,7 +72,9 @@ protected :
* - \b exit (by default) : the application is closed. Use it for the main frame.
* - \b notify : notifies service's object with WINDOW_CLOSED event.
* - \b message : a confirmation dialog appears asking user to confirm closing application
* - \<frame\> : defines the frame name, icon, size.
* - \<frame\> : defines the frame name, icon, size and style.
* - \b style : defines frame style (modal, always on top, etc.), not mandatory.
* Allowed values are MODAL, STAY_ON_TOP and DEFAULT (default value).
* - The toolBar section isn't mandatory.
* - The menuBar section isn't mandatory.
*
......
......@@ -53,7 +53,8 @@ public:
typedef enum
{
DEFAULT,
STAY_ON_TOP
STAY_ON_TOP,
MODAL
} Style;
typedef std::string RegistryKeyType;
......
......@@ -103,6 +103,10 @@ void IFrameLayoutManager::initialize( ConfigurationType configuration)
{
m_frameInfo.m_style = STAY_ON_TOP;
}
else if (style == "MODAL")
{
m_frameInfo.m_style = MODAL;
}
else
{
OSLM_FATAL("Sorry, style "<<style<< " is unknown.");
......
......@@ -266,6 +266,7 @@ void WorkerQt::init( int &argc, char **argv )
}
OSLM_TRACE("Init Qt" << ::fwThread::getCurrentThreadId() <<" Finish");
}
WorkerQt::~WorkerQt()
......
......@@ -123,6 +123,11 @@ void MessageDialog::setDefaultButton(::fwGui::dialog::IMessageDialog::Buttons bu
box.addButton(m_customButtons[i], QMessageBox::ActionRole);
}
for(int i = 0; i < m_customButtons.size(); ++i)
{
box.addButton(m_customButtons[i], QMessageBox::ActionRole);
}
MessageDialogQtButtonType::const_iterator iter = messageDialogQtButton.find(m_defaultButton);
if(iter != messageDialogQtButton.end())
{
......
......@@ -71,6 +71,10 @@ void FrameLayoutManager::createFrame()
{
m_qtWindow->setWindowFlags(Qt::WindowStaysOnTopHint);
}
else if(frameInfo.m_style == ::fwGui::layoutManager::IFrameLayoutManager::MODAL)
{
m_qtWindow->setWindowModality(Qt::ApplicationModal);
}
int sizeX = (frameInfo.m_size.first > 0)?frameInfo.m_size.first:m_qtWindow->size().width();
int sizeY = (frameInfo.m_size.second > 0)?frameInfo.m_size.second:m_qtWindow->size().height();
......
/* ***** BEGIN LICENSE BLOCK *****
* FW4SPL - Copyright (C) IRCAD, 2009-2012.
* FW4SPL - Copyright (C) IRCAD, 2009-2014.
* Distributed under the terms of the GNU Lesser General Public License (LGPL) as
* published by the Free Software Foundation.
* ****** END LICENSE BLOCK ****** */
......@@ -31,7 +31,8 @@ namespace fwGui
const std::map< ::fwGui::layoutManager::IFrameLayoutManager::Style, long> FrameLayoutManager::FWSTYLE_TO_WXSTYLE =
::boost::assign::map_list_of(::fwGui::layoutManager::IFrameLayoutManager::DEFAULT,wxDEFAULT_FRAME_STYLE)
(::fwGui::layoutManager::IFrameLayoutManager::STAY_ON_TOP, wxDEFAULT_FRAME_STYLE | wxSTAY_ON_TOP);
(::fwGui::layoutManager::IFrameLayoutManager::STAY_ON_TOP, wxDEFAULT_FRAME_STYLE | wxSTAY_ON_TOP)
(::fwGui::layoutManager::IFrameLayoutManager::MODAL, wxDEFAULT_FRAME_STYLE | wxSTAY_ON_TOP);
//-----------------------------------------------------------------------------
......
......@@ -52,10 +52,8 @@ AtomCacheType::mapped_type hitCache(const AtomCacheType::key_type &path) const
AtomCacheType::const_iterator iter = m_cache.find(path);
if(iter != m_cache.end())
{
OSLM_TRACE(" cache hit : '" << path << "'" );
return iter->second;
}
OSLM_TRACE(" cache miss : '" << path << "'" );
return AtomCacheType::mapped_type();
}
......@@ -63,7 +61,6 @@ AtomCacheType::mapped_type hitCache(const AtomCacheType::key_type &path) const
void cache(const std::string &ptpath, const AtomCacheType::mapped_type &atom)
{
OSLM_TRACE(" cache : '" << ptpath << "' : " << atom->getClassname() );
m_cache.insert( AtomCacheType::value_type( ptpath, atom ) );
}
......@@ -165,6 +162,12 @@ void cache(const std::string &ptpath, const AtomCacheType::mapped_type &atom)
}
atom->setAttributes(attributes);
// Managing object with no id
if(atom->getMetaInfo("ID_METAINFO").empty())
{
atom->setMetaInfo("ID_METAINFO", ::fwTools::UUID::generateUUID());
}
return atom;
}
......
......@@ -102,11 +102,11 @@ Hdf5Visitor(const ::boost::filesystem::path & path)
FW_RAISE("Failed to read file '" << path.string() << "' :\nno writer version found.");
}
FW_RAISE_IF("Failed to read file '" << path.string() << "':\n"
FW_RAISE_IF("Failed to read file '" << path.string() << "':\n"
<< "Detected file version is '" << strWriterVersion << "'"
<< " whereas current version is '" << Writer::s_VERSION << "'", Writer::s_VERSION != strWriterVersion);
FW_RAISE_IF("Failed to read file '" << path.string() << "':\n"
FW_RAISE_IF("Failed to read file '" << path.string() << "':\n"
<< "Detected atoms version is '" << strAtomsVersion << "'"
<< " whereas current version is '" << ::fwAtoms::Base::s_VERSION << "'",
::fwAtoms::Base::s_VERSION != strAtomsVersion);
......@@ -255,6 +255,12 @@ Hdf5Visitor(const ::boost::filesystem::path & path)
}
object->setAttributes(attributes);
// Managing object with no id
if(object->getMetaInfo("ID_METAINFO").empty())
{
object->setMetaInfo("ID_METAINFO", ::fwTools::UUID::generateUUID());
}
return object;
}
......
......@@ -36,6 +36,11 @@ public:
* its represents a CT image of a knee ( 400 slices ).
*/
FWTEST_API static bool checkSeriesACHGenou( const SPTR(::fwMedData::ImageSeries) &series );
/**
* @brief This method is the same as checkSeriesACHGenou but it checks trimmed strings instead of even sized strings
*/
FWTEST_API static bool checkSeriesACHGenouTrimmed( const SPTR(::fwMedData::ImageSeries) &series );
};
......
......@@ -228,6 +228,197 @@ bool DicomReaderTest::checkSeriesACHGenou( const ::fwMedData::ImageSeries::sptr
}
//------------------------------------------------------------------------------
bool DicomReaderTest::checkSeriesACHGenouTrimmed( const ::fwMedData::ImageSeries::sptr &series )
{
bool ok = true;
bool notReallyChecked = true;
::fwMedData::Patient::sptr patient = series->getPatient();
::fwMedData::Study::sptr study = series->getStudy();
::fwMedData::Equipment::sptr equipment = series->getEquipment();
// Study, Acquisition
::fwData::Image::sptr img = series->getImage();
//# Dicom-File-Format
//
//# Dicom-Meta-Information-Header
//# Used TransferSyntax:
//(0002,0000) UL 224 # 4,1 File Meta Information Group Length
//(0002,0001) OB 00\01 # 2,1 File Meta Information Version
//(0002,0002) UI [1.2.840.10008.5.1.4.1.1.2] # 26,1 Media Storage SOP Class UID
//(0002,0003) UI [1.2.392.200036.9116.2.6.1.48.1211418863.1225184712.380696] # 58,1 Media Storage SOP Instance UID
//(0002,0010) UI [1.2.840.10008.1.2.1] # 20,1 Transfer Syntax UID
//(0002,0012) UI [1.2.250.1.119.1.1.1.1.1.1.33.3.8.13.7] # 38,1 Implementation Class UID
//(0002,0013) SH [scanplus_33 ] # 12,1 Implementation Version Name
//(0002,0016) AE [scanplus] # 8,1 Source Application Entity Title
//
//# Dicom-Data-Set
//# Used TransferSyntax: 1.2.840.10008.1.2.1
//(0008,0000) UL 426 # 4,1 Generic Group Length
//(0008,0008) CS [ORIGINAL\PRIMARY\AXIAL] # 22,2-n Image Type
//(0008,0016) UI [1.2.840.10008.5.1.4.1.1.2] # 26,1 SOP Class UID
//(0008,0018) UI [1.2.392.200036.9116.2.6.1.48.1211418863.1225184712.380696] # 58,1 SOP Instance UID
//(0008,0020) DA [20081028] # 8,1 Study Date
CHECK_VALUE(ok,"Study Date doesn't match : ", "20081028",study->getDate());
//(0008,0021) DA [20081028] # 8,1 Series Date
CHECK_VALUE(ok,"Series Modality doesn't match : ", "20081028", series->getDate() );
//(0008,0022) DA [20081028] # 8,1 Acquisition Date
//(0008,0023) DA [20081028] # 8,1 Content Date
//(0008,0030) TM [174327.000] # 10,1 Study Time
CHECK_VALUE(ok,"Study Time doesn't match : ", "174327.000", study->getTime() );
//(0008,0031) TM [180156.734] # 10,1 Series Time
CHECK_VALUE(ok,"Series Modality doesn't match : ", "180156.734", series->getTime() );
//(0008,0032) TM [174446.850] # 10,1 Acquisition Time
//(0008,0033) TM [174502.095] # 10,1 Content Time
//(0008,0050) SH [12514 ] # 6,1 Accession Number
//(0008,0060) CS [CT] # 2,1 Modality
CHECK_VALUE(ok,"Series Modality doesn't match : ", "CT", series->getModality() );
//(0008,0070) LO [TOSHIBA ] # 8,1 Manufacturer
//(0008,0080) LO [SCANNER DE LA MODER ] # 20,1 Institution Name
CHECK_VALUE(ok,"Equipment's Institution Name doesn't match : ", "SCANNER DE LA MODER", equipment->getInstitutionName() );
//(0008,0090) PN [DR MOREL] # 8,1 Referring Physician's Name
CHECK_VALUE(ok,"Study Referring Physician's Name doesn't match : ", "DR MOREL", study->getReferringPhysicianName() );
//(0008,1010) SH [00000000001 ] # 12,1 Station Name
//(0008,103e) LO [ OS 0.5 ] # 10,1 Series Description
CHECK_VALUE(ok,"Study Description doesn't match : ", "OS 0.5", series->getDescription() );
CHECK_VALUE(ok,"Study Description doesn't match : ", "", study->getDescription() ); // 0008,1030
//(0008,1040) LO [ID_DEPARTMENT ] # 14,1 Institutional Department Name
{
fwMedData::DicomValuesType physiciansName;
ok &= (physiciansName == series->getPerformingPhysiciansName());
OSLM_ERROR_IF ("Name of the physician(s) administering the Series doesn't match : ", (physiciansName == series->getPerformingPhysiciansName()));
}
//(0008,1090) LO [Aquilion] # 8,1 Manufacturer's Model Name
//(0010,0000) UL 104 # 4,1 Generic Group Length
//(0010,0010) PN [CHARNOZ ARNAUD] # 14,1 Patient's Name
CHECK_VALUE(ok,"Patient's Name doesn't match : ", "CHARNOZ ARNAUD", patient->getName() );
//(0010,0020) LO [12592 ARTHRO GENOU G ] # 22,1 Patient ID
CHECK_VALUE(ok,"Patient ID doesn't match : ", "12592 ARTHRO GENOU G", patient->getPatientId() );
//(0010,0030) DA [19790618] # 8,1 Patient's Birth Date
CHECK_VALUE(ok,"Patient's Birth Date doesn't match : ", "19790618", patient->getBirthdate() );
//(0010,0040) CS [M ] # 2,1 Patient's Sex
CHECK_VALUE(ok,"Patient's Sex doesn't match :", "M" , patient->getSex() );
//(0010,1010) AS [029Y] # 4,1 Patient's Age
CHECK_VALUE(ok,"Study Patient's Age doesn't match :", "029Y" , study->getPatientAge() );
//(0010,4000) LT [ARTHRO] # 6,1 Patient Comments
//(0018,0000) UL 284 # 4,1 Generic Group Length
//(0018,0015) CS [DR MOREL] # 8,1 Body Part Examined
//(0018,0022) CS [HELICAL_CT] # 10,1-n Scan Options
//(0018,0050) DS [0.5 ] # 4,1 Slice Thickness
//(0018,0060) DS [120 ] # 4,1 KVP
//(0018,0090) DS [400.00] # 6,1 Data Collection Diameter
//(0018,1000) LO [C4522344] # 8,1 Device Serial Number
//(0018,1020) LO [V3.20ER005] # 10,1-n Software Version(s)
//(0018,1030) LO [ARTHRO GENOU] # 12,1 Protocol Name
//(0018,1100) DS [196.875 ] # 8,1 Reconstruction Diameter
//(0018,1120) DS [+0.0] # 4,1 Gantry/Detector Tilt
//(0018,1130) DS [+90.00] # 6,1 Table Height
//(0018,1140) CS [CW] # 2,1 Rotation Direction
//(0018,1150) IS [500 ] # 4,1 Exposure Time
//(0018,1151) IS [200 ] # 4,1 X-Ray Tube Current
//(0018,1152) IS [100 ] # 4,1 Exposure
//(0018,1170) IS [24] # 2,1 Generator Power
//(0018,1190) DS [0.9\0.8 ] # 8,1-n Focal Spot(s)
//(0018,1210) SH [FC30] # 4,1-n Convolution Kernel
//(0018,5100) CS [FFS ] # 4,1 Patient Position
//(0018,9345) UN (FD) 23.1 # 8,1 CTDIvol
//(0020,0000) UL 370 # 4,1 Generic Group Length
//(0020,000d) UI [1.2.392.200036.9116.2.6.1.48.1211418863.1225183167.375775] # 58,1 Study Instance UID
CHECK_VALUE(ok,"Study Instance UID doesn't match :", "1.2.392.200036.9116.2.6.1.48.1211418863.1225183167.375775" , study->getInstanceUID() );
//(0020,000e) UI [1.2.392.200036.9116.2.6.1.48.1211418863.1225184516.765855] # 58,1 Series Instance UID
CHECK_VALUE(ok,"Series Instance UID doesn't match :", "1.2.392.200036.9116.2.6.1.48.1211418863.1225184516.765855" , series->getInstanceUID() );
//(0020,0010) SH [12514 ] # 6,1 Study ID
//(0020,0011) IS [3 ] # 2,1 Series Number
//(0020,0012) IS [3 ] # 2,1 Acquisition Number
//(0020,0013) IS [404 ] # 4,1 Instance Number
//(0020,0020) CS [L\P ] # 4,2 Patient Orientation
//(0020,0032) DS [-36.71875\-88.28125\1350.300] # 28,3 Image Position (Patient)
if(!img)
{
OSLM_ERROR( "Missing image." );
return false;
}
CHECK_VALUE_WITH_TOLERANCE(ok,"Image x origin doesn't match :", -36.71875 , img->getOrigin()[0], 0.01);
CHECK_VALUE_WITH_TOLERANCE(ok,"Image y origin doesn't match :", -88.28125 , img->getOrigin()[1], 0.01);
CHECK_VALUE_WITH_TOLERANCE(ok,"Image z origin doesn't match :", 1350.300 , img->getOrigin()[2], 0.01);
//(0020,0037) DS [1.00000\0.00000\0.00000\0.00000\1.00000\0.00000 ] # 48,6 Image Orientation (Patient)
//(0020,0052) UI [1.2.392.200036.9116.2.6.1.48.1211418863.1225183409.15274] # 56,1 Frame of Reference UID
//(0020,1040) LO (no value) # 0,1 Position Reference Indicator
//(0020,1041) DS [+161.20 ] # 8,1 Slice Location
//(0028,0000) UL 158 # 4,1 Generic Group Length
//(0028,0002) US 1 # 2,1 Samples per Pixel
//(0028,0004) CS [MONOCHROME2 ] # 12,1 Photometric Interpretation
//(0028,0010) US 512 # 2,1 Rows
//(0028,0011) US 512 # 2,1 Columns
CHECK_VALUE(ok,"Image x size doesn't match :", 512 , img->getSize()[0] );
CHECK_VALUE(ok,"Image y size doesn't match :", 512 , img->getSize()[1] );
CHECK_VALUE(ok,"Image z size doesn't match :", 404 , img->getSize()[2] );
//(0028,0030) DS [0.384\0.384 ] # 12,2 Pixel Spacing
CHECK_VALUE_WITH_TOLERANCE(ok,"Image x spacing doesn't match :", 0.384 , img->getSpacing()[0], 0.001);
CHECK_VALUE_WITH_TOLERANCE(ok,"Image y spacing doesn't match :", 0.384 , img->getSpacing()[1], 0.001);
CHECK_VALUE_WITH_TOLERANCE(ok,"Image z spacing doesn't match :", 0.399 , img->getSpacing()[2], 0.001);
//(0028,0100) US 16 # 2,1 Bits Allocated
//(0028,0101) US 16 # 2,1 Bits Stored
CHECK_VALUE(notReallyChecked,"Image Bits Allocated correspond :", 16, img->getType().sizeOf() * 8 );
//(0028,0102) US 15 # 2,1 High Bit
//(0028,0103) US 1 # 2,1 Pixel Representation
CHECK_VALUE(notReallyChecked,"Image Bits Allocated correspond :", false, img->getType().isSigned() );
//(0028,1050) DS [500 ] # 4,1-n Window Center
CHECK_VALUE(ok,"Image Window Center correspond :", 500, img->getWindowCenter() );
//(0028,1051) DS [2500] # 4,1-n Window Width
CHECK_VALUE(ok,"Image Window Width correspond :", 2500, img->getWindowWidth() );
//(0028,1052) DS [-1024 ] # 6,1 Rescale Intercept
//(0028,1053) DS [1 ] # 2,1 Rescale Slope
//(0040,0000) UL 116 # 4,1 Generic Group Length
//(0040,0002) DA [20081028] # 8,1 Scheduled Procedure Step Start Date
//(0040,0003) TM [174327.000] # 10,1 Scheduled Procedure Step Start Time
//(0040,0004) DA [20081028] # 8,1 Scheduled Procedure Step End Date
//(0040,0005) TM [181327.000] # 10,1 Scheduled Procedure Step End Time
//(0040,0244) DA [20081028] # 8,1 Performed Procedure Step Start Date
//(0040,0245) TM [174327.000] # 10,1 Performed Procedure Step Start Time
//(0040,0253) SH [12325 ] # 6,1 Performed Procedure Step ID
//(7005,0000) UL 546 # 4,1 Generic Group Length
//(7005,0010) LO [TOSHIBA_MEC_CT3 ] # 16,1 Private Creator
//(7005,1007) UN (DS) [335\269 ] # 8,2 Reconstruction Center
//(7005,1008) UN (DS) [0.5 ] # 4,1 Detector Slice Thickness in mm
//(7005,1009) UN (LO) [1111111111111111] # 16,1 Number of Detector rows to Reconstruct
//(7005,100a) UN (DS) [+5.50 ] # 6,1 Table Speed in mm/rot
//(7005,100b) UN (SH) [ORG ] # 4,1 Filter
//(7005,100d) UN (CS) [DR MOREL] # 8,1 Organ
//(7005,100e) UN (SH) [IMG ] # 4,1 File Type Remarks
//(7005,100f) UN (SH) [FF] # 2,1 Direction
//(7005,1011) UN (LT) [Vol.] # 4,1 Series Comment
//(7005,1012) UN (SH) [SU] # 2,1 Position
//(7005,1013) UN (US) 1 # 2,1 Expert Plan No.
//(7005,1016) UN (UI) [1.2.392.200036.9116.2.6.1.48.1211418863.1225184516.747732] # 58,1 Volume UID
//(7005,1017) UN (US) 404 # 2,1 Total Frame Count in the Volume
//(7005,1018) UN (US) 404 # 2,1 Frame No.
//(7005,1019) UN (UL) 1642763 # 4,1 Frame Sort Key
//(7005,101a) UN (US) 1 # 2,1 Frame Sort Order
//(7005,101b) UN (SH) [FC30] # 4,1 Convolution Kernel
//(7005,101d) UN (UL) 9 # 4,1 Reconstruction Number
//(7005,101e) UN (UL) 13 # 4,1 Raw Data Number
//(7005,101f) UN (LO) [20081028180156768480] # 20,1 Volume Number
//(7005,1020) UN (UL) 3 # 4,1 Local Series Number
//(7005,1021) UN (LO) [BOOST ] # 6,1 Decrease in Artifact Filter
//(7005,1022) UN (DS) [0.40] # 4,1 Reconstruction Interval
//(7005,1023) UN (DS) [0.688 ] # 6,1 Pitch Factor
//(7005,1024) UN (DA) [20081024] # 8,1 The Acquisition Date of NRA
//(7005,1030) UN (CS) [CT] # 2,1 Main Modality in Study
//(7005,1040) UN (FD) 402.4 # 8,1 DLP Dose Length Product
return ok;
}
} // namespace fwTest
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment