From 05b970a6465f7ca1f33a360232eb4612ef7bfce4 Mon Sep 17 00:00:00 2001 From: Karsten Rink <karsten.rink@ufz.de> Date: Tue, 20 Sep 2011 11:09:04 +0200 Subject: [PATCH] included tranlation option into GUI; removed multi-mesh from FEM Read and re-inserted adding the mesh into global mesh vector into files0.cpp --- VtkVis/VtkCompositeSelectionFilter.cpp | 2 +- VtkVis/VtkVisPipelineItem.cpp | 13 ++ VtkVis/VtkVisPipelineItem.h | 3 + VtkVis/VtkVisTabWidget.cpp | 45 +++++- VtkVis/VtkVisTabWidget.h | 6 + VtkVis/VtkVisTabWidgetBase.ui | 200 ++++++++++++++++++++++--- 6 files changed, 246 insertions(+), 23 deletions(-) diff --git a/VtkVis/VtkCompositeSelectionFilter.cpp b/VtkVis/VtkCompositeSelectionFilter.cpp index 1a40325c7ea..91b3e627339 100644 --- a/VtkVis/VtkCompositeSelectionFilter.cpp +++ b/VtkVis/VtkCompositeSelectionFilter.cpp @@ -22,7 +22,7 @@ VtkCompositeSelectionFilter::VtkCompositeSelectionFilter( vtkAlgorithm* inputAlg void VtkCompositeSelectionFilter::init() { - const char* filter_name = std::string("Selection").c_str(); + const char* filter_name("Selection"); double thresholdLower(0.0), thresholdUpper(1.0); this->_inputDataObjectType = VTK_UNSTRUCTURED_GRID; this->_outputDataObjectType = VTK_UNSTRUCTURED_GRID; diff --git a/VtkVis/VtkVisPipelineItem.cpp b/VtkVis/VtkVisPipelineItem.cpp index 9e4977abbb4..37f1dd0b2ee 100644 --- a/VtkVis/VtkVisPipelineItem.cpp +++ b/VtkVis/VtkVisPipelineItem.cpp @@ -535,6 +535,19 @@ void VtkVisPipelineItem::setScale(double x, double y, double z) const } +void VtkVisPipelineItem::setTranslation(double x, double y, double z) const +{ + if (this->transformFilter()) + { + vtkTransform* transform = + static_cast<vtkTransform*>(this->transformFilter()->GetTransform()); + transform->Identity(); + transform->Translate(x, y, z); + this->transformFilter()->Modified(); + } + +} + void VtkVisPipelineItem::setScaleOnChildren(double x, double y, double z) const { for (int i = 0; i < this->childCount(); ++i) diff --git a/VtkVis/VtkVisPipelineItem.h b/VtkVis/VtkVisPipelineItem.h index c3b12ff1699..a1dc8bb3ad8 100644 --- a/VtkVis/VtkVisPipelineItem.h +++ b/VtkVis/VtkVisPipelineItem.h @@ -100,6 +100,9 @@ public: /// @brief Sets the geometry and data scaling. void setScale(double x, double y, double z) const; + /// @brief Translates the item in vis-space. + void setTranslation(double x, double y, double z) const; + /// @brief Sets the geometry and date scaling recursively on all children of /// this item. void setScaleOnChildren(double x, double y, double z) const; diff --git a/VtkVis/VtkVisTabWidget.cpp b/VtkVis/VtkVisTabWidget.cpp index f84bc6ed5d7..5c4510bd6c9 100644 --- a/VtkVis/VtkVisTabWidget.cpp +++ b/VtkVis/VtkVisTabWidget.cpp @@ -35,6 +35,10 @@ VtkVisTabWidget::VtkVisTabWidget( QWidget* parent /*= 0*/ ) this->scaleZ->setValidator(new QDoubleValidator(0, 100, 8, this)); + this->transX->setValidator(new QDoubleValidator(this)); + this->transY->setValidator(new QDoubleValidator(this)); + this->transZ->setValidator(new QDoubleValidator(this)); + connect(this->vtkVisPipelineView, SIGNAL(requestViewUpdate()), this, SIGNAL(requestViewUpdate())); @@ -56,16 +60,33 @@ void VtkVisTabWidget::setActiveItem( VtkVisPipelineItem* item ) if (actor) { actorPropertiesGroupBox->setEnabled(true); + transformTabWidget->setEnabled(true); vtkProperty* vtkProps = actor->GetProperty(); diffuseColorPickerButton->setColor(vtkProps->GetDiffuseColor()); visibleEdgesCheckBox->setChecked(vtkProps->GetEdgeVisibility()); edgeColorPickerButton->setColor(vtkProps->GetEdgeColor()); opacitySlider->setValue((int)(vtkProps->GetOpacity() * 100.0)); vtkTransform* transform = - static_cast<vtkTransform*>(_item->transformFilter()->GetTransform()); + static_cast<vtkTransform*>(_item->transformFilter()->GetTransform()); + //signals off double scale[3]; transform->GetScale(scale); - scaleZ->setText(QString::number(scale[2])); + double* trans = transform->GetPosition(); + + //switch signals off for just filling in text-boxes after clicking on an item + this->scaleZ->blockSignals(true); + this->transX->blockSignals(true); + this->transY->blockSignals(true); + this->transZ->blockSignals(true); + this->scaleZ->setText(QString::number(scale[2])); + this->transX->setText(QString::number(trans[0])); + this->transY->setText(QString::number(trans[1])); + this->transZ->setText(QString::number(trans[2])); + this->scaleZ->blockSignals(false); + this->transX->blockSignals(false); + this->transY->blockSignals(false); + this->transZ->blockSignals(false); + //switch signals back on this->buildScalarArrayComboBox(_item); @@ -82,7 +103,10 @@ void VtkVisTabWidget::setActiveItem( VtkVisPipelineItem* item ) } } else + { actorPropertiesGroupBox->setEnabled(false); + transformTabWidget->setEnabled(false); + } this->buildProportiesDialog(item); @@ -110,6 +134,7 @@ void VtkVisTabWidget::setActiveItem( VtkVisPipelineItem* item ) else { actorPropertiesGroupBox->setEnabled(false); + transformTabWidget->setEnabled(false); this->activeScalarComboBox->clear(); } @@ -179,6 +204,22 @@ void VtkVisTabWidget::on_scaleZ_textChanged(const QString &text) } } +void VtkVisTabWidget::translateItem() +{ + bool okX(true), okY(true), okZ(true); + double trans[3]; + + trans[0] = transX->text().toDouble(&okX); + trans[1] = transY->text().toDouble(&okY); + trans[2] = transZ->text().toDouble(&okZ); + + if (okX && okY && okZ) + { + _item->setTranslation(trans[0], trans[1], trans[2]); + emit requestViewUpdate(); + } +} + void VtkVisTabWidget::buildProportiesDialog(VtkVisPipelineItem* item) { QFormLayout* layout = static_cast<QFormLayout*>(this->scrollAreaWidgetContents->layout()); diff --git a/VtkVis/VtkVisTabWidget.h b/VtkVis/VtkVisTabWidget.h index 513da64b249..23204c48d0f 100644 --- a/VtkVis/VtkVisTabWidget.h +++ b/VtkVis/VtkVisTabWidget.h @@ -34,6 +34,9 @@ protected slots: void on_edgeColorPickerButton_colorPicked(QColor color); void on_opacitySlider_sliderMoved(int value); void on_scaleZ_textChanged(const QString &text); + void on_transX_textChanged(const QString &text) { this->translateItem(); }; + void on_transY_textChanged(const QString &text) { this->translateItem(); }; + void on_transZ_textChanged(const QString &text) { this->translateItem(); }; void SetActiveAttributeOnItem(const QString &name); @@ -43,6 +46,9 @@ private: /// Reads the scalar arrays of the given vtk-object and constructs content for the scalar array selection box. void buildScalarArrayComboBox(VtkVisPipelineItem* item); + + void translateItem(); + VtkVisPipelineItem* _item; signals: diff --git a/VtkVis/VtkVisTabWidgetBase.ui b/VtkVis/VtkVisTabWidgetBase.ui index 07be0bde26e..5bad5ace50b 100644 --- a/VtkVis/VtkVisTabWidgetBase.ui +++ b/VtkVis/VtkVisTabWidgetBase.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>279</width> - <height>741</height> + <width>259</width> + <height>677</height> </rect> </property> <property name="windowTitle"> @@ -55,7 +55,7 @@ <property name="minimumSize"> <size> <width>0</width> - <height>200</height> + <height>180</height> </size> </property> <property name="title"> @@ -113,23 +113,6 @@ </property> </widget> </item> - <item row="5" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Scaling Factor</string> - </property> - </widget> - </item> - <item row="5" column="1"> - <widget class="QLineEdit" name="scaleZ"> - <property name="text"> - <string>1</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> <item row="1" column="1"> <widget class="QComboBox" name="activeScalarComboBox"/> </item> @@ -143,6 +126,183 @@ </layout> </widget> </item> + <item> + <widget class="QTabWidget" name="transformTabWidget"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>60</height> + </size> + </property> + <property name="currentIndex"> + <number>1</number> + </property> + <widget class="QWidget" name="scalingTab"> + <attribute name="title"> + <string>Scaling</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <property name="spacing"> + <number>5</number> + </property> + <property name="margin"> + <number>5</number> + </property> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <property name="spacing"> + <number>5</number> + </property> + <property name="sizeConstraint"> + <enum>QLayout::SetDefaultConstraint</enum> + </property> + <item> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Scaling Factor</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="scaleZ"> + <property name="text"> + <string>1</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="translationTab"> + <attribute name="title"> + <string>Translation</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <property name="spacing"> + <number>5</number> + </property> + <property name="margin"> + <number>5</number> + </property> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <property name="spacing"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="transXLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>X</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="transX"> + <property name="text"> + <string>0</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="transYLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Y</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="transY"> + <property name="text"> + <string>0</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="transZLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Z</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="transZ"> + <property name="text"> + <string>0</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </widget> + </item> <item> <widget class="QGroupBox" name="filterPropertiesGroupBox"> <property name="sizePolicy"> -- GitLab