|
@@ -41,14 +41,15 @@ namespace
|
|
|
class RenderWindowItem
|
|
|
{
|
|
|
public:
|
|
|
- RenderWindowItem(const double rendererBackgroundColor[3], double colorWindow, double colorLevel);
|
|
|
+ RenderWindowItem(const double rendererBackgroundColor[3], const double highlightedBoxColor[3],
|
|
|
+ double colorWindow, double colorLevel);
|
|
|
void SetViewport(double xMin, double yMin, double viewportWidth, double viewportHeight);
|
|
|
|
|
|
/// Create the actor supporing the image mapper
|
|
|
void SetupImageMapperActor(double colorWindow, double colorLevel);
|
|
|
|
|
|
/// Create a box around the renderer.
|
|
|
- void SetupHighlightedBoxActor(bool visible = false);
|
|
|
+ void SetupHighlightedBoxActor(const double highlightedBoxColor[3], bool visible = false);
|
|
|
|
|
|
/// Set HighlightedBox color
|
|
|
void SetHighlightedBoxColor(double* newHighlightedBoxColor);
|
|
@@ -64,6 +65,7 @@ public:
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
RenderWindowItem::RenderWindowItem(const double rendererBackgroundColor[3],
|
|
|
+ const double highlightedBoxColor[3],
|
|
|
double colorWindow, double colorLevel)
|
|
|
{
|
|
|
// Instanciate a renderer
|
|
@@ -73,7 +75,7 @@ RenderWindowItem::RenderWindowItem(const double rendererBackgroundColor[3],
|
|
|
rendererBackgroundColor[2]);
|
|
|
|
|
|
this->SetupImageMapperActor(colorWindow, colorLevel);
|
|
|
- this->SetupHighlightedBoxActor();
|
|
|
+ this->SetupHighlightedBoxActor(highlightedBoxColor);
|
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
@@ -105,7 +107,7 @@ void RenderWindowItem::SetupImageMapperActor(double colorWindow, double colorLev
|
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
-void RenderWindowItem::SetupHighlightedBoxActor(bool visible)
|
|
|
+void RenderWindowItem::SetupHighlightedBoxActor(const double highlightedBoxColor[3], bool visible)
|
|
|
{
|
|
|
assert(this->Renderer);
|
|
|
assert(!this->HighlightedBoxActor);
|
|
@@ -113,11 +115,11 @@ void RenderWindowItem::SetupHighlightedBoxActor(bool visible)
|
|
|
// Create a highlight actor (2D box around viewport)
|
|
|
VTK_CREATE(vtkPolyData, poly);
|
|
|
VTK_CREATE(vtkPoints, points);
|
|
|
- double eps = 0.0;
|
|
|
- points->InsertNextPoint(eps, eps, 0);
|
|
|
- points->InsertNextPoint(1, eps, 0);
|
|
|
- points->InsertNextPoint(1, 1, 0);
|
|
|
- points->InsertNextPoint(eps, 1, 0);
|
|
|
+ double eps = 0.00;
|
|
|
+ points->InsertNextPoint(eps, eps, 0); // bottom-left
|
|
|
+ points->InsertNextPoint(1 + eps, eps, 0); // bottom-right
|
|
|
+ points->InsertNextPoint(1 + eps, 1 + eps, 0); // top-right
|
|
|
+ points->InsertNextPoint(eps, 1 + eps, 0); // top-left
|
|
|
|
|
|
VTK_CREATE(vtkCellArray, cells);
|
|
|
cells->InsertNextCell(5);
|
|
@@ -139,7 +141,8 @@ void RenderWindowItem::SetupHighlightedBoxActor(bool visible)
|
|
|
|
|
|
this->HighlightedBoxActor = vtkSmartPointer<vtkActor2D>::New();
|
|
|
this->HighlightedBoxActor->SetMapper(polyDataMapper);
|
|
|
- this->HighlightedBoxActor->GetProperty()->SetColor(0, 1, 0); // Default to green
|
|
|
+ this->HighlightedBoxActor->GetProperty()->SetColor(
|
|
|
+ highlightedBoxColor[0], highlightedBoxColor[1], highlightedBoxColor[2]); // Default to green
|
|
|
this->HighlightedBoxActor->GetProperty()->SetDisplayLocationToForeground();
|
|
|
this->HighlightedBoxActor->GetProperty()->SetLineWidth(3); // wide enough so not clipped
|
|
|
this->HighlightedBoxActor->SetVisibility(visible);
|
|
@@ -531,7 +534,8 @@ void vtkLightBoxRendererManager::SetRenderWindowLayout(int rowCount, int columnC
|
|
|
while(extraItem > 0)
|
|
|
{
|
|
|
RenderWindowItem * item =
|
|
|
- new RenderWindowItem(this->Internal->RendererBackgroundColor,
|
|
|
+ new RenderWindowItem(this->Internal->RendererBackgroundColor,
|
|
|
+ this->Internal->HighlightedBoxColor,
|
|
|
this->Internal->ColorWindow, this->Internal->ColorLevel);
|
|
|
item->ImageMapper->SetInput(this->Internal->ImageData);
|
|
|
this->Internal->RenderWindowItemList.push_back(item);
|
|
@@ -590,6 +594,27 @@ void vtkLightBoxRendererManager::SetRenderWindowColumnCount(int newColumnCount)
|
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
+bool vtkLightBoxRendererManager::GetHighlightedById(int id)
|
|
|
+{
|
|
|
+ if (!this->IsInitialized())
|
|
|
+ {
|
|
|
+ vtkErrorMacro(<< "SetHighlightedById failed - vtkLightBoxRendererManager is NOT initialized");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (id < 0 || id >= static_cast<int>(this->Internal->RenderWindowItemList.size()))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return this->Internal->RenderWindowItemList.at(id)->HighlightedBoxActor->GetVisibility();
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+bool vtkLightBoxRendererManager::GetHighlighted(int rowId, int columnId)
|
|
|
+{
|
|
|
+ return this->GetHighlightedById(this->ComputeRenderWindowItemId(rowId, columnId));
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
void vtkLightBoxRendererManager::SetHighlightedById(int id, bool highlighted)
|
|
|
{
|
|
|
if (!this->IsInitialized())
|