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