use OutputDevice to set fileinfo,
use new connect function,
This commit is contained in:
parent
98302664ca
commit
7b739ab892
|
@ -37,16 +37,11 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void drawGeometry(QOpenGLShaderProgram *program, bool wireframe);
|
void drawGeometry(QOpenGLShaderProgram *program, bool wireframe);
|
||||||
|
|
||||||
// slots
|
|
||||||
public slots:
|
|
||||||
void loadFile(QString filePath);
|
void loadFile(QString filePath);
|
||||||
|
|
||||||
|
|
||||||
// signals
|
// signals
|
||||||
signals:
|
signals:
|
||||||
void requestResetView();
|
void requestResetView();
|
||||||
void requestUpdate();
|
void requestUpdate();
|
||||||
void sendFileInfo(QString name, QVector<Material>* materials, int vertices, int triangle);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,6 @@ private:
|
||||||
// functions
|
// functions
|
||||||
private:
|
private:
|
||||||
void initShaders();
|
void initShaders();
|
||||||
void setConnections();
|
|
||||||
void resetView();
|
void resetView();
|
||||||
void updateLightPosition();
|
void updateLightPosition();
|
||||||
|
|
||||||
|
@ -89,8 +88,5 @@ public slots:
|
||||||
void setAttFac(double value);
|
void setAttFac(double value);
|
||||||
void setAmbCoef(double value);
|
void setAmbCoef(double value);
|
||||||
|
|
||||||
// signals
|
|
||||||
signals:
|
|
||||||
void loadFile(QString);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
|
struct Material;
|
||||||
|
|
||||||
class OutputDevice : public QObject
|
class OutputDevice : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -20,8 +22,11 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
void print(QString message, int severity) { emit sendMessage(message, severity); };
|
void print(QString message, int severity) { emit sendMessage(message, severity); };
|
||||||
|
void setFileInfo(QString name, QVector<Material>* materials, int vertices, int triangle) {
|
||||||
|
emit sendFileInfo(name, materials, vertices, triangle);
|
||||||
|
};
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sendMessage(QString message, int severity);
|
void sendMessage(QString message, int severity);
|
||||||
|
void sendFileInfo(QString name, QVector<Material>* materials, int vertices, int triangle);
|
||||||
};
|
};
|
|
@ -142,10 +142,6 @@ void GeometryEngine::drawGeometry(QOpenGLShaderProgram *program, bool wireframe)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
|
||||||
// slots
|
|
||||||
|
|
||||||
void GeometryEngine::loadFile(QString filePath)
|
void GeometryEngine::loadFile(QString filePath)
|
||||||
{
|
{
|
||||||
// cleanup old stuff and recreate buffers
|
// cleanup old stuff and recreate buffers
|
||||||
|
@ -215,7 +211,7 @@ void GeometryEngine::loadFile(QString filePath)
|
||||||
|
|
||||||
emit requestUpdate();
|
emit requestUpdate();
|
||||||
OutputDevice::getInstance()->print("done..", 0);
|
OutputDevice::getInstance()->print("done..", 0);
|
||||||
emit sendFileInfo(filePath.right(filePath.size() - filePath.lastIndexOf(QRegExp("/|\\\\")) - 1), m_materials, vertexData.size(), indexData.size() / 3);
|
OutputDevice::getInstance()->setFileInfo(filePath.right(filePath.size() - filePath.lastIndexOf(QRegExp("/|\\\\")) - 1), m_materials, vertexData.size(), indexData.size() / 3);
|
||||||
}
|
}
|
||||||
catch (std::invalid_argument e)
|
catch (std::invalid_argument e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,6 +31,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
setWindowIcon(QIcon(":/images/icon.ico"));
|
setWindowIcon(QIcon(":/images/icon.ico"));
|
||||||
|
|
||||||
connect(OutputDevice::getInstance(this), &OutputDevice::sendMessage, this, &MainWindow::printMessage);
|
connect(OutputDevice::getInstance(this), &OutputDevice::sendMessage, this, &MainWindow::printMessage);
|
||||||
|
connect(OutputDevice::getInstance(this), &OutputDevice::sendFileInfo, this, &MainWindow::setFileInfo);
|
||||||
|
|
||||||
// setup opengl things
|
// setup opengl things
|
||||||
QSurfaceFormat format;
|
QSurfaceFormat format;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "..\Header\OglViewerWidget.h"
|
#include "..\Header\OglViewerWidget.h"
|
||||||
#include "..\Header\OutputDevice.h"
|
#include "..\Header\OutputDevice.h"
|
||||||
|
#include "..\Header\MainWindow.h"
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QDropEvent>
|
#include <QDropEvent>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
|
@ -17,6 +18,7 @@ OglViewerWidget::OglViewerWidget(QWidget *parent)
|
||||||
setFocus();
|
setFocus();
|
||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
|
|
||||||
|
// settings window
|
||||||
m_settings = new SettingsWindow(m_backgroundColorOff.toVector3D() * 255, m_backgroundColorOn.toVector3D() * 255, m_light.intensities * 255, true, m_light.ambientCoefficient, m_light.attenuationFactor, 1, this);
|
m_settings = new SettingsWindow(m_backgroundColorOff.toVector3D() * 255, m_backgroundColorOn.toVector3D() * 255, m_light.intensities * 255, true, m_light.ambientCoefficient, m_light.attenuationFactor, 1, this);
|
||||||
|
|
||||||
connect(m_settings, &SettingsWindow::updateBGColorOff, this, &OglViewerWidget::setBGColorOff);
|
connect(m_settings, &SettingsWindow::updateBGColorOff, this, &OglViewerWidget::setBGColorOff);
|
||||||
|
@ -60,15 +62,6 @@ void OglViewerWidget::initShaders()
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OglViewerWidget::setConnections()
|
|
||||||
{
|
|
||||||
connect(m_dataEngine, &GeometryEngine::requestResetView, this, &OglViewerWidget::resetView);
|
|
||||||
connect(parentWidget(), SIGNAL(loadFile(QString)), m_dataEngine, SLOT(loadFile(QString)));
|
|
||||||
connect(this, SIGNAL(loadFile(QString)), m_dataEngine, SLOT(loadFile(QString)));
|
|
||||||
connect(m_dataEngine, SIGNAL(requestUpdate()), this, SLOT(update()));
|
|
||||||
connect(m_dataEngine, SIGNAL(sendFileInfo(QString, QVector<Material>*, int, int)), parentWidget(), SLOT(setFileInfo(QString, QVector<Material>*, int, int)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void OglViewerWidget::resetView()
|
void OglViewerWidget::resetView()
|
||||||
{
|
{
|
||||||
m_rotation = QQuaternion();
|
m_rotation = QQuaternion();
|
||||||
|
@ -107,7 +100,14 @@ void OglViewerWidget::initializeGL()
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
m_dataEngine = new GeometryEngine(this);
|
m_dataEngine = new GeometryEngine(this);
|
||||||
setConnections();
|
connect(m_dataEngine, &GeometryEngine::requestResetView, this, &OglViewerWidget::resetView);
|
||||||
|
connect(m_dataEngine, &GeometryEngine::requestUpdate, this, static_cast<void(OglViewerWidget::*)(void)>(&OglViewerWidget::update));
|
||||||
|
|
||||||
|
//TODO: better solution
|
||||||
|
MainWindow* parent = dynamic_cast<MainWindow*>(parentWidget());
|
||||||
|
if (parent != NULL)
|
||||||
|
connect(parent, &MainWindow::loadFile, [this](QString value) {m_dataEngine->loadFile(value); });
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OglViewerWidget::resizeGL(int w, int h)
|
void OglViewerWidget::resizeGL(int w, int h)
|
||||||
|
@ -327,7 +327,7 @@ void OglViewerWidget::dragEnterEvent(QDragEnterEvent *e)
|
||||||
|
|
||||||
void OglViewerWidget::dropEvent(QDropEvent * e)
|
void OglViewerWidget::dropEvent(QDropEvent * e)
|
||||||
{
|
{
|
||||||
emit loadFile(e->mimeData()->urls().first().toLocalFile());
|
m_dataEngine->loadFile(e->mimeData()->urls().first().toLocalFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue