/usr/share/vtk/Infovis/Cxx/MultiView.cxx is in vtk-examples 5.8.0-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | /*=========================================================================
Program: Visualization Toolkit
Module: MultiView.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.
=========================================================================*/
//
// This example...
//
#include "vtkAnnotationLink.h"
#include "vtkCommand.h"
#include "vtkDataRepresentation.h"
#include "vtkDataSetAttributes.h"
#include "vtkGraphLayoutView.h"
#include "vtkMutableDirectedGraph.h"
#include "vtkRandomGraphSource.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkStringArray.h"
#include "vtkTree.h"
#include "vtkViewTheme.h"
#include <vtksys/stl/vector>
class ViewUpdater : public vtkCommand
{
public:
static ViewUpdater* New()
{ return new ViewUpdater; }
void AddView(vtkView* view)
{
this->Views.push_back(view);
view->AddObserver(vtkCommand::SelectionChangedEvent, this);
}
virtual void Execute(vtkObject*, unsigned long, void*)
{
for (unsigned int i = 0; i < this->Views.size(); i++)
{
this->Views[i]->Update();
}
}
private:
ViewUpdater() { }
~ViewUpdater() { }
vtksys_stl::vector<vtkView*> Views;
};
int main(int, char*[])
{
vtkMutableDirectedGraph* graph = vtkMutableDirectedGraph::New();
vtkIdType a = graph->AddVertex();
vtkIdType b = graph->AddChild(a);
vtkIdType c = graph->AddChild(a);
vtkIdType d = graph->AddChild(b);
vtkIdType e = graph->AddChild(c);
vtkIdType f = graph->AddChild(c);
vtkStringArray* labels = vtkStringArray::New();
labels->SetName("Label");
labels->InsertValue(a, "a");
labels->InsertValue(b, "b");
labels->InsertValue(c, "c");
labels->InsertValue(d, "d");
labels->InsertValue(e, "e");
labels->InsertValue(f, "f");
graph->GetVertexData()->AddArray(labels);
vtkTree* tree = vtkTree::New();
tree->CheckedShallowCopy(graph);
vtkGraphLayoutView* view = vtkGraphLayoutView::New();
vtkDataRepresentation* rep =
view->SetRepresentationFromInput(tree);
vtkViewTheme* theme = vtkViewTheme::CreateMellowTheme();
view->ApplyViewTheme(theme);
view->SetVertexColorArrayName("VertexDegree");
view->SetColorVertices(true);
view->SetVertexLabelArrayName("Label");
view->SetVertexLabelVisibility(true);
vtkGraphLayoutView* view2 = vtkGraphLayoutView::New();
vtkDataRepresentation* rep2 =
view2->SetRepresentationFromInput(tree);
view2->SetVertexLabelArrayName("Label");
view2->SetVertexLabelVisibility(true);
vtkAnnotationLink* link = vtkAnnotationLink::New();
rep->SetAnnotationLink(link);
rep2->SetAnnotationLink(link);
ViewUpdater* update = ViewUpdater::New();
update->AddView(view);
update->AddView(view2);
view->ResetCamera();
view2->ResetCamera();
view->Render();
view2->Render();
view->GetInteractor()->Start();
graph->Delete();
labels->Delete();
tree->Delete();
view->Delete();
theme->Delete();
view2->Delete();
link->Delete();
update->Delete();
return 0;
}
|