for (unsigned int i = 0; i < mSlicer->GetImage()->GetVTKImages().size(); i++) {
mSlicer->GetRenderer()->RemoveActor(mSquaresActorList[i]);
}
for (unsigned int i = 0; i < mSlicer->GetImage()->GetVTKImages().size(); i++) {
mSlicer->GetRenderer()->RemoveActor(mSquaresActorList[i]);
}
mSlicer = slicer;
// Create an actor for each time slice
for (unsigned int numImage = 0; numImage < mSlicer->GetImage()->GetVTKImages().size(); numImage++) {
mSlicer = slicer;
// Create an actor for each time slice
for (unsigned int numImage = 0; numImage < mSlicer->GetImage()->GetVTKImages().size(); numImage++) {
- vtkImageClip * mClipper = vtkImageClip::New();
- vtkMarchingSquares * mSquares = vtkMarchingSquares::New();
- vtkActor * mSquaresActor = vtkActor::New();
+ vtkImageClip * mClipper;// = vtkImageClip::New();
+ vtkMarchingSquares * mSquares;// = vtkMarchingSquares::New();
+ vtkActor * mSquaresActor;// = vtkActor::New();
CreateNewActor(&mSquaresActor, &mSquares, &mClipper, numImage);
mSquaresActorList.push_back(mSquaresActor);
mSquaresList.push_back(mSquares);
CreateNewActor(&mSquaresActor, &mSquares, &mClipper, numImage);
mSquaresActorList.push_back(mSquaresActor);
mSquaresList.push_back(mSquares);
for (unsigned int numImage = 0; numImage < image->GetVTKImages().size(); numImage++) {
mClipperList[numImage]->SetInput(image->GetVTKImages()[numImage]);
}
for (unsigned int numImage = 0; numImage < image->GetVTKImages().size(); numImage++) {
mClipperList[numImage]->SetInput(image->GetVTKImages()[numImage]);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvImageContour::Update(double value) {
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvImageContour::Update(double value) {
if (!mSlicer) return;
if (mPreviousValue == value) {
if (mPreviousSlice == mSlicer->GetSlice()) {
if (mPreviousTSlice == mSlicer->GetTSlice()) {
if (!mSlicer) return;
if (mPreviousValue == value) {
if (mPreviousSlice == mSlicer->GetSlice()) {
if (mPreviousTSlice == mSlicer->GetTSlice()) {
//------------------------------------------------------------------------------
void vvImageContour::UpdateWithPreserveMemoryMode() {
// Only change actor visibility if tslice change
//------------------------------------------------------------------------------
void vvImageContour::UpdateWithPreserveMemoryMode() {
// Only change actor visibility if tslice change
vtkMarchingSquares * mSquares = mSquaresList[mTSlice];
vtkImageClip * mClipper = mClipperList[mTSlice];
vtkActor * mSquaresActor = mSquaresActorList[mTSlice];
int orientation = ComputeCurrentOrientation();
vtkMarchingSquares * mSquares = mSquaresList[mTSlice];
vtkImageClip * mClipper = mClipperList[mTSlice];
vtkActor * mSquaresActor = mSquaresActorList[mTSlice];
int orientation = ComputeCurrentOrientation();
UpdateActor(mSquaresActor, mSquares, mClipper, mValue, orientation, mSlice);
mSquaresActorList[mTSlice]->VisibilityOn();
UpdateActor(mSquaresActor, mSquares, mClipper, mValue, orientation, mSlice);
mSquaresActorList[mTSlice]->VisibilityOn();
if (mPreviousTslice != mTSlice) {
if (mPreviousTslice != -1) mSquaresActorList[mPreviousTslice]->VisibilityOff();
}
if (mPreviousTslice != mTSlice) {
if (mPreviousTslice != -1) mSquaresActorList[mPreviousTslice]->VisibilityOff();
}
//------------------------------------------------------------------------------
void vvImageContour::InitializeCacheMode() {
//------------------------------------------------------------------------------
void vvImageContour::InitializeCacheMode() {
mPreviousSlice = mPreviousOrientation = 0;
int dim = mSlicer->GetImage()->GetNumberOfDimensions();
mListOfCachedContourActors.resize(dim);
for(int d=0; d<dim; d++) {
int size = mSlicer->GetImage()->GetSize()[d];
mPreviousSlice = mPreviousOrientation = 0;
int dim = mSlicer->GetImage()->GetNumberOfDimensions();
mListOfCachedContourActors.resize(dim);
for(int d=0; d<dim; d++) {
int size = mSlicer->GetImage()->GetSize()[d];
mListOfCachedContourActors[d].resize(size);
for(int j=0; j<size; j++) {
mListOfCachedContourActors[d][j] = NULL;
mListOfCachedContourActors[d].resize(size);
for(int j=0; j<size; j++) {
mListOfCachedContourActors[d][j] = NULL;
//------------------------------------------------------------------------------
void vvImageContour::UpdateWithFastCacheMode() {
//------------------------------------------------------------------------------
void vvImageContour::UpdateWithFastCacheMode() {
- vtkActor * mSquaresActor = (*actor = vtkActor::New());
- vtkImageClip * mClipper = (*clipper = vtkImageClip::New());
- vtkMarchingSquares * mSquares = (*squares = vtkMarchingSquares::New());
- vtkPolyDataMapper * mSquaresMapper = vtkPolyDataMapper::New();
+ vtkSmartPointer<vtkActor> mSquaresActor = (*actor = vtkSmartPointer<vtkActor>::New());
+ vtkSmartPointer<vtkImageClip> mClipper = (*clipper = vtkSmartPointer<vtkImageClip>::New());
+ vtkSmartPointer<vtkMarchingSquares> mSquares = (*squares = vtkSmartPointer<vtkMarchingSquares>::New());
+ vtkSmartPointer<vtkPolyDataMapper> mSquaresMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
vtkMarchingSquares * squares,
vtkImageClip * clipper,
double threshold, int orientation, int slice) {
vtkMarchingSquares * squares,
vtkImageClip * clipper,
double threshold, int orientation, int slice) {
for(int i=0; i<6; i++) extent2[i] = extent3[i];
double s = (double)extent[orientation*2]*(double)mSlicer->GetImage()->GetSpacing()[orientation]; // in mm
for(int i=0; i<6; i++) extent2[i] = extent3[i];
double s = (double)extent[orientation*2]*(double)mSlicer->GetImage()->GetSpacing()[orientation]; // in mm
clipper->SetOutputWholeExtent(extent2[0],extent2[1],extent2[2],
extent2[3],extent2[4],extent2[5]);
if (mHiddenImage) delete extent2;
// Move the actor to be visible
clipper->SetOutputWholeExtent(extent2[0],extent2[1],extent2[2],
extent2[3],extent2[4],extent2[5]);
if (mHiddenImage) delete extent2;
// Move the actor to be visible
// DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0]);
if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0] > slice) {
// DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0]);
if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0] > slice) {
// DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1]);
if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1] > slice) {
actor->SetPosition(0,1,0);
} else {
actor->SetPosition(0,-1,0);
}
// DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1]);
if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1] > slice) {
actor->SetPosition(0,1,0);
} else {
actor->SetPosition(0,-1,0);
}