/*========================================================================= Program: Visualization Toolkit Module: TestDendrogramItem.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "vtkDataSetAttributes.h" #include "vtkDendrogramItem.h" #include "vtkDoubleArray.h" #include "vtkMutableDirectedGraph.h" #include "vtkNew.h" #include "vtkStringArray.h" #include "vtkTree.h" #include "vtkContextActor.h" #include "vtkContextInteractorStyle.h" #include "vtkContextScene.h" #include "vtkContextTransform.h" #include "vtkNew.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" #include "vtkRegressionTestImage.h" //------------------------------------------------------------------------------ int TestDendrogramItem(int argc, char* argv[]) { vtkNew graph; vtkIdType root = graph->AddVertex(); vtkIdType internalOne = graph->AddChild(root); vtkIdType internalTwo = graph->AddChild(internalOne); vtkIdType a = graph->AddChild(internalTwo); vtkIdType b = graph->AddChild(internalTwo); vtkIdType c = graph->AddChild(internalOne); vtkNew weights; weights->SetNumberOfTuples(5); weights->SetValue(graph->GetEdgeId(root, internalOne), 1.0f); weights->SetValue(graph->GetEdgeId(internalOne, internalTwo), 2.0f); weights->SetValue(graph->GetEdgeId(internalTwo, a), 1.0f); weights->SetValue(graph->GetEdgeId(internalTwo, b), 1.0f); weights->SetValue(graph->GetEdgeId(internalOne, c), 3.0f); weights->SetName("weight"); graph->GetEdgeData()->AddArray(weights); vtkNew names; names->SetNumberOfTuples(6); names->SetValue(a, "a"); names->SetValue(b, "b"); names->SetValue(c, "c"); names->SetName("node name"); graph->GetVertexData()->AddArray(names); vtkNew nodeWeights; nodeWeights->SetNumberOfTuples(6); nodeWeights->SetValue(root, 0.0f); nodeWeights->SetValue(internalOne, 1.0f); nodeWeights->SetValue(internalTwo, 3.0f); nodeWeights->SetValue(a, 4.0f); nodeWeights->SetValue(b, 4.0f); nodeWeights->SetValue(c, 4.0f); nodeWeights->SetName("node weight"); graph->GetVertexData()->AddArray(nodeWeights); vtkNew actor; vtkNew tree; tree->ShallowCopy(graph); vtkNew dendrogram; dendrogram->SetTree(tree); dendrogram->SetPosition(40, 15); vtkNew trans; trans->SetInteractive(true); trans->AddItem(dendrogram); trans->Scale(3, 3); actor->GetScene()->AddItem(trans); vtkNew renderer; renderer->SetBackground(1.0, 1.0, 1.0); vtkNew renderWindow; renderWindow->SetSize(400, 200); renderWindow->AddRenderer(renderer); renderer->AddActor(actor); vtkNew interactorStyle; interactorStyle->SetScene(actor->GetScene()); vtkNew interactor; interactor->SetInteractorStyle(interactorStyle); interactor->SetRenderWindow(renderWindow); renderWindow->SetMultiSamples(0); renderWindow->Render(); int retVal = vtkRegressionTestImage(renderWindow); if (retVal == vtkRegressionTester::DO_INTERACTOR) { renderWindow->Render(); interactor->Start(); retVal = vtkRegressionTester::PASSED; } return !retVal; }