| 141 | {} |
| 142 | |
| 143 | void ReadMetalineTask::Run() |
| 144 | { |
| 145 | auto metalines = ReadMetalinesFromFile(m_mwmId); |
| 146 | for (auto & metaline : metalines) |
| 147 | { |
| 148 | if (m_isCancelled) |
| 149 | return; |
| 150 | |
| 151 | bool failed = false; |
| 152 | for (auto const & fid : metaline.m_features) |
| 153 | { |
| 154 | if (m_metalines.find(fid) != m_metalines.end()) |
| 155 | { |
| 156 | failed = true; |
| 157 | break; |
| 158 | } |
| 159 | } |
| 160 | if (failed) |
| 161 | continue; |
| 162 | |
| 163 | auto mergedPoints = MergePoints(ReadPoints(m_model, metaline), metaline.m_features); |
| 164 | if (mergedPoints.size() < 2) |
| 165 | continue; |
| 166 | |
| 167 | m2::SharedSpline const spline(std::move(mergedPoints)); |
| 168 | for (auto & fid : metaline.m_features) |
| 169 | m_metalines.emplace(std::move(fid), spline); |
| 170 | } |
| 171 | } |
| 172 | |
| 173 | bool ReadMetalineTask::UpdateCache(MetalineCache & cache) |
| 174 | { |
no test coverage detected