#include "vvSlicerManagerCommand.h"
#include "vvInteractorStyleNavigator.h"
#include "vvLandmarks.h"
-#include "vvImageReader.h"
-#include "vvImageReader.h"
#include "vvMesh.h"
#include "vvImageMapToWLColors.h"
#include "vvBlendImageActor.h"
mFusionWindow = 1000;
mFusionLevel = 1000;
- mReader = NULL;
- mImage = NULL;
- mVF=NULL;
- mVectorReader = NULL;
- mOverlayReader = NULL;
- mFusionReader = NULL;
mLandmarks = NULL;
mLinkedId.resize(0);
- for ( int i = 0; i < numberOfSlicers; i++) {
- vvSlicer *slicer = vvSlicer::New();
- mSlicers.push_back(slicer);
- }
+ for ( int i = 0; i < numberOfSlicers; i++)
+ mSlicers.push_back(vtkSmartPointer<vvSlicer>::New());
+
mPreviousSlice.resize(numberOfSlicers);
mPreviousTSlice.resize(numberOfSlicers);
}
//----------------------------------------------------------------------------
vvSlicerManager::~vvSlicerManager()
{
- for ( unsigned int i = 0; i < mSlicers.size(); i++) {
- if (mSlicers[i] != NULL)
- mSlicers[i]->Delete();
- }
- if (mReader) {
- delete mReader;
- }
- if (mVectorReader) {
- delete mVectorReader;
- }
- if (mOverlayReader) {
- delete mOverlayReader;
- }
- if (mFusionReader) {
- delete mFusionReader;
- }
if (mLandmarks)
delete mLandmarks;
}
mBaseFileName = vtksys::SystemTools::GetFilenameName(vtksys::SystemTools::GetFilenameWithoutLastExtension(mFileName));
mBaseFileNameNumber = number;
- for(unsigned int i=0; i<mSlicers.size(); i++) {
- mSlicers[i]->SetFileName(vtksys::SystemTools::GetFilenameWithoutLastExtension(filename));
- }
-
+ mFileName = mBaseFileName;
if (number != 0) {
mFileName.append("_"+clitk::toString(number));
}
+ mFileName.append(vtksys::SystemTools::GetFilenameLastExtension(filename));
+
+ for(unsigned int i=0; i<mSlicers.size(); i++) {
+ mSlicers[i]->SetFileName(mFileName);//vtksys::SystemTools::GetFilenameWithoutLastExtension(filename));
+ }
+
}
//------------------------------------------------------------------------------
bool vvSlicerManager::SetImage(std::string filename, LoadedImageType type, int n, unsigned int slice)
{
mType = type;
- if (mReader == NULL)
- mReader = new vvImageReader;
+ if (mReader.IsNull())
+ mReader = vvImageReader::New();
std::vector<std::string> filenames;
filenames.push_back(filename);
mReader->SetInputFilenames(filenames);
mFileName = vtksys::SystemTools::GetFilenameName(mFileName);
mFileName = fileWithoutExtension + vtksys::SystemTools::GetFilenameExtension(filenames[0]);
- if (mReader == NULL)
- mReader = new vvImageReader;
+ if (mReader.IsNull())
+ mReader = vvImageReader::New();
mReader->SetInputFilenames(filenames);
mReader->Update(type);
mLastError = " Overlay dimension cannot be greater then reference image!";
return false;
}
- if (mOverlayReader == NULL)
- mOverlayReader = new vvImageReader;
+ if (mOverlayReader.IsNull())
+ mOverlayReader = vvImageReader::New();
std::vector<std::string> filenames;
filenames.push_back(filename);
mOverlayReader->SetInputFilenames(filenames);
mLastError = " Overlay dimension cannot be greater then reference image!";
return false;
}
- if (mFusionReader == NULL)
- mFusionReader = new vvImageReader;
+ if (mFusionReader.IsNull())
+ mFusionReader = vvImageReader::New();
std::vector<std::string> filenames;
filenames.push_back(filename);
mFusionReader->SetInputFilenames(filenames);
//----------------------------------------------------------------------------
bool vvSlicerManager::SetVF(std::string filename)
{
- if (mVectorReader == NULL)
- mVectorReader = new vvImageReader;
+ if (mVectorReader.IsNull())
+ mVectorReader = vvImageReader::New();
mVectorReader->SetInputFilename(filename);
mVectorReader->Update(VECTORFIELD);
if (mVectorReader->GetLastError().size() != 0) {
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
-void vvSlicerManager::SetCursorVisibility(int s)
+void vvSlicerManager::SetCursorAndCornerAnnotationVisibility(int s)
{
for ( unsigned int i = 0; i < mSlicers.size(); i++) {
mSlicers[i]->SetCursorVisibility(s);
+ mSlicers[i]->SetCornerAnnotationVisibility(s);
}
}
//----------------------------------------------------------------------------
-
//----------------------------------------------------------------------------
void vvSlicerManager::SetOpacity(int i, double factor)
{
switch (mSlicers[slicer]->GetSliceOrientation()) {
case vtkImageViewer2::SLICE_ORIENTATION_XY:
- if (mSlicers[slicer]->GetSlice() == (int)floor(z))
- mSlicers[slicer]->Render();
- else
+ if (mSlicers[slicer]->GetSlice() != (int)floor(z))
mSlicers[slicer]->SetSlice((int)floor(z));
break;
case vtkImageViewer2::SLICE_ORIENTATION_XZ:
- if (mSlicers[slicer]->GetSlice() == (int)floor(y))
- mSlicers[slicer]->Render();
- else
+ if (mSlicers[slicer]->GetSlice() != (int)floor(y))
mSlicers[slicer]->SetSlice((int)floor(y));
break;
case vtkImageViewer2::SLICE_ORIENTATION_YZ:
- if (mSlicers[slicer]->GetSlice() == (int)floor(x))
- mSlicers[slicer]->Render();
- else
+ if (mSlicers[slicer]->GetSlice() != (int)floor(x))
mSlicers[slicer]->SetSlice((int)floor(x));
break;
}
+ mSlicers[slicer]->Render();
for ( unsigned int i = 0; i < mSlicers.size(); i++) {
if (i != (unsigned int)slicer && mSlicers[i]->GetImageActor()->GetVisibility()
}
switch (mSlicers[i]->GetSliceOrientation()) {
case vtkImageViewer2::SLICE_ORIENTATION_XY:
- if (mSlicers[i]->GetSlice() == (int)floor(z))
- mSlicers[i]->Render();
- else
+ if (mSlicers[i]->GetSlice() != (int)floor(z))
mSlicers[i]->SetSlice((int)floor(z));
break;
case vtkImageViewer2::SLICE_ORIENTATION_XZ:
- if (mSlicers[i]->GetSlice() == (int)floor(y))
- mSlicers[i]->Render();
- else
+ if (mSlicers[i]->GetSlice() != (int)floor(y))
mSlicers[i]->SetSlice((int)floor(y));
break;
case vtkImageViewer2::SLICE_ORIENTATION_YZ:
- if (mSlicers[i]->GetSlice() == (int)floor(x))
- mSlicers[i]->Render();
- else
+ if (mSlicers[i]->GetSlice() != (int)floor(x))
mSlicers[i]->SetSlice((int)floor(x));
break;
}
+
+ mSlicers[i]->Render();
+
UpdateSlice(i);
UpdateTSlice(i);
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
-void vvSlicerManager::UpdateLinkedNavigation(vvSlicer *slicer, bool bPropagate)
+void vvSlicerManager::UpdateLinkedNavigation(vvSlicer *refSlicer, bool bPropagate)
{
+ vtkCamera *refCam = refSlicer->GetRenderer()->GetActiveCamera();
+ double refPosition[3], refFocal[3];
+ refCam->GetPosition(refPosition);
+ refCam->GetFocalPoint(refFocal);
+
for ( unsigned int i = 0; i < mSlicers.size(); i++) {
- vtkCamera *camera = mSlicers[i] ->GetRenderer()->GetActiveCamera();
- vtkCamera *refCam = slicer->GetRenderer()->GetActiveCamera();
+ vtkCamera *camera = mSlicers[i]->GetRenderer()->GetActiveCamera();
camera->SetParallelScale(refCam->GetParallelScale());
double position[3], focal[3];
camera->GetPosition(position);
camera->GetFocalPoint(focal);
- double refPosition[3], refFocal[3];
- refCam->GetPosition(refPosition);
- refCam->GetFocalPoint(refFocal);
-
- if(slicer->GetSliceOrientation()==mSlicers[i]->GetSliceOrientation()) {
+ if(refSlicer->GetSliceOrientation()==mSlicers[i]->GetSliceOrientation()) {
for(int i=0; i<3; i++) {
position[i] = refPosition[i];
focal[i] = refFocal[i];
}
}
- if(slicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XY) {
+ if(refSlicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XY) {
if(mSlicers[i]->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XZ) {
position[0] = refPosition[0];
focal[0] = refFocal[0];
}
}
- if(slicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XZ) {
+ if(refSlicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XZ) {
if(mSlicers[i]->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_YZ) {
position[2] = refPosition[2];
focal[2] = refFocal[2];
}
}
- if(slicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_YZ) {
+ if(refSlicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_YZ) {
if(mSlicers[i]->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XY) {
position[1] = refPosition[1];
focal[1] = refFocal[1];
Render();
if(bPropagate)
for (std::list<std::string>::const_iterator i = mLinkedId.begin(); i != mLinkedId.end(); i++)
- emit UpdateLinkedNavigation(*i, this);
+ emit UpdateLinkedNavigation(*i, this, refSlicer);
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
void vvSlicerManager::RemoveActor(const std::string& actor_type, int overlay_index)
{
- if (actor_type =="overlay") {
- delete mOverlayReader;
+ if (actor_type =="overlay")
mOverlayReader = NULL;
- }
- if (actor_type =="fusion") {
- delete mFusionReader;
+ if (actor_type =="fusion")
mFusionReader = NULL;
- }
- for (unsigned int i = 0; i < mSlicers.size(); i++) {
+ for (unsigned int i = 0; i < mSlicers.size(); i++)
mSlicers[i]->RemoveActor(actor_type,overlay_index);
- }
+
if (actor_type=="vector") {
mVF=NULL;
- if (mVectorReader) {
- delete mVectorReader;
- mVectorReader=NULL;
- }
+ mVectorReader=NULL;
}
}
//----------------------------------------------------------------------------