ctkVTKAbstractMatrixWidget.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Qt includes
  2. #include <QDebug>
  3. #include <QVector>
  4. // CTK includes
  5. #include "ctkVTKAbstractMatrixWidget_p.h"
  6. #include "ctkVTKAbstractMatrixWidget.h"
  7. // VTK includes
  8. #include <vtkMatrix4x4.h>
  9. // --------------------------------------------------------------------------
  10. ctkVTKAbstractMatrixWidgetPrivate::ctkVTKAbstractMatrixWidgetPrivate()
  11. :QObject(0) // will be reparented in init()
  12. {
  13. }
  14. void ctkVTKAbstractMatrixWidgetPrivate::init()
  15. {
  16. CTK_P(ctkVTKAbstractMatrixWidget);
  17. this->setParent(p);
  18. this->updateMatrix();
  19. }
  20. // --------------------------------------------------------------------------
  21. void ctkVTKAbstractMatrixWidgetPrivate::setMatrix(vtkMatrix4x4* matrixVariable)
  22. {
  23. qvtkReconnect(this->Matrix.GetPointer(), matrixVariable,
  24. vtkCommand::ModifiedEvent, this, SLOT(updateMatrix()));
  25. this->Matrix = matrixVariable;
  26. this->updateMatrix();
  27. }
  28. // --------------------------------------------------------------------------
  29. vtkMatrix4x4* ctkVTKAbstractMatrixWidgetPrivate::matrix() const
  30. {
  31. return this->Matrix;
  32. }
  33. // --------------------------------------------------------------------------
  34. void ctkVTKAbstractMatrixWidgetPrivate::updateMatrix()
  35. {
  36. CTK_P(ctkVTKAbstractMatrixWidget);
  37. // if there is no transform to show/edit, disable the widget
  38. p->setEnabled(this->Matrix != 0);
  39. if (this->Matrix == 0)
  40. {
  41. p->reset();
  42. return;
  43. }
  44. QVector<double> vector;
  45. //todo: fasten the loop
  46. for (int i=0; i < 4; i++)
  47. {
  48. for (int j=0; j < 4; j++)
  49. {
  50. vector.append(this->Matrix->GetElement(i,j));
  51. }
  52. }
  53. p->setVector( vector );
  54. }
  55. // --------------------------------------------------------------------------
  56. ctkVTKAbstractMatrixWidget::ctkVTKAbstractMatrixWidget(QWidget* parentVariable) : Superclass(parentVariable)
  57. {
  58. CTK_INIT_PRIVATE(ctkVTKAbstractMatrixWidget);
  59. ctk_d()->init();
  60. }
  61. // --------------------------------------------------------------------------
  62. vtkMatrix4x4* ctkVTKAbstractMatrixWidget::matrix()const
  63. {
  64. CTK_D(const ctkVTKAbstractMatrixWidget);
  65. return d->matrix();
  66. }
  67. // --------------------------------------------------------------------------
  68. void ctkVTKAbstractMatrixWidget::setMatrixInternal(vtkMatrix4x4* matrixVariable)
  69. {
  70. CTK_D(ctkVTKAbstractMatrixWidget);
  71. d->setMatrix(matrixVariable);
  72. }