diff options
author | vng <viktor.govako@gmail.com> | 2011-09-16 23:23:25 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:23:57 +0300 |
commit | 3e2ecdc1447f63f2f5f376370a60bd2bd7e21840 (patch) | |
tree | c2fca12a163a0cf0ff3a586afbd7fbe13d9194d2 /indexer/geometry_serialization.hpp | |
parent | 5f05cd052b531aa2a53b5f9a18f9414345709244 (diff) |
Factor out serial::SavePoint, serial::LoadPoint.
Diffstat (limited to 'indexer/geometry_serialization.hpp')
-rw-r--r-- | indexer/geometry_serialization.hpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/indexer/geometry_serialization.hpp b/indexer/geometry_serialization.hpp index 64507af9cf..3d3bc3500d 100644 --- a/indexer/geometry_serialization.hpp +++ b/indexer/geometry_serialization.hpp @@ -2,6 +2,8 @@ #include "geometry_coding.hpp" #include "tesselator_decl.hpp" +#include "point_to_int64.hpp" +#include "coding_params.hpp" #include "../geometry/point2d.hpp" @@ -18,8 +20,6 @@ namespace serial { - class CodingParams; - template <class TCont, class TSink> inline void WriteVarUintArray(TCont const & v, TSink & sink) { @@ -52,6 +52,20 @@ namespace serial //@} template <class TSink> + void SavePoint(TSink & sink, m2::PointD const & pt, CodingParams const & cp) + { + WriteVarUint(sink, EncodeDelta(PointD2PointU(pt.x, pt.y, cp.GetCoordBits()), cp.GetBasePoint())); + } + + template <class TSource> + m2::PointD LoadPoint(TSource & src, CodingParams const & cp) + { + CoordPointT const c = PointU2PointD( + DecodeDelta(ReadVarUint<uint64_t>(src), cp.GetBasePoint()), cp.GetCoordBits()); + return m2::PointD(c.first, c.second); + } + + template <class TSink> void SaveInner(EncodeFunT fn, vector<m2::PointD> const & points, CodingParams const & params, TSink & sink) { |