| 227 | } |
| 228 | |
| 229 | bool mitk::RenderWindowLayerController::MoveNodeUp(DataNode* dataNode, const BaseRenderer* renderer /*= nullptr*/) |
| 230 | { |
| 231 | if (nullptr == dataNode) |
| 232 | { |
| 233 | return false; |
| 234 | } |
| 235 | |
| 236 | // get the layer stack of the current renderer |
| 237 | RenderWindowLayerUtilities::LayerStack stackedLayers = RenderWindowLayerUtilities::GetLayerStack(m_DataStorage, renderer); |
| 238 | if (!stackedLayers.empty()) |
| 239 | { |
| 240 | // get the current layer value of the given data node |
| 241 | int currentLayer; |
| 242 | bool wasFound = dataNode->GetIntProperty("layer", currentLayer, renderer); |
| 243 | if (wasFound) |
| 244 | { |
| 245 | // get the current layer in the map of stacked layers |
| 246 | RenderWindowLayerUtilities::LayerStack::const_iterator layerStackIterator = stackedLayers.find(currentLayer); |
| 247 | if (layerStackIterator != stackedLayers.end() && layerStackIterator != stackedLayers.begin()) |
| 248 | { |
| 249 | // found the element in the map, at different position than 'begin' -> |
| 250 | // current node is not on the topmost layer and therefore can be moved one layer up |
| 251 | // swap the layers of the dataNode and the dataNode on the next higher layer (previous map element) |
| 252 | RenderWindowLayerUtilities::LayerStack::const_iterator prevLayerStackIterator = std::prev(layerStackIterator); |
| 253 | dataNode->SetIntProperty("layer", prevLayerStackIterator->first, renderer); |
| 254 | prevLayerStackIterator->second->SetIntProperty("layer", currentLayer, renderer); |
| 255 | dataNode->Modified(); |
| 256 | if (nullptr == renderer) |
| 257 | { |
| 258 | mitk::RenderingManager::GetInstance()->RequestUpdateAll(); |
| 259 | |
| 260 | } |
| 261 | else |
| 262 | { |
| 263 | mitk::RenderingManager::GetInstance()->RequestUpdate(renderer->GetRenderWindow()); |
| 264 | } |
| 265 | return true; |
| 266 | } |
| 267 | // else: layer stack does not contain a layer with the 'currentLayer'data node or |
| 268 | // layer is already the topmost layer node |
| 269 | } |
| 270 | // else: data node has no layer information |
| 271 | } |
| 272 | // else: do not work with empty layer stack |
| 273 | return false; |
| 274 | } |
| 275 | |
| 276 | bool mitk::RenderWindowLayerController::MoveNodeDown(DataNode* dataNode, const BaseRenderer* renderer /*= nullptr*/) |
| 277 | { |
nothing calls this directly
no test coverage detected