t = 0;
else if ((unsigned int)t >= mImage->GetVTKImages().size())
t = mImage->GetVTKImages().size() -1;
+
+ if (mCurrentTSlice == t) return;
+
mCurrentTSlice = t;
this->SetInput(mImage->GetVTKImages()[t]);
if (mVF && mVFActor->GetVisibility())
SetContourSlice();
}
+//----------------------------------------------------------------------------
+
+
+//----------------------------------------------------------------------------
+int * vvSlicer::GetExtent() {
+ int *w_ext;
+ if (mUseReducedExtent) {
+ w_ext = mReducedExtent;
+ }
+ else w_ext = GetInput()->GetWholeExtent();
+ return w_ext;
+}
+//----------------------------------------------------------------------------
+
+
+//----------------------------------------------------------------------------
+int vvSlicer::GetOrientation() {
+ return this->SliceOrientation;
+}
+//----------------------------------------------------------------------------
+
//----------------------------------------------------------------------------
void vvSlicer::UpdateDisplayExtent()
{
if (i!=SliceOrientation) //SR: assumes that SliceOrientation is valid in ViewCoordinates (???)
{
- fLocalExtents[i*2 ] -= 0.2;
- fLocalExtents[i*2+1] += 0.2;
+ fLocalExtents[i*2 ] -= 0.2;
+ fLocalExtents[i*2+1] += 0.2;
}
}
this->Renderer->ViewToWorld(fLocalExtents[0], fLocalExtents[2], fLocalExtents[4]);
iLocalExtents[i*2+1] = lrint(fLocalExtents[i*2+1]);
if(iLocalExtents[i*2 ]>iLocalExtents[i*2+1])
- std::swap(iLocalExtents[i*2], iLocalExtents[i*2+1]);
+ std::swap(iLocalExtents[i*2], iLocalExtents[i*2+1]);
}
-
+
vtkSmartPointer<vtkExtractVOI> voiFilter = vtkExtractVOI::New();
voiFilter->SetInput(this->GetInput());
voiFilter->SetVOI(iLocalExtents);
+ voiFilter->Update();
+ if (!voiFilter->GetOutput()->GetNumberOfPoints())
+ {
+ min = 0;
+ max = 0;
+ return;
+ }
vtkSmartPointer<vtkImageAccumulate> accFilter = vtkImageAccumulate::New();
accFilter->SetInput(voiFilter->GetOutput());
accFilter->Update();
-
+
min = *(accFilter->GetMin());
max = *(accFilter->GetMax());
}
//----------------------------------------------------------------------------
void vvSlicer::Render()
{
+ // DD("Render");
+ //DD(SliceOrientation);
if (this->GetWindowLevel()->GetLookupTable() && !this->mOverlay && !this->mFusion)
{
legend->SetLookupTable(this->GetWindowLevel()->GetLookupTable());
pixel2 << (int)Y;
pixel3 << (int)Z;
temps << mCurrentTSlice;
- double value = this->GetInput()->GetScalarComponentAsDouble(
- (int)X,
- (int)Y,
- (int)Z,0);
+ double value = this->GetInput()->GetScalarComponentAsDouble(lrint(X),
+ lrint(Y),
+ lrint(Z),0);
std::stringstream val;
val << value;
this->Superclass::PrintSelf(os, indent);
}
//----------------------------------------------------------------------------
+
+