File: GraphLayoutViewItem.cpp

package info (click to toggle)
vtk 5.8.0-13
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 130,524 kB
  • sloc: cpp: 1,129,256; ansic: 708,203; tcl: 48,526; python: 20,875; xml: 6,779; yacc: 4,208; perl: 3,121; java: 2,788; lex: 931; sh: 660; asm: 471; makefile: 299
file content (85 lines) | stat: -rw-r--r-- 2,775 bytes parent folder | download | duplicates (3)
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

#include "GraphLayoutViewItem.h"
#include "vtkGraphLayoutView.h"
#include "vtkGenericOpenGLRenderWindow.h"
#include "vtkgl.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->SetInteractor(this->GetInteractor());
  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->SetInput(t);

  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()
{
}