Mercurial > hg > orthanc-stone
diff Framework/Radiography/RadiographyScene.h @ 492:64d90190a08c am-touch-events
template GetLayer
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Wed, 20 Feb 2019 20:57:43 +0100 |
parents | aede9b042cb7 |
children | 77e0eb83ff63 |
line wrap: on
line diff
--- a/Framework/Radiography/RadiographyScene.h Tue Feb 19 11:40:14 2019 +0100 +++ b/Framework/Radiography/RadiographyScene.h Wed Feb 20 20:57:43 2019 +0100 @@ -174,6 +174,30 @@ const RadiographyLayer& GetLayer(size_t layerIndex) const; + template <typename TypeLayer> + TypeLayer* GetLayer(size_t index = 0) + { + std::vector<size_t> layerIndexes; + GetLayersIndexes(layerIndexes); + + size_t count = 0; + + for (size_t i = 0; i < layerIndexes.size(); ++i) + { + TypeLayer* typedLayer = dynamic_cast<TypeLayer*>(layers_[layerIndexes[i]]); + if (typedLayer != NULL) + { + if (count == index) + { + return typedLayer; + } + count++; + } + } + + return NULL; + } + void GetLayersIndexes(std::vector<size_t>& output) const; Extent2D GetSceneExtent() const;