# HG changeset patch # User am@osimis.io # Date 1528461705 -7200 # Node ID 26e3bfe30e663426e9fd61549c88d326a8bcd36b # Parent c2f0077bb5b81702eead20bf0f136271375273d9 ReplaceLayer() diff -r c2f0077bb5b8 -r 26e3bfe30e66 Framework/Widgets/LayerWidget.cpp --- a/Framework/Widgets/LayerWidget.cpp Thu Jun 07 17:03:47 2018 +0200 +++ b/Framework/Widgets/LayerWidget.cpp Fri Jun 08 14:41:45 2018 +0200 @@ -395,7 +395,29 @@ return index; } - + void LayerWidget::ReplaceLayer(size_t index, ILayerSource* layer) // Takes ownership + { + if (layer == NULL) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); + } + + if (index >= layers_.size()) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + + delete layers_[index]; + layers_[index] = layer; + layersIndex_[layer] = index; + + ResetPendingScene(); + layer->Register(*this); + + InvalidateLayer(index); + } + + const RenderStyle& LayerWidget::GetLayerStyle(size_t layer) const { if (layer >= layers_.size()) diff -r c2f0077bb5b8 -r 26e3bfe30e66 Framework/Widgets/LayerWidget.h --- a/Framework/Widgets/LayerWidget.h Thu Jun 07 17:03:47 2018 +0200 +++ b/Framework/Widgets/LayerWidget.h Fri Jun 08 14:41:45 2018 +0200 @@ -93,6 +93,8 @@ size_t AddLayer(ILayerSource* layer); // Takes ownership + void ReplaceLayer(size_t layerIndex, ILayerSource* layer); // Takes ownership + size_t GetLayerCount() const { return layers_.size();