Mercurial > hg > orthanc-stone
diff Framework/Widgets/LayerWidget.cpp @ 103:474d85e76499 wasm
mpr
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 31 May 2017 18:05:33 +0200 |
parents | efd9ef2b67f1 |
children | 53bd9277b025 |
line wrap: on
line diff
--- a/Framework/Widgets/LayerWidget.cpp Wed May 31 17:01:18 2017 +0200 +++ b/Framework/Widgets/LayerWidget.cpp Wed May 31 18:05:33 2017 +0200 @@ -375,6 +375,8 @@ ResetPendingScene(); layer->Register(*this); + ResetChangedLayers(); + return index; } @@ -435,7 +437,9 @@ if (LookupLayer(i, source)) { LOG(INFO) << "Geometry ready for layer " << i; - layers_[i]->ScheduleLayerCreation(slice_); + + changedLayers_[i] = true; + //layers_[i]->ScheduleLayerCreation(slice_); } } @@ -451,7 +455,9 @@ for (size_t i = 0; i < layers_.size(); i++) { assert(layers_[i] != NULL); - layers_[i]->ScheduleLayerCreation(slice_); + changedLayers_[i] = true; + + //layers_[i]->ScheduleLayerCreation(slice_); } } @@ -464,7 +470,9 @@ } assert(layers_[layer] != NULL); - layers_[layer]->ScheduleLayerCreation(slice_); + changedLayers_[layer] = true; + + //layers_[layer]->ScheduleLayerCreation(slice_); } @@ -473,7 +481,7 @@ size_t index; if (LookupLayer(index, source)) { - layers_[index]->ScheduleLayerCreation(slice_); + InvalidateLayer(index); } } @@ -486,7 +494,7 @@ size_t index; if (LookupLayer(index, source)) { - layers_[index]->ScheduleLayerCreation(slice_); + InvalidateLayer(index); } } } @@ -521,4 +529,31 @@ } } } + + + void LayerWidget::ResetChangedLayers() + { + changedLayers_.resize(layers_.size()); + + for (size_t i = 0; i < changedLayers_.size(); i++) + { + changedLayers_[i] = false; + } + } + + + void LayerWidget::UpdateContent() + { + assert(changedLayers_.size() <= layers_.size()); + + for (size_t i = 0; i < changedLayers_.size(); i++) + { + if (changedLayers_[i]) + { + layers_[i]->ScheduleLayerCreation(slice_); + } + } + + ResetChangedLayers(); + } }