#include "gui/Defines.h" #include "gui/QProjectionMatrixWidget.h" using namespace projection; QProjectionMatrixWidget::QProjectionMatrixWidget(QWidget* pParent, Qt::WFlags flags) : QWidget(pParent, flags) { ui.setupUi(this); m_bStopSlot = false; } QProjectionMatrixWidget::~QProjectionMatrixWidget() { } void QProjectionMatrixWidget::setMatrix(const ProjectionMatrix& matrix) { if (m_bStopSlot) return; ui.fovEdit->setText(formatValue(matrix.getFOV())); ui.aspectRatioEdit->setText(QString::number(matrix.getAspectRatio(), 'g')); ui.nearEdit->setText(QString::number(matrix.getNear(), 'g')); ui.farEdit->setText(QString::number(matrix.getFar(), 'g')); ui.offaxisXEdit->setText(formatValue(matrix.getOffaxisX())); ui.offaxisYEdit->setText(formatValue(matrix.getOffaxisY())); // checkValueChanged(); m_matrix = matrix; } ProjectionMatrix QProjectionMatrixWidget::getMatrix() const { return m_matrix; } void QProjectionMatrixWidget::clear() { ui.fovEdit->setText(""); ui.aspectRatioEdit->setText(""); ui.nearEdit->setText(""); ui.farEdit->setText(""); ui.offaxisXEdit->setText(""); ui.offaxisYEdit->setText(""); m_matrix = ProjectionMatrix(); } void QProjectionMatrixWidget::checkValueChanged() { ProjectionMatrix matrix; matrix.setFOV(ui.fovEdit->text().toFloat()); matrix.setAspectRatio(ui.aspectRatioEdit->text().toFloat()); matrix.setNear(ui.nearEdit->text().toFloat()); matrix.setFar(ui.farEdit->text().toFloat()); matrix.setOffaxisX(ui.offaxisXEdit->text().toFloat()); matrix.setOffaxisY(ui.offaxisYEdit->text().toFloat()); if (m_matrix != matrix) { m_matrix = matrix; m_bStopSlot = true; emit matrixChanged(m_matrix); m_bStopSlot = false; } } void QProjectionMatrixWidget::on_fovEdit_editingFinished() { checkValueChanged(); } void QProjectionMatrixWidget::on_aspectRatioEdit_editingFinished() { checkValueChanged(); } void QProjectionMatrixWidget::on_nearEdit_editingFinished() { checkValueChanged(); } void QProjectionMatrixWidget::on_farEdit_editingFinished() { checkValueChanged(); } void QProjectionMatrixWidget::on_offaxisXEdit_editingFinished() { checkValueChanged(); } void QProjectionMatrixWidget::on_offaxisYEdit_editingFinished() { checkValueChanged(); }