mScale = 1;
mVFLog = 0;
mVFWidth = 1;
+ mVFColor[0] = 0;
+ mVFColor[1] = 1;
+ mVFColor[2] = 0;
std::string text = "F1 = sagital; F2 = coronal; F3 = axial\n";
text += "F5 = horizontal flip; F6 = vertical flip\n\n";
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+void vvSlicer::SetCornerAnnotationVisibility(bool s)
+{
+ ca->SetVisibility(s);
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+bool vvSlicer::GetCornerAnnotationVisibility()
+{
+ return ca->GetVisibility();
+}
+//------------------------------------------------------------------------------
+
+
//------------------------------------------------------------------------------
vvSlicer::~vvSlicer()
{
mGlyphFilter->SetVectorModeToUseVector();
mGlyphFilter->SetColorModeToColorByVector();
+ if (!mVFColorLUT)
+ mVFColorLUT = vtkSmartPointer<vtkLookupTable>::New();
+
+ double mVFColorHSV[3];
+ vtkMath::RGBToHSV(mVFColor, mVFColorHSV);
+ mVFColorLUT->SetHueRange(mVFColorHSV[0], mVFColorHSV[0]);
+ mVFColorLUT->SetSaturationRange(mVFColorHSV[1],mVFColorHSV[1]);
+ mVFColorLUT->SetValueRange(mVFColorHSV[2], mVFColorHSV[2]);
+
if (!mVFMapper)
mVFMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
- //mVFMapper->SetInputConnection(mGlyphFilter->GetOutputPort());
mVFMapper->SetInput(mGlyphFilter->GetOutput());
mVFMapper->ImmediateModeRenderingOn();
+ mVFMapper->SetLookupTable(mVFColorLUT);
if (!mVFActor)
mVFActor = vtkSmartPointer<vtkActor>::New();
mClipBox->SetBounds(bounds);
UpdateLandmarks();
}
- // DD(mLandActor->GetPosition()[2]);
- // DD(Renderer->GetActiveCamera()->GetPosition()[2]);
mLandActor->SetPosition(0,0,-1.5);
/*
if (Renderer->GetActiveCamera()->GetPosition()[2] > this->Slice)
mClipBox->SetBounds(bounds);
UpdateLandmarks();
}
- // DD(mLandActor->GetPosition()[1]);
- //DD(Renderer->GetActiveCamera()->GetPosition()[1]);
if (Renderer->GetActiveCamera()->GetPosition()[1] > this->Slice)
mLandActor->SetPosition(0,1.5,0);
else
mClipBox->SetBounds(bounds);
UpdateLandmarks();
}
- // DD(mLandActor->GetPosition()[1]);
- // DD(Renderer->GetActiveCamera()->GetPosition()[1]);
if (Renderer->GetActiveCamera()->GetPosition()[0] > this->Slice)
mLandActor->SetPosition(1.5,0,0);
else
}
//----------------------------------------------------------------------------
+//----------------------------------------------------------------------------
+double vvSlicer::GetScalarComponentAsDouble(vtkImageData *image, int X, double Y, double Z, int &ix, int &iy, int &iz, int component)
+{
+ ix = lrint(X);
+ iy = lrint(Y);
+ iz = lrint(Z);
+ if (ix < image->GetWholeExtent()[0] ||
+ ix > image->GetWholeExtent()[1] ||
+ iy < image->GetWholeExtent()[2] ||
+ iy > image->GetWholeExtent()[3] ||
+ iz < image->GetWholeExtent()[4] ||
+ iz > image->GetWholeExtent()[5] )
+ return sqrt(-1.);
+
+ image->SetUpdateExtent(ix, ix, iy, iy, iz, iz);
+ image->Update();
+ return image->GetScalarComponentAsDouble(ix, iy, iz, component);
+}
+//----------------------------------------------------------------------------
+
//----------------------------------------------------------------------------
void vvSlicer::Render()
{
Y <= this->GetInput()->GetWholeExtent()[3] &&
Z >= this->GetInput()->GetWholeExtent()[4] &&
Z <= this->GetInput()->GetWholeExtent()[5]) {
- int ix = lrint(X);
- int iy = lrint(Y);
- int iz = lrint(Z);
+ int ix, iy, iz;
+ double value = this->GetScalarComponentAsDouble(this->GetInput(), X, Y, Z, ix, iy, iz);
+
std::stringstream pixel1;
std::stringstream pixel2;
std::stringstream pixel3;
pixel2 << iy;
pixel3 << iz;
temps << mCurrentTSlice;
- this->GetInput()->SetUpdateExtent(ix, ix, iy, iy, iz, iz);
- this->GetInput()->Update();
- double value = this->GetInput()->GetScalarComponentAsDouble(ix, iy, iz, 0);
std::stringstream val;
val << value;
}
//----------------------------------------------------------------------------
-
-
-
-
-
+//----------------------------------------------------------------------------
+void vvSlicer::SetVFColor(double r, double g, double b)
+{
+ double mVFColorHSV[3];
+ mVFColor[0] = r;
+ mVFColor[1] = g;
+ mVFColor[2] = b;
+
+ vtkMath::RGBToHSV(mVFColor, mVFColorHSV);
+ mVFColorLUT->SetHueRange(mVFColorHSV[0], mVFColorHSV[0]);
+ mVFColorLUT->SetSaturationRange(mVFColorHSV[1],mVFColorHSV[1]);
+ mVFColorLUT->SetValueRange(mVFColorHSV[2], mVFColorHSV[2]);
+
+ this->Render();
+}