-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathQRenderWindow.cpp
More file actions
93 lines (70 loc) · 3.38 KB
/
QRenderWindow.cpp
File metadata and controls
93 lines (70 loc) · 3.38 KB
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
#include "QRenderWindow.h"
#include <QFileDialog>
#include <ui_RenderWindow.h>
#include "VTKViewer.h"
#include "DDGStructure.h"
void QRenderWindow::appendInfo(QString & info) {
ui->textBrowser->append(info.prepend(QDateTime::currentDateTime().toString("hh:mm:ss.zzz ")));
}
void QRenderWindow::appendInfo(const char * info) {
ui->textBrowser->append(QDateTime::currentDateTime().toString("hh:mm:ss.zzz ") + QString(info));
}
void QRenderWindow::onResetCamera() {
viewer.resetCamera();
ui->qvtkWidget->renderWindow()->Render();
}
void QRenderWindow::onLoadShape() {
QString path = ui->lineEdit_filePath->text();
DDGStructure ddgs(path.toStdString());
if (ddgs.polyData) {
appendInfo("Load shape successfully!");
viewer.setShape(ddgs.polyData);
onResetCamera();
} else {
appendInfo(path.prepend("Failed to load shape from: "));
}
}
QRenderWindow::QRenderWindow(VTKViewer & viewer, QWidget* parent)
: QMainWindow(parent), ui(new Ui::QRenderWindow), viewer(viewer){
ui->setupUi(this);
// Bind renderer and render window in vtk.
ui->qvtkWidget->setRenderWindow(viewer.renWin);
ui->qvtkWidget->renderWindow()->AddRenderer(viewer.ren);
// Initialize axes actor.
viewer.orientationWidget->SetInteractor(ui->qvtkWidget->interactor());
viewer.orientationWidget->SetEnabled(1);
viewer.orientationWidget->InteractiveOff();
// Initialize interactor style.
ui->qvtkWidget->interactor()->SetInteractorStyle(viewer.currentStyle);
// Initialize signal slot.
connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(slotExit()));
connect(ui->pushButton_CamStyle, &QPushButton::released,[&]() {
ui->pushButton_CamStyle->setText(this->viewer.switchInteractorStyle());
ui->qvtkWidget->interactor()->SetInteractorStyle(viewer.currentStyle);});
connect(ui->pushButton_CamReset, &QPushButton::released,[&]() {
onResetCamera(); });
connect(ui->pushButton_SwitchDisplayMode, &QPushButton::released,[&]() {
ui->pushButton_SwitchDisplayMode->setText(this->viewer.switchDisplayMode());
ui->qvtkWidget->renderWindow()->Render(); });
connect(ui->pushButton_SwitchProjection, &QPushButton::released,[&]() {
ui->pushButton_SwitchProjection->setText(this->viewer.switchProjection());
this->viewer.resetCamera();
ui->qvtkWidget->renderWindow()->Render(); });
connect(ui->pushButton_LoadShape, &QPushButton::released,[&]() {
onLoadShape(); });
connect(ui->pushButton_Bottle, &QPushButton::released,[&]() {
viewer.setShape(viewer.bottle.mainShapePtr);
onResetCamera(); });
connect(ui->pushButton_SwitchEdgeVisibility, &QPushButton::released,[&]() {
viewer.switchEdgeVisibility();
ui->qvtkWidget->renderWindow()->Render(); });
connect(ui->pushButton_Browse, &QPushButton::released,[&]() {
QString dir = ui->lineEdit_filePath->text();
QString fileName = QFileDialog::getOpenFileName(this, "", dir);
ui->lineEdit_filePath->setText(fileName); });
connect(ui->pushButton_Picker, &QPushButton::released,[&]() {
ui->qvtkWidget->interactor()->SetInteractorStyle(viewer.switchPicker()); });
connect(viewer.printInfoSignalSender.get(), &PrintInfoSignalSender::printInfo, [&](){
appendInfo(viewer.printInfoSignalSender->info); });
}
QRenderWindow::~QRenderWindow() { delete ui; }