#include "gui/Defines.h" #include "gui/QTransformMatrixWidget.h" using namespace projection; using namespace gmtl; QTransformMatrixWidget::QTransformMatrixWidget(QWidget* pParent, Qt::WFlags flags) : QWidget(pParent, flags) { ui.setupUi(this); m_bStopSlot = false; } QTransformMatrixWidget::~QTransformMatrixWidget() { } void QTransformMatrixWidget::setMatrix(const TransformMatrix& matrix) { if (m_bStopSlot) return; Vec3f pos = matrix.getPosition(); Vec3f rot = matrix.getRotation(); Vec3f scale = matrix.getScaling(); ui.posXEdit->setText(formatValue(pos[0])); ui.posYEdit->setText(formatValue(pos[1])); ui.posZEdit->setText(formatValue(pos[2])); ui.rotHEdit->setText(formatValue(rot[0])); ui.rotPEdit->setText(formatValue(rot[1])); ui.rotREdit->setText(formatValue(rot[2])); ui.scaleXEdit->setText(formatValue(scale[0])); ui.scaleYEdit->setText(formatValue(scale[1])); ui.scaleZEdit->setText(formatValue(scale[2])); // checkValueChanged(); m_matrix = matrix; } TransformMatrix QTransformMatrixWidget::getMatrix() const { return m_matrix; } void QTransformMatrixWidget::clear() { ui.posXEdit->setText(""); ui.posYEdit->setText(""); ui.posZEdit->setText(""); ui.rotHEdit->setText(""); ui.rotPEdit->setText(""); ui.rotREdit->setText(""); ui.scaleXEdit->setText(""); ui.scaleYEdit->setText(""); ui.scaleZEdit->setText(""); m_matrix = TransformMatrix(); } void QTransformMatrixWidget::setUseScale(bool bUseScale) { if (bUseScale) { ui.scaleLabel->show(); ui.scaleXEdit->show(); ui.scaleYEdit->show(); ui.scaleZEdit->show(); } else { ui.scaleLabel->hide(); ui.scaleXEdit->hide(); ui.scaleYEdit->hide(); ui.scaleZEdit->hide(); } } void QTransformMatrixWidget::checkValueChanged() { Vec3f pos(ui.posXEdit->text().toFloat(), ui.posYEdit->text().toFloat(), ui.posZEdit->text().toFloat()); Vec3f rot(ui.rotHEdit->text().toFloat(), ui.rotPEdit->text().toFloat(), ui.rotREdit->text().toFloat()); Vec3f scale(ui.scaleXEdit->text().toFloat(), ui.scaleYEdit->text().toFloat(), ui.scaleZEdit->text().toFloat()); TransformMatrix matrix; matrix.setPosition(pos); matrix.setRotation(rot); matrix.setScaling(scale); if (m_matrix != matrix) { m_matrix = matrix; m_bStopSlot = true; emit matrixChanged(m_matrix); m_bStopSlot = false; } } void QTransformMatrixWidget::on_posXEdit_editingFinished() { checkValueChanged(); } void QTransformMatrixWidget::on_posYEdit_editingFinished() { checkValueChanged(); } void QTransformMatrixWidget::on_posZEdit_editingFinished() { checkValueChanged(); } void QTransformMatrixWidget::on_rotHEdit_editingFinished() { checkValueChanged(); } void QTransformMatrixWidget::on_rotPEdit_editingFinished() { checkValueChanged(); } void QTransformMatrixWidget::on_rotREdit_editingFinished() { checkValueChanged(); } void QTransformMatrixWidget::on_scaleXEdit_editingFinished() { checkValueChanged(); } void QTransformMatrixWidget::on_scaleYEdit_editingFinished() { checkValueChanged(); } void QTransformMatrixWidget::on_scaleZEdit_editingFinished() { checkValueChanged(); }