comparison 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
comparison
equal deleted inserted replaced
314:97f16214dc5e 315:aad37d0b6407
35 private: 35 private:
36 CoordinateSystem3D slice_; 36 CoordinateSystem3D slice_;
37 double thickness_; 37 double thickness_;
38 size_t countMissing_; 38 size_t countMissing_;
39 std::vector<ILayerRenderer*> renderers_; 39 std::vector<ILayerRenderer*> renderers_;
40 40 public:
41 void DeleteLayer(size_t index) 41 void DeleteLayer(size_t index)
42 { 42 {
43 if (index >= renderers_.size()) 43 if (index >= renderers_.size())
44 { 44 {
45 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); 45 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
54 renderers_[index] = NULL; 54 renderers_[index] = NULL;
55 countMissing_++; 55 countMissing_++;
56 } 56 }
57 } 57 }
58 58
59 public:
60 Scene(const CoordinateSystem3D& slice, 59 Scene(const CoordinateSystem3D& slice,
61 double thickness, 60 double thickness,
62 size_t countLayers) : 61 size_t countLayers) :
63 slice_(slice), 62 slice_(slice),
64 thickness_(thickness), 63 thickness_(thickness),
363 WorldSceneWidget(name), 362 WorldSceneWidget(name),
364 IObserver(broker), 363 IObserver(broker),
365 IObservable(broker), 364 IObservable(broker),
366 started_(false) 365 started_(false)
367 { 366 {
368 // DeclareHandledMessage(MessageType_LayerSource_GeometryReady);
369 // DeclareHandledMessage(MessageType_LayerSource_ContentChanged);
370 // DeclareHandledMessage(MessageType_LayerSource_LayerReady);
371 // DeclareHandledMessage(MessageType_LayerSource_SliceChanged);
372 // DeclareHandledMessage(MessageType_LayerSource_GeometryError);
373
374 // DeclareEmittableMessage(MessageType_Widget_GeometryChanged);
375 // DeclareEmittableMessage(MessageType_Widget_ContentChanged);
376
377 SetBackgroundCleared(true); 367 SetBackgroundCleared(true);
378 } 368 }
379 369
380 370
381 LayerWidget::~LayerWidget() 371 LayerWidget::~LayerWidget()
438 ObserveLayer(*layer); 428 ObserveLayer(*layer);
439 429
440 InvalidateLayer(index); 430 InvalidateLayer(index);
441 } 431 }
442 432
433 void LayerWidget::RemoveLayer(size_t index)
434 {
435 if (index >= layers_.size())
436 {
437 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
438 }
439
440 ILayerSource* previousLayer = layers_[index];
441 layersIndex_.erase(layersIndex_.find(previousLayer));
442 layers_.erase(layers_.begin() + index);
443 changedLayers_.erase(changedLayers_.begin() + index);
444 styles_.erase(styles_.begin() + index);
445
446 delete layers_[index];
447
448 currentScene_->DeleteLayer(index);
449 ResetPendingScene();
450
451 NotifyContentChanged();
452 }
443 453
444 const RenderStyle& LayerWidget::GetLayerStyle(size_t layer) const 454 const RenderStyle& LayerWidget::GetLayerStyle(size_t layer) const
445 { 455 {
446 if (layer >= layers_.size()) 456 if (layer >= layers_.size())
447 { 457 {