3 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 #include <dali-toolkit/internal/text/spannable/span-ranges-container-impl.h>
31 struct SpanRangesContainer::Impl
33 std::map<Dali::Toolkit::Text::BaseSpan, Dali::Toolkit::Text::Range> mSpanWithRanges; ///< The list of style-span
36 SpanRangesContainer::SpanRangesContainer()
38 mImpl = std::make_unique<Impl>();
41 SpanRangesContainer::~SpanRangesContainer()
45 void SpanRangesContainer::AddSpan(const Dali::Toolkit::Text::BaseSpan& span, const Dali::Toolkit::Text::Range& range)
47 mImpl->mSpanWithRanges.insert(std::make_pair(span, range));
50 void SpanRangesContainer::RemoveSpan(const Dali::Toolkit::Text::BaseSpan& span)
52 mImpl->mSpanWithRanges.erase(span);
55 bool SpanRangesContainer::Contains(const Dali::Toolkit::Text::BaseSpan& span) const
57 std::map<Dali::Toolkit::Text::BaseSpan, Dali::Toolkit::Text::Range>::iterator it = mImpl->mSpanWithRanges.find(span);
59 return it != mImpl->mSpanWithRanges.end();
62 void SpanRangesContainer::GetSpans(std::vector<Dali::Toolkit::Text::BaseSpan>& listOfSpans) const
64 for(std::map<Dali::Toolkit::Text::BaseSpan, Dali::Toolkit::Text::Range>::iterator it = mImpl->mSpanWithRanges.begin();
65 it != mImpl->mSpanWithRanges.end();
68 listOfSpans.push_back(it->first);
72 void SpanRangesContainer::GetSpansAndRanges(std::vector<Dali::Toolkit::Text::BaseSpan>& spans, std::vector<Dali::Toolkit::Text::Range>& ranges) const
74 for(std::map<Dali::Toolkit::Text::BaseSpan, Dali::Toolkit::Text::Range>::iterator it = mImpl->mSpanWithRanges.begin();
75 it != mImpl->mSpanWithRanges.end();
78 spans.push_back(it->first);
79 ranges.push_back(it->second);
82 } // namespace Internal
86 } // namespace Toolkit