// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-License-Identifier: BSD-3-Clause #include "vtkGlyph3DMapper.h" #include "vtkActor.h" #include "vtkArrowSource.h" #include "vtkCubeSource.h" #include "vtkIntArray.h" #include "vtkNew.h" #include "vtkPointData.h" #include "vtkPoints.h" #include "vtkPolyData.h" #include "vtkProperty.h" #include "vtkRegressionTestImage.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" #include "vtkSphereSource.h" int TestGlyph3DMapperIndexing(int argc, char* argv[]) { // The points to glyph: vtkNew input; vtkNew points; vtkNew indexArray; for (int row = 0; row < 2; ++row) { for (int col = 0; col < 3; ++col) { points->InsertNextPoint((row ? col : (2 - col)) * 5, row * 5, 0.); indexArray->InsertNextValue(col); } } input->SetPoints(points); input->GetPointData()->AddArray(indexArray); indexArray->SetName("GlyphIndex"); // The glyph sources: vtkNew s0; vtkNew s1; vtkNew s2; vtkNew mapper; mapper->SetInputData(input); mapper->SetSourceConnection(0, s0->GetOutputPort()); mapper->SetSourceConnection(1, s1->GetOutputPort()); mapper->SetSourceConnection(2, s2->GetOutputPort()); mapper->SetRange(0, 2); mapper->SetSourceIndexing(true); mapper->SetSourceIndexArray("GlyphIndex"); vtkNew actor; actor->SetMapper(mapper); actor->GetProperty()->SetColor(1., 0., 0.); vtkNew renderer; renderer->AddActor(actor); renderer->SetBackground(0., 0., 0.); renderer->ResetCamera(); renderer->ResetCameraClippingRange(); vtkNew iren; vtkNew renWin; iren->SetRenderWindow(renWin); renWin->AddRenderer(renderer); renWin->SetMultiSamples(0); renWin->SetSize(300, 300); renWin->Render(); int retVal = vtkRegressionTestImage(renWin); if (retVal == vtkRegressionTester::DO_INTERACTOR) { iren->Start(); } return !retVal; }