| 179 | } |
| 180 | |
| 181 | bool mitk::RenderWindowLayerController::MoveNodeToBack(DataNode* dataNode, const BaseRenderer* renderer /*= nullptr*/) |
| 182 | { |
| 183 | if (nullptr == dataNode) |
| 184 | { |
| 185 | return false; |
| 186 | } |
| 187 | |
| 188 | // get the layer stack of the current renderer |
| 189 | RenderWindowLayerUtilities::LayerStack stackedLayers = RenderWindowLayerUtilities::GetLayerStack(m_DataStorage, renderer); |
| 190 | if (!stackedLayers.empty()) |
| 191 | { |
| 192 | // get the last value (lowest int-key) |
| 193 | int lowermostLayer = stackedLayers.rbegin()->first; |
| 194 | // get the current layer value of the given data node |
| 195 | int currentLayer; |
| 196 | bool wasFound = dataNode->GetIntProperty("layer", currentLayer, renderer); |
| 197 | if (wasFound && currentLayer > lowermostLayer) |
| 198 | { |
| 199 | // move the current data node to the current lowermost layer |
| 200 | dataNode->SetIntProperty("layer", lowermostLayer, renderer); |
| 201 | // move all other data nodes one layer up |
| 202 | for (auto& layer : stackedLayers) |
| 203 | { |
| 204 | if (layer.second != dataNode && layer.first < currentLayer) |
| 205 | { |
| 206 | layer.second->SetIntProperty("layer", layer.first + 1, renderer); |
| 207 | } |
| 208 | // else: current data node is the selected data node or |
| 209 | // was previously already above the selected data node |
| 210 | } |
| 211 | dataNode->Modified(); |
| 212 | if (nullptr == renderer) |
| 213 | { |
| 214 | mitk::RenderingManager::GetInstance()->RequestUpdateAll(); |
| 215 | |
| 216 | } |
| 217 | else |
| 218 | { |
| 219 | mitk::RenderingManager::GetInstance()->RequestUpdate(renderer->GetRenderWindow()); |
| 220 | } |
| 221 | return true; |
| 222 | } |
| 223 | // else: data node has no layer information or is already the lowermost layer node |
| 224 | } |
| 225 | // else: do not work with empty layer stack |
| 226 | return false; |
| 227 | } |
| 228 | |
| 229 | bool mitk::RenderWindowLayerController::MoveNodeUp(DataNode* dataNode, const BaseRenderer* renderer /*= nullptr*/) |
| 230 | { |
nothing calls this directly
no test coverage detected