Mercurial > hg > orthanc-stone
diff Framework/Widgets/LayerWidget.cpp @ 315:aad37d0b6407 am-2
Added LayerWidget::RemoveLayer + DELETE commands in WebService
author | am@osimis.io |
---|---|
date | Fri, 05 Oct 2018 10:38:16 +0200 |
parents | 14ef1227120f |
children | 3a4ca166fafa |
line wrap: on
line diff
--- a/Framework/Widgets/LayerWidget.cpp Wed Oct 03 17:14:17 2018 +0200 +++ b/Framework/Widgets/LayerWidget.cpp Fri Oct 05 10:38:16 2018 +0200 @@ -37,7 +37,7 @@ double thickness_; size_t countMissing_; std::vector<ILayerRenderer*> renderers_; - +public: void DeleteLayer(size_t index) { if (index >= renderers_.size()) @@ -56,7 +56,6 @@ } } - public: Scene(const CoordinateSystem3D& slice, double thickness, size_t countLayers) : @@ -365,15 +364,6 @@ IObservable(broker), started_(false) { -// DeclareHandledMessage(MessageType_LayerSource_GeometryReady); -// DeclareHandledMessage(MessageType_LayerSource_ContentChanged); -// DeclareHandledMessage(MessageType_LayerSource_LayerReady); -// DeclareHandledMessage(MessageType_LayerSource_SliceChanged); -// DeclareHandledMessage(MessageType_LayerSource_GeometryError); - -// DeclareEmittableMessage(MessageType_Widget_GeometryChanged); -// DeclareEmittableMessage(MessageType_Widget_ContentChanged); - SetBackgroundCleared(true); } @@ -440,6 +430,26 @@ InvalidateLayer(index); } + void LayerWidget::RemoveLayer(size_t index) + { + if (index >= layers_.size()) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + + ILayerSource* previousLayer = layers_[index]; + layersIndex_.erase(layersIndex_.find(previousLayer)); + layers_.erase(layers_.begin() + index); + changedLayers_.erase(changedLayers_.begin() + index); + styles_.erase(styles_.begin() + index); + + delete layers_[index]; + + currentScene_->DeleteLayer(index); + ResetPendingScene(); + + NotifyContentChanged(); + } const RenderStyle& LayerWidget::GetLayerStyle(size_t layer) const {