void QmitkToFVisualisationSettingsWidget::InitializeTransferFunction(mitk::Image* distanceImage, mitk::Image* amplitudeImage, mitk::Image* intensityImage) { this->m_MitkDistanceImage = distanceImage; this->m_MitkAmplitudeImage = amplitudeImage; this->m_MitkIntensityImage = intensityImage; if (distanceImage && distanceImage && intensityImage) { m_RangeSliderMin = distanceImage->GetScalarValueMin(); m_RangeSliderMax = distanceImage->GetScalarValueMax(); //m_Widget1ColorTransferFunction = vtkColorTransferFunction::New(); ////m_Widget1ColorTransferFunction->RemoveAllPoints(); ////m_Widget1ColorTransferFunction->AddRGBPoint(m_RangeSliderMin, 1, 0, 0); ////m_Widget1ColorTransferFunction->AddRGBPoint((m_RangeSliderMin+(m_RangeSliderMax-m_RangeSliderMin)/2, 0, 1, 0); ////m_Widget1ColorTransferFunction->AddRGBPoint(m_RangeSliderMax, 0, 0, 1); ////m_Widget1ColorTransferFunction->SetColorSpaceToHSV(); //this->m_Widget1TransferFunctionType = 1; //ResetTransferFunction(this->m_Widget1ColorTransferFunction, this->m_Widget1TransferFunctionType ,distanceImage->GetScalarValueMin(), distanceImage->GetScalarValueMax()); //m_Widget2ColorTransferFunction = vtkColorTransferFunction::New(); ////m_Widget2ColorTransferFunction->RemoveAllPoints(); ////m_Widget2ColorTransferFunction->AddRGBPoint(amplitudeImage->GetScalarValueMin(), 1, 1, 1); ////m_Widget2ColorTransferFunction->AddRGBPoint(amplitudeImage->GetScalarValueMax(), 0, 0, 0); ////m_Widget2ColorTransferFunction->SetColorSpaceToHSV(); //this->m_Widget2TransferFunctionType = 0; //ResetTransferFunction(this->m_Widget2ColorTransferFunction, this->m_Widget2TransferFunctionType, amplitudeImage->GetScalarValueMin(), amplitudeImage->GetScalarValueMax()); //m_Widget3ColorTransferFunction = vtkColorTransferFunction::New(); ////m_Widget3ColorTransferFunction->RemoveAllPoints(); ////m_Widget3ColorTransferFunction->AddRGBPoint(intensityImage->GetScalarValueMin(), 1, 1, 1); ////m_Widget3ColorTransferFunction->AddRGBPoint(intensityImage->GetScalarValueMax(), 0, 0, 0); ////m_Widget3ColorTransferFunction->SetColorSpaceToHSV(); //this->m_Widget3TransferFunctionType = 0; //ResetTransferFunction(this->m_Widget3ColorTransferFunction, this->m_Widget3TransferFunctionType, intensityImage->GetScalarValueMin(), intensityImage->GetScalarValueMax()); OnUpdateCanvas(); int border = (m_RangeSliderMax - m_RangeSliderMin) * 0.1; m_Controls->m_RangeSlider->setMinimum(m_RangeSliderMin - border); m_Controls->m_RangeSlider->setMaximum(m_RangeSliderMax + border); m_Controls->m_RangeSliderMinEdit->setText(QString("").setNum(m_RangeSliderMin - border)); m_Controls->m_RangeSliderMaxEdit->setText(QString("").setNum(m_RangeSliderMax + border)); m_Controls->m_RangeSlider->setSpan( m_RangeSliderMin, m_RangeSliderMax); UpdateRanges(); } else { m_Controls->m_ColorTransferFunctionCanvas->setEnabled(false); } }
void QmitkTransferFunctionWidget::SetDataNode(mitk::DataNode *node, const mitk::BaseRenderer *renderer) { if (node) { tfpToChange = dynamic_cast<mitk::TransferFunctionProperty *>(node->GetProperty("TransferFunction", renderer)); if (!tfpToChange) { if (!dynamic_cast<mitk::Image *>(node->GetData())) { MITK_WARN << "QmitkTransferFunctionWidget::SetDataNode called with non-image node"; goto turnOff; } node->SetProperty("TransferFunction", tfpToChange = mitk::TransferFunctionProperty::New()); } mitk::TransferFunction::Pointer tf = tfpToChange->GetValue(); if (mitk::BaseData *data = node->GetData()) { mitk::SimpleHistogram *h = histogramCache[data]; m_RangeSliderMin = h->GetMin(); m_RangeSliderMax = h->GetMax(); m_RangeSlider->blockSignals(true); m_RangeSlider->setMinimum(m_RangeSliderMin); m_RangeSlider->setMaximum(m_RangeSliderMax); m_RangeSlider->setMinimumValue(m_RangeSliderMin); m_RangeSlider->setMaximumValue(m_RangeSliderMax); m_RangeSlider->blockSignals(false); m_ScalarOpacityFunctionCanvas->SetHistogram(h); m_GradientOpacityCanvas->SetHistogram(h); m_ColorTransferFunctionCanvas->SetHistogram(h); } OnUpdateCanvas(); return; } turnOff: m_ScalarOpacityFunctionCanvas->setEnabled(false); m_ScalarOpacityFunctionCanvas->SetHistogram(nullptr); m_GradientOpacityCanvas->setEnabled(false); m_GradientOpacityCanvas->SetHistogram(nullptr); m_ColorTransferFunctionCanvas->setEnabled(false); m_ColorTransferFunctionCanvas->SetHistogram(nullptr); tfpToChange = nullptr; }
void QmitkToFVisualisationSettingsWidget::SetDataNode(mitk::DataNode* node) { if (node) { m_TfpToChange = dynamic_cast<mitk::TransferFunctionProperty*>(node->GetProperty("TransferFunction")); if(!m_TfpToChange) { if (! dynamic_cast<mitk::Image*>(node->GetData())) { MITK_WARN << "QmitkTransferFunctionWidget::SetDataNode called with non-image node"; goto turnOff; } m_TfpToChange = mitk::TransferFunctionProperty::New(); mitk::TransferFunction::Pointer ctf = mitk::TransferFunction::New(); ctf->InitializeByMitkImage(dynamic_cast<mitk::Image*>(node->GetData())); m_TfpToChange->SetValue(ctf); node->SetProperty("TransferFunction", m_TfpToChange ); } mitk::TransferFunction::Pointer tf = m_TfpToChange->GetValue(); if( mitk::Image* image = dynamic_cast<mitk::Image*>( node->GetData() ) ) { mitk::SimpleHistogram *h = histogramCache[image]; m_RangeSliderMin= h->GetMin(); m_RangeSliderMax= h->GetMax(); } OnUpdateCanvas(); m_Controls->m_RangeSlider->setSpan( m_RangeSliderMin, m_RangeSliderMax); UpdateRanges(); return; } turnOff: m_Controls->m_ColorTransferFunctionCanvas->setEnabled(false); m_TfpToChange = 0; }
void QmlMitkTransferFunctionItem::SetDataNode(mitk::DataNode* node, const mitk::BaseRenderer* renderer) { if (node) { tfpToChange = dynamic_cast<mitk::TransferFunctionProperty*>(node->GetProperty("TransferFunction", renderer)); if(!tfpToChange) { if (! dynamic_cast<mitk::Image*>(node->GetData())) { MITK_WARN << "QmlMitkTransferFunctionItem::SetDataNode called with non-image node"; // goto turnOff; } node->SetProperty("TransferFunction", tfpToChange = mitk::TransferFunctionProperty::New() ); } mitk::TransferFunction::Pointer tf = tfpToChange->GetValue(); if( mitk::BaseData* data = node->GetData() ) { mitk::SimpleHistogram *h = histogramCache[data]; this->setMin(h->GetMin()); this->setMax(h->GetMax()); this->m_CurrentMin = h->GetMin(); this->m_CurrentMax = h->GetMax(); this->m_ColorItem->SetHistogram( h ); this->m_OpacityItem->SetHistogram( h ); // m_ColorTransferFunctionCanvas->SetHistogram( h ); emit this->sync(); } OnUpdateCanvas(); return; } }
void QmitkVolumeVisualizationView::CreateQtPartControl(QWidget* parent) { if (!m_Controls) { m_Controls = new Ui::QmitkVolumeVisualizationViewControls; m_Controls->setupUi(parent); m_Controls->m_TransferFunctionWidget->SetIntegerMode(true); // Fill the tf presets in the generator widget std::vector<std::string> names; mitk::TransferFunctionInitializer::GetPresetNames(names); for (std::vector<std::string>::const_iterator it = names.begin(); it != names.end(); ++it) { m_Controls->m_TransferFunctionGeneratorWidget->AddPreset(QString::fromStdString(*it)); } m_Controls->m_RenderMode->addItem("CPU raycast"); m_Controls->m_RenderMode->addItem("CPU MIP raycast"); m_Controls->m_RenderMode->addItem("GPU slicing"); // Only with VTK 5.6 or above #if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) )) m_Controls->m_RenderMode->addItem("GPU raycast"); m_Controls->m_RenderMode->addItem("GPU MIP raycast"); #endif connect( m_Controls->m_EnableRenderingCB, SIGNAL( toggled(bool) ),this, SLOT( OnEnableRendering(bool) )); connect( m_Controls->m_EnableLOD, SIGNAL( toggled(bool) ),this, SLOT( OnEnableLOD(bool) )); connect( m_Controls->m_RenderMode, SIGNAL( activated(int) ),this, SLOT( OnRenderMode(int) )); connect( m_Controls->m_TransferFunctionGeneratorWidget, SIGNAL( SignalUpdateCanvas( ) ), m_Controls->m_TransferFunctionWidget, SLOT( OnUpdateCanvas( ) ) ); connect( m_Controls->m_TransferFunctionGeneratorWidget, SIGNAL(SignalTransferFunctionModeChanged(int)), SLOT(OnMitkInternalPreset(int))); m_Controls->m_EnableRenderingCB->setEnabled(false); m_Controls->m_EnableLOD->setEnabled(false); m_Controls->m_RenderMode->setEnabled(false); m_Controls->m_TransferFunctionWidget->setEnabled(false); m_Controls->m_TransferFunctionGeneratorWidget->setEnabled(false); m_Controls->m_SelectedImageLabel->hide(); m_Controls->m_ErrorImageLabel->hide(); }