MCPcopy Create free account
hub / github.com/MITK/MITK / CreateOpacityAction

Method CreateOpacityAction

Modules/SegmentationUI/src/QmitkMultiLabelInspector.cpp:1211–1280  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1209}
1210
1211QWidgetAction* QmitkMultiLabelInspector::CreateOpacityAction()
1212{
1213 auto selectedLabelValues = this->GetSelectedLabels();
1214
1215 auto relevantLabelValues = !this->GetMultiSelectionMode() || selectedLabelValues.size() <= 1
1216 ? this->GetCurrentlyAffactedLabelInstances()
1217 : selectedLabelValues;
1218
1219 std::vector<mitk::Label*> relevantLabels;
1220
1221 if (!relevantLabelValues.empty())
1222 {
1223 for (auto value : relevantLabelValues)
1224 {
1225 auto label = this->m_Segmentation->GetLabel(value);
1226 if (label.IsNull())
1227 mitkThrow() << "Invalid state. Internal model returned a label value that does not exist in segmentation. Invalid value:" << value;
1228 relevantLabels.emplace_back(label);
1229 }
1230
1231 auto* opacitySlider = new QSlider;
1232 opacitySlider->setMinimum(0);
1233 opacitySlider->setMaximum(100);
1234 opacitySlider->setOrientation(Qt::Horizontal);
1235
1236 auto opacity = relevantLabels.front()->GetOpacity();
1237 opacitySlider->setValue(static_cast<int>(opacity * 100));
1238 auto segmentation = m_Segmentation;
1239 auto guard = &m_LabelHighlightGuard;
1240
1241 auto onChangeLambda = [segmentation, relevantLabels](const int value)
1242 {
1243 auto opacity = static_cast<float>(value) / 100.0f;
1244 for (auto label : relevantLabels)
1245 {
1246 label->SetOpacity(opacity);
1247 segmentation->UpdateLookupTable(label->GetValue());
1248 }
1249 segmentation->GetLookupTable()->Modified();
1250 mitk::RenderingManager::GetInstance()->RequestUpdateAll();
1251 };
1252 QObject::connect(opacitySlider, &QSlider::valueChanged, this, onChangeLambda);
1253
1254 auto onPressedLambda = [guard]()
1255 {
1256 guard->SetHighlightedLabels({});
1257 };
1258 QObject::connect(opacitySlider, &QSlider::sliderPressed, this, onPressedLambda);
1259
1260 auto onReleasedLambda = [relevantLabelValues, guard]()
1261 {
1262 guard->SetHighlightedLabels(relevantLabelValues);
1263 };
1264 QObject::connect(opacitySlider, &QSlider::sliderReleased, this, onReleasedLambda);
1265
1266 QLabel* opacityLabel = new QLabel("Opacity: ");
1267 QVBoxLayout* opacityWidgetLayout = new QVBoxLayout;
1268 opacityWidgetLayout->setContentsMargins(4, 4, 4, 4);

Callers 1

Calls 15

GetSelectedLabelsMethod · 0.95
GetMultiSelectionModeMethod · 0.95
frontMethod · 0.80
SetHighlightedLabelsMethod · 0.80
sizeMethod · 0.45
emptyMethod · 0.45
GetLabelMethod · 0.45
IsNullMethod · 0.45
GetOpacityMethod · 0.45
SetOpacityMethod · 0.45
UpdateLookupTableMethod · 0.45

Tested by

no test coverage detected