add wireframe paint option,
write file information on the screen, bug fixes
This commit is contained in:
parent
454ed45fa1
commit
86dfe32145
|
@ -33,7 +33,7 @@ private:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void loadFile(QString filePath);
|
void loadFile(QString filePath);
|
||||||
void drawGeometry(QOpenGLShaderProgram *program);
|
void drawGeometry(QOpenGLShaderProgram *program, bool wireframe);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void requestResetView();
|
void requestResetView();
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QtWidgets/QMainWindow>
|
#include <QtWidgets/QMainWindow>
|
||||||
|
#include <qwidget.h>
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include <QLabel>
|
||||||
#include "ui_MainWindow.h"
|
#include "ui_MainWindow.h"
|
||||||
|
|
||||||
struct Material;
|
struct Material;
|
||||||
|
@ -20,7 +22,7 @@ private:
|
||||||
int m_curSeverity;
|
int m_curSeverity;
|
||||||
void setupWidgets();
|
void setupWidgets();
|
||||||
QByteArray m_fileInfo;
|
QByteArray m_fileInfo;
|
||||||
|
QLabel* m_output;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void openFile();
|
void openFile();
|
||||||
|
@ -28,6 +30,9 @@ private:
|
||||||
void aboutTool();
|
void aboutTool();
|
||||||
void takeScreenShot();
|
void takeScreenShot();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void resizeEvent(QResizeEvent * e) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void printMessage(QString message, int severity);
|
void printMessage(QString message, int severity);
|
||||||
void setFileInfo(QString name, QVector<Material>* materials, int vertices, int triangle);
|
void setFileInfo(QString name, QVector<Material>* materials, int vertices, int triangle);
|
||||||
|
|
|
@ -44,6 +44,8 @@ private:
|
||||||
QVector3D m_translation;
|
QVector3D m_translation;
|
||||||
QQuaternion m_rotation;
|
QQuaternion m_rotation;
|
||||||
|
|
||||||
|
bool m_wireframe = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
|
void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
|
||||||
void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
|
void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE;
|
||||||
|
@ -66,5 +68,6 @@ private slots:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void changeDirection(int direction);
|
void changeDirection(int direction);
|
||||||
|
void toggleWireframe();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/files">
|
<qresource prefix="/files">
|
||||||
<file>about.txt</file>
|
<file>about.txt</file>
|
||||||
<file>stylesheet.txt</file>
|
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/images/toolbar">
|
<qresource prefix="/images/toolbar">
|
||||||
<file>placeholder.png</file>
|
<file>placeholder.png</file>
|
||||||
|
@ -19,5 +18,6 @@
|
||||||
<file>Y.png</file>
|
<file>Y.png</file>
|
||||||
<file>Z.png</file>
|
<file>Z.png</file>
|
||||||
<file>screenshot.png</file>
|
<file>screenshot.png</file>
|
||||||
|
<file>wireframe.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
|
@ -127,7 +127,7 @@ void GeometryEngine::loadFile(QString filePath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeometryEngine::drawGeometry(QOpenGLShaderProgram *program)
|
void GeometryEngine::drawGeometry(QOpenGLShaderProgram *program, bool wireframe)
|
||||||
{
|
{
|
||||||
if (!m_arrayBuf.isCreated() || !m_indexBuf.isCreated())
|
if (!m_arrayBuf.isCreated() || !m_indexBuf.isCreated())
|
||||||
return;
|
return;
|
||||||
|
@ -178,7 +178,7 @@ void GeometryEngine::drawGeometry(QOpenGLShaderProgram *program)
|
||||||
bool tmp_transparent(false);
|
bool tmp_transparent(false);
|
||||||
|
|
||||||
// bind the correct texture
|
// bind the correct texture
|
||||||
if (it.textureIndex < m_materials->size())
|
if (it.textureIndex < m_materials->size() && m_materials->at(it.textureIndex).texture != Q_NULLPTR)
|
||||||
{
|
{
|
||||||
m_materials->at(it.textureIndex).texture->bind();
|
m_materials->at(it.textureIndex).texture->bind();
|
||||||
tmp_transparent = m_materials->at(it.textureIndex).transparent;
|
tmp_transparent = m_materials->at(it.textureIndex).transparent;
|
||||||
|
@ -195,7 +195,7 @@ void GeometryEngine::drawGeometry(QOpenGLShaderProgram *program)
|
||||||
program->setUniformValue("b_transparent", tmp_transparent);
|
program->setUniformValue("b_transparent", tmp_transparent);
|
||||||
|
|
||||||
// Draw cube geometry using indices from VBO 1
|
// Draw cube geometry using indices from VBO 1
|
||||||
glDrawElements(GL_TRIANGLES, it.size, GL_UNSIGNED_INT, (void*)(it.offset * sizeof(GLuint)));
|
glDrawElements(wireframe? GL_LINES : GL_TRIANGLES, it.size, GL_UNSIGNED_INT, (void*)(it.offset * sizeof(GLuint)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include <QSignalMapper>
|
#include <QSignalMapper>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QSizePolicy>
|
#include <QSizePolicy>
|
||||||
|
#include <QFont>
|
||||||
|
#include <QResizeEvent>
|
||||||
#include "..\Header\FileInterface.h"
|
#include "..\Header\FileInterface.h"
|
||||||
|
|
||||||
#define WINDOW_NAME "Mesh Viewer"
|
#define WINDOW_NAME "Mesh Viewer"
|
||||||
|
@ -16,6 +18,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui::MainWindowClass)
|
, ui(new Ui::MainWindowClass)
|
||||||
, m_curSeverity(0)
|
, m_curSeverity(0)
|
||||||
|
, m_output(new QLabel(this))
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
@ -36,6 +39,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
|
delete m_output;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::openFile()
|
void MainWindow::openFile()
|
||||||
|
@ -89,6 +93,14 @@ void MainWindow::setupWidgets()
|
||||||
|
|
||||||
ui->mainToolBar->addSeparator();
|
ui->mainToolBar->addSeparator();
|
||||||
|
|
||||||
|
QAction *wireframe = new QAction(QIcon(":/images/toolbar/wireframe.png"), "Wireframe", this);
|
||||||
|
wireframe->setCheckable(true);
|
||||||
|
wireframe->setChecked(false);
|
||||||
|
connect(wireframe, &QAction::triggered, viewer, &OglViewerWidget::toggleWireframe);
|
||||||
|
ui->mainToolBar->addAction(wireframe);
|
||||||
|
|
||||||
|
ui->mainToolBar->addSeparator();
|
||||||
|
|
||||||
QAction *fileInfo = new QAction(QIcon(":/images/toolbar/info.png"), "File info", this);
|
QAction *fileInfo = new QAction(QIcon(":/images/toolbar/info.png"), "File info", this);
|
||||||
connect(fileInfo, &QAction::triggered, this, &MainWindow::aboutFile);
|
connect(fileInfo, &QAction::triggered, this, &MainWindow::aboutFile);
|
||||||
ui->mainToolBar->addAction(fileInfo);
|
ui->mainToolBar->addAction(fileInfo);
|
||||||
|
@ -97,6 +109,11 @@ void MainWindow::setupWidgets()
|
||||||
connect(help, &QAction::triggered, this, &MainWindow::aboutTool);
|
connect(help, &QAction::triggered, this, &MainWindow::aboutTool);
|
||||||
ui->mainToolBar->addAction(help);
|
ui->mainToolBar->addAction(help);
|
||||||
|
|
||||||
|
m_output->setObjectName("output");
|
||||||
|
m_output->setStyleSheet("QLabel#output{color : white; min-width: 400px; min-height: 50px;}");
|
||||||
|
m_output->setAlignment(Qt::AlignTop);
|
||||||
|
m_output->setText("Name: -\nMaterials: -\nVertice: -\nTriangle: -");
|
||||||
|
m_output->raise();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,6 +160,11 @@ void MainWindow::takeScreenShot()
|
||||||
viewer->grab().save(destination);
|
viewer->grab().save(destination);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::resizeEvent(QResizeEvent * e)
|
||||||
|
{
|
||||||
|
m_output->move(40, e->size().height() - 80);
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::setFileInfo(QString name, QVector<Material>* materials, int vertices, int triangle)
|
void MainWindow::setFileInfo(QString name, QVector<Material>* materials, int vertices, int triangle)
|
||||||
{
|
{
|
||||||
m_fileInfo = QByteArray("Filename: ");
|
m_fileInfo = QByteArray("Filename: ");
|
||||||
|
@ -165,6 +187,8 @@ void MainWindow::setFileInfo(QString name, QVector<Material>* materials, int ver
|
||||||
m_fileInfo += it.name;
|
m_fileInfo += it.name;
|
||||||
m_fileInfo += "\n";
|
m_fileInfo += "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_output->setText(m_fileInfo.left(m_fileInfo.indexOf("<detail>")));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::printMessage(QString message, int severity)
|
void MainWindow::printMessage(QString message, int severity)
|
||||||
|
|
|
@ -226,7 +226,7 @@ void OglViewerWidget::paintGL()
|
||||||
m_program.setUniformValue("vp_matrix", m_projection * view);
|
m_program.setUniformValue("vp_matrix", m_projection * view);
|
||||||
|
|
||||||
// Draw cube geometry
|
// Draw cube geometry
|
||||||
m_dataEngine->drawGeometry(&m_program);
|
m_dataEngine->drawGeometry(&m_program, m_wireframe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -293,3 +293,9 @@ void OglViewerWidget::changeDirection(int direction)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OglViewerWidget::toggleWireframe()
|
||||||
|
{
|
||||||
|
m_wireframe = 1 - m_wireframe;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue