Makes the matrix not editable. It is quite useless and it bugs because of QGLViewer.

This commit is contained in:
Maxime Gimeno 2016-10-07 15:11:07 +02:00
parent 5820263a40
commit ec59f6fd3e
2 changed files with 71 additions and 87 deletions

View File

@ -173,14 +173,12 @@ public:
sp_retain.setRetainSizeWhenHidden(true);
widget->setSizePolicy(sp_retain);
}
connect(ui.applyMatrix_Button, &QPushButton::clicked,
this, &Polyhedron_demo_affine_transform_plugin::updateTransformMatrix);
connect(ui.resetMatrix_Button, &QPushButton::clicked,
this, &Polyhedron_demo_affine_transform_plugin::resetTransformMatrix);
connect(ui.applyTransfo_Button, &QPushButton::clicked,
this, &Polyhedron_demo_affine_transform_plugin::applySingleTransformation);
connect(ui.transfo_ComboBox, SIGNAL(currentIndexChanged(int)),
this, SLOT(updateSingleTransfoValues(int)));
connect(ui.resetMatrix_Button, &QPushButton::clicked,
this, &Polyhedron_demo_affine_transform_plugin::resetTransformMatrix);
}
void start(Scene_polyhedron_item*);
@ -219,7 +217,7 @@ private:
tMatrix = manipulatedMatrix*scalingMatrix;
double *res = new double[16];
for(int i=0; i<16; ++i)
res[i] = (float)tMatrix.data()[i];
res[i] = (double)tMatrix.data()[i];
return res;
}
@ -228,12 +226,12 @@ public Q_SLOTS:
void transformed_killed();
void updateUiMatrix();
void updateTransformMatrix();
void resetTransformMatrix()
{
if(!transform_item)
return;
double matrix[16] = {0};
scaling[0]=scaling[1]=scaling[2]=1.0;
matrix[0]=1; matrix[5] = 1; matrix[10] = 1; matrix[15] = 1;
matrix[12] = transform_item->center().x;
matrix[13] = transform_item->center().y;
@ -401,38 +399,16 @@ void Polyhedron_demo_affine_transform_plugin::updateUiMatrix()
double * tmatrix = transformMatrix();
transform_item->setFMatrix(tmatrix);
//this matrix is not necessary but it clarifies the code to use one.
//this matrix is not mandatory but it clarifies the code to use one.
QMatrix4x4 matrix;
for (int i=0; i<16; ++i)
matrix.data()[i] = (float)tmatrix[i];
matrix.data()[i] = tmatrix[i];
delete[] tmatrix;
ui.matrix_00->setText(QString("%1").arg(matrix(0,0))); ui.matrix_01->setText(QString("%1").arg(matrix(0,1))); ui.matrix_02->setText(QString("%1").arg(matrix(0,2))); ui.matrix_03->setText(QString("%1").arg(matrix(0,3)));
ui.matrix_10->setText(QString("%1").arg(matrix(1,0))); ui.matrix_11->setText(QString("%1").arg(matrix(1,1))); ui.matrix_12->setText(QString("%1").arg(matrix(1,2))); ui.matrix_13->setText(QString("%1").arg(matrix(1,3)));
ui.matrix_20->setText(QString("%1").arg(matrix(2,0))); ui.matrix_21->setText(QString("%1").arg(matrix(2,1))); ui.matrix_22->setText(QString("%1").arg(matrix(2,2))); ui.matrix_23->setText(QString("%1").arg(matrix(2,3)));
ui.matrix_30->setText(QString("%1").arg(matrix(3,0))); ui.matrix_31->setText(QString("%1").arg(matrix(3,1))); ui.matrix_32->setText(QString("%1").arg(matrix(3,2))); ui.matrix_33->setText(QString("%1").arg(matrix(3,3)));
}
ui.matrix_00->setText(QString("%1").arg(matrix(0,0))); ui.matrix_01->setText(QString("%1").arg(matrix(0,1))); ui.matrix_02->setText(QString("%1").arg(matrix(0,2)));
ui.matrix_10->setText(QString("%1").arg(matrix(1,0))); ui.matrix_11->setText(QString("%1").arg(matrix(1,1))); ui.matrix_12->setText(QString("%1").arg(matrix(1,2)));
ui.matrix_20->setText(QString("%1").arg(matrix(2,0))); ui.matrix_21->setText(QString("%1").arg(matrix(2,1))); ui.matrix_22->setText(QString("%1").arg(matrix(2,2)));
void Polyhedron_demo_affine_transform_plugin::updateTransformMatrix()
{
if (!transform_item)
return;
double matrix[16];
matrix[0] = ui.matrix_00->text().toDouble(); matrix[4] = ui.matrix_01->text().toDouble(); matrix[8] = ui.matrix_02->text().toDouble(); matrix[12] = ui.matrix_03->text().toDouble();
matrix[1] = ui.matrix_10->text().toDouble(); matrix[5] = ui.matrix_11->text().toDouble(); matrix[9] = ui.matrix_12->text().toDouble(); matrix[13] = ui.matrix_13->text().toDouble();
matrix[2] = ui.matrix_20->text().toDouble(); matrix[6] = ui.matrix_21->text().toDouble(); matrix[10] = ui.matrix_22->text().toDouble(); matrix[14] = ui.matrix_23->text().toDouble();
matrix[3] = ui.matrix_30->text().toDouble(); matrix[7] = ui.matrix_31->text().toDouble(); matrix[11]= ui.matrix_32->text().toDouble(); matrix[15] = ui.matrix_33->text().toDouble();
//save the scaling values before the manipulated signal is sent by setFromMatrix()
scaling[0]= ui.matrix_00->text().toDouble();
scaling[1]= ui.matrix_11->text().toDouble();
scaling[2]= ui.matrix_22->text().toDouble();
//the scaling data is lost with this function...
transform_item->manipulatedFrame()->setFromMatrix(matrix);
//...but not with this one
double * tmatrix = transformMatrix();
transform_item->setFMatrix(tmatrix);
delete[] tmatrix;
transform_item->itemChanged();
}
void Polyhedron_demo_affine_transform_plugin::updateSingleTransfoValues(int index)
@ -454,9 +430,8 @@ void Polyhedron_demo_affine_transform_plugin::updateSingleTransfoValues(int inde
break;
case 2:
ui.lineEditA->hide();
ui.lineEditX->hide();
ui.lineEditY->hide();
ui.lineEditZ->setToolTip("Value along all the axis.");
ui.lineEditX->show();
ui.lineEditY->show();
ui.lineEditZ->show();
break;
default:
@ -495,8 +470,8 @@ void Polyhedron_demo_affine_transform_plugin::applySingleTransformation()
//scaling
case 2:
{
scaling[0] = ui.lineEditZ->text().toDouble();
scaling[1] = ui.lineEditZ->text().toDouble();
scaling[0] = ui.lineEditX->text().toDouble();
scaling[1] = ui.lineEditY->text().toDouble();
scaling[2] = ui.lineEditZ->text().toDouble();
break;
}
@ -543,6 +518,7 @@ QVector3D transformed_tsr = QVector3D(tsr.x(), tsr.y(), tsr.z())*tMatrix;
double * matrix = transformMatrix();
transform_item->setFMatrix(matrix);
delete[] matrix;
updateUiMatrix();
transform_item->itemChanged();
}

View File

@ -25,53 +25,68 @@
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="3" column="3">
<widget class="QLineEdit" name="matrix_33"/>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="matrix_01"/>
</item>
<item row="0" column="3">
<widget class="QLineEdit" name="matrix_03"/>
<widget class="QLabel" name="matrix_01">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLineEdit" name="matrix_00"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="matrix_31"/>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="matrix_22"/>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="matrix_21"/>
</item>
<item row="2" column="0">
<widget class="QLineEdit" name="matrix_20"/>
</item>
<item row="1" column="3">
<widget class="QLineEdit" name="matrix_13"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="matrix_11"/>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="matrix_32"/>
</item>
<item row="0" column="2">
<widget class="QLineEdit" name="matrix_02"/>
</item>
<item row="2" column="3">
<widget class="QLineEdit" name="matrix_23"/>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="matrix_12"/>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="matrix_30"/>
<widget class="QLabel" name="matrix_00">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="matrix_10"/>
<widget class="QLabel" name="matrix_10">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="matrix_21">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="matrix_22">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="matrix_12">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="matrix_02">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="matrix_11">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="matrix_20">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
@ -84,13 +99,6 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="applyMatrix_Button">
<property name="text">
<string>Apply</string>
</property>
</widget>
</item>
</layout>
</item>
<item>