File: GraphLayoutViewItem.cpp

package info (click to toggle)
vtk7 7.1.1%2Bdfsg2-8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 127,396 kB
  • sloc: cpp: 1,539,584; ansic: 124,382; python: 78,038; tcl: 47,013; xml: 8,142; yacc: 5,040; java: 4,439; perl: 3,132; lex: 1,926; sh: 1,500; makefile: 126; objc: 83
file content (83 lines) | stat: -rw-r--r-- 2,731 bytes parent folder | download | duplicates (8)
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

#include "GraphLayoutViewItem.h"
#include "vtkGraphLayoutView.h"
#include "vtkGenericOpenGLRenderWindow.h"
#include "QVTKInteractor.h"
#include "vtkXMLTreeReader.h"
#include "vtkRenderedTreeAreaRepresentation.h"
#include "vtkStringArray.h"
#include "vtkIdTypeArray.h"
#include "vtkDataSetAttributes.h"
#include "vtkRenderedGraphRepresentation.h"
#include "vtkStringToNumeric.h"
#include "vtkViewTheme.h"
#include "vtkTextProperty.h"
#include <QFile>

GraphLayoutViewItem::GraphLayoutViewItem(QGLContext* ctx, QGraphicsItem* p)
  : QVTKGraphicsItem(ctx, p)
{
  GraphLayoutView.TakeReference(vtkGraphLayoutView::New());
  GraphLayoutView->SetRenderWindow(this->GetRenderWindow());

  QFile f1(":/Data/treetest.xml");
  f1.open(QIODevice::ReadOnly);
  QByteArray f1_data = f1.readAll();

  vtkSmartPointer<vtkXMLTreeReader> reader = vtkSmartPointer<vtkXMLTreeReader>::New();
  reader->SetXMLString(f1_data.data());
  reader->SetMaskArrays(true);
  reader->Update();
  vtkTree* t = reader->GetOutput();
  vtkSmartPointer<vtkStringArray> label = vtkSmartPointer<vtkStringArray>::New();
  label->SetName("edge label");
  vtkSmartPointer<vtkIdTypeArray> dist = vtkSmartPointer<vtkIdTypeArray>::New();
  dist->SetName("distance");
  for (vtkIdType i = 0; i < t->GetNumberOfEdges(); i++)
  {
    dist->InsertNextValue(i);
    switch (i % 3)
    {
      case 0:
        label->InsertNextValue("a");
        break;
      case 1:
        label->InsertNextValue("b");
        break;
      case 2:
        label->InsertNextValue("c");
        break;
    }
  }
  t->GetEdgeData()->AddArray(dist);
  t->GetEdgeData()->AddArray(label);

  vtkSmartPointer<vtkStringToNumeric> numeric = vtkSmartPointer<vtkStringToNumeric>::New();
  numeric->SetInputConnection(reader->GetOutputPort());

  GraphLayoutView->DisplayHoverTextOn();
  GraphLayoutView->SetLayoutStrategyToCircular();
  GraphLayoutView->SetVertexLabelArrayName("name");
  GraphLayoutView->VertexLabelVisibilityOn();
  GraphLayoutView->SetVertexColorArrayName("size");
  GraphLayoutView->ColorVerticesOn();
  GraphLayoutView->SetRepresentationFromInputConnection(numeric->GetOutputPort());
  GraphLayoutView->SetEdgeColorArrayName("distance");
  GraphLayoutView->ColorEdgesOn();
  GraphLayoutView->SetEdgeLabelArrayName("edge label");
  GraphLayoutView->EdgeLabelVisibilityOn();
  vtkRenderedGraphRepresentation* rep =
    vtkRenderedGraphRepresentation::SafeDownCast(GraphLayoutView->GetRepresentation());
  rep->SetVertexHoverArrayName("name");
  rep->SetEdgeHoverArrayName("edge label");

  GraphLayoutView->SetHideVertexLabelsOnInteraction(1);
  GraphLayoutView->SetHideEdgeLabelsOnInteraction(1);

  GraphLayoutView->ResetCamera();

}

GraphLayoutViewItem::~GraphLayoutViewItem()
{
}