| 53 | } |
| 54 | |
| 55 | std::unique_ptr<CentersTable> CentersTable::LoadV1(Reader & reader) |
| 56 | { |
| 57 | auto table = std::make_unique<CentersTable>(); |
| 58 | table->m_version = Version::V1; |
| 59 | |
| 60 | Header header; |
| 61 | header.Read(reader); |
| 62 | |
| 63 | NonOwningReaderSource src(reader, header.m_geometryParamsOffset, |
| 64 | header.m_geometryParamsOffset + header.m_geometryParamsSize); |
| 65 | |
| 66 | serial::GeometryCodingParams codingParams; |
| 67 | codingParams.Load(src); |
| 68 | auto minX = ReadPrimitiveFromSource<uint32_t>(src); |
| 69 | auto minY = ReadPrimitiveFromSource<uint32_t>(src); |
| 70 | auto maxX = ReadPrimitiveFromSource<uint32_t>(src); |
| 71 | auto maxY = ReadPrimitiveFromSource<uint32_t>(src); |
| 72 | m2::RectD limitRect(PointUToPointD({minX, minY}, kPointCoordBits), PointUToPointD({maxX, maxY}, kPointCoordBits)); |
| 73 | |
| 74 | table->m_centersSubreader = reader.CreateSubReader(header.m_centersOffset, header.m_centersSize); |
| 75 | if (!table->m_centersSubreader) |
| 76 | return {}; |
| 77 | if (!table->Init(*(table->m_centersSubreader), codingParams, limitRect)) |
| 78 | return {}; |
| 79 | return table; |
| 80 | } |
| 81 | |
| 82 | bool CentersTable::Init(Reader & reader, serial::GeometryCodingParams const & codingParams, m2::RectD const & limitRect) |
| 83 | { |
nothing calls this directly
no test coverage detected