Mercurial > hg > orthanc-stone
diff Framework/Scene2D/PolylineSceneLayer.cpp @ 804:61ba4b504e9a
PolylineSceneLayer now has one color per chain
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 28 May 2019 15:58:21 +0200 |
parents | 500c3f70b6c2 |
children | 2d8ab34c8c91 |
line wrap: on
line diff
--- a/Framework/Scene2D/PolylineSceneLayer.cpp Tue May 28 14:18:46 2019 +0200 +++ b/Framework/Scene2D/PolylineSceneLayer.cpp Tue May 28 15:58:21 2019 +0200 @@ -25,6 +25,14 @@ namespace OrthancStone { + void PolylineSceneLayer::Copy(const PolylineSceneLayer& other) + { + items_ = other.items_; + thickness_ = other.thickness_; + revision_ ++; + } + + ISceneLayer* PolylineSceneLayer::Clone() const { std::auto_ptr<PolylineSceneLayer> cloned(new PolylineSceneLayer); @@ -42,52 +50,40 @@ else { thickness_ = thickness; - BumpRevision(); + revision_++; } } - void PolylineSceneLayer::Copy(const PolylineSceneLayer& from) - { - SetColor(from.GetRed(), from.GetGreen(), from.GetBlue()); - chains_ = from.chains_; - closed_ = from.closed_; - thickness_ = from.thickness_; - BumpRevision(); - } - - - void PolylineSceneLayer::Reserve(size_t countChains) - { - chains_.reserve(countChains); - closed_.reserve(countChains); - } - - void PolylineSceneLayer::AddChain(const Chain& chain, - bool isClosed) + bool isClosed, + uint8_t red, + uint8_t green, + uint8_t blue) { if (!chain.empty()) { - chains_.push_back(chain); - closed_.push_back(isClosed); - BumpRevision(); + items_.push_back(Item()); + items_.back().chain_ = chain; + items_.back().closed_ = isClosed; + items_.back().color_ = Color(red, green, blue); + + revision_++; } } void PolylineSceneLayer::ClearAllChains() { - chains_.clear(); - closed_.clear(); - BumpRevision(); + items_.clear(); + revision_++; } - const PolylineSceneLayer::Chain& PolylineSceneLayer::GetChain(size_t i) const + const PolylineSceneLayer::Item& PolylineSceneLayer::GetItem(size_t i) const { - if (i < chains_.size()) + if (i < items_.size()) { - return chains_[i]; + return items_[i]; } else { @@ -96,28 +92,15 @@ } - bool PolylineSceneLayer::IsClosedChain(size_t i) const - { - if (i < closed_.size()) - { - return closed_[i]; - } - else - { - throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); - } - } - - bool PolylineSceneLayer::GetBoundingBox(Extent2D& target) const { target.Reset(); - for (size_t i = 0; i < chains_.size(); i++) + for (size_t i = 0; i < items_.size(); i++) { - for (size_t j = 0; j < chains_[i].size(); j++) + for (size_t j = 0; j < items_[i].chain_.size(); j++) { - const ScenePoint2D& p = chains_[i][j]; + const ScenePoint2D& p = items_[i].chain_[j]; target.AddPoint(p.GetX(), p.GetY()); } }