@@ -180,67 +180,64 @@ uint8_t ReadByte(TSource & src)
180
180
}
181
181
} // namespace
182
182
183
- // static
184
- FeatureType FeatureType::ConstructFromMapObject (osm::MapObject const & emo)
183
+ FeatureType::FeatureType (SharedLoadInfo const * loadInfo, Buffer buffer)
184
+ {
185
+ CHECK (loadInfo, ());
186
+ m_loadInfo = loadInfo;
187
+ m_data = buffer;
188
+ m_header = Header (m_data);
189
+
190
+ m_offsets.Reset ();
191
+ m_ptsSimpMask = 0 ;
192
+ m_limitRect = m2::RectD::GetEmptyRect ();
193
+ m_parsed.Reset ();
194
+ m_innerStats.MakeZero ();
195
+ }
196
+
197
+ FeatureType::FeatureType (osm::MapObject const & emo)
185
198
{
186
- FeatureType ft;
187
199
uint8_t const geomType = emo.GetGeomType ();
188
- ft. m_limitRect .MakeEmpty ();
200
+ m_limitRect.MakeEmpty ();
189
201
190
202
switch (geomType)
191
203
{
192
204
case feature::GEOM_POINT:
193
- ft. m_center = emo.GetMercator ();
194
- ft. m_limitRect .Add (ft. m_center );
205
+ m_center = emo.GetMercator ();
206
+ m_limitRect.Add (m_center);
195
207
break ;
196
208
case feature::GEOM_LINE:
197
- ft. m_points = Points (emo.GetPoints ().begin (), emo.GetPoints ().end ());
198
- for (auto const & p : ft. m_points )
199
- ft. m_limitRect .Add (p);
209
+ m_points = Points (emo.GetPoints ().begin (), emo.GetPoints ().end ());
210
+ for (auto const & p : m_points)
211
+ m_limitRect.Add (p);
200
212
break ;
201
213
case feature::GEOM_AREA:
202
- ft. m_triangles = Points (emo.GetTriangesAsPoints ().begin (), emo.GetTriangesAsPoints ().end ());
203
- for (auto const & p : ft. m_triangles )
204
- ft. m_limitRect .Add (p);
214
+ m_triangles = Points (emo.GetTriangesAsPoints ().begin (), emo.GetTriangesAsPoints ().end ());
215
+ for (auto const & p : m_triangles)
216
+ m_limitRect.Add (p);
205
217
break ;
206
218
}
207
219
208
- ft. m_parsed .m_points = ft. m_parsed .m_triangles = true ;
220
+ m_parsed.m_points = m_parsed.m_triangles = true ;
209
221
210
- ft. m_params .name = emo.GetNameMultilang ();
222
+ m_params.name = emo.GetNameMultilang ();
211
223
string const & house = emo.GetHouseNumber ();
212
224
if (house.empty ())
213
- ft. m_params .house .Clear ();
225
+ m_params.house .Clear ();
214
226
else
215
- ft. m_params .house .Set (house);
216
- ft. m_parsed .m_common = true ;
227
+ m_params.house .Set (house);
228
+ m_parsed.m_common = true ;
217
229
218
- ft. m_metadata = emo.GetMetadata ();
219
- ft. m_parsed .m_metadata = true ;
230
+ m_metadata = emo.GetMetadata ();
231
+ m_parsed.m_metadata = true ;
220
232
221
233
CHECK_LESS_OR_EQUAL (emo.GetTypes ().Size (), feature::kMaxTypesCount , ());
222
- copy (emo.GetTypes ().begin (), emo.GetTypes ().end (), ft. m_types .begin ());
234
+ copy (emo.GetTypes ().begin (), emo.GetTypes ().end (), m_types.begin ());
223
235
224
- ft.m_parsed .m_types = true ;
225
- ft.m_header = CalculateHeader (emo.GetTypes ().Size (), geomType, ft.m_params );
226
- ft.m_parsed .m_header2 = true ;
227
-
228
- ft.m_id = emo.GetID ();
229
- return ft;
230
- }
231
-
232
- void FeatureType::Deserialize (SharedLoadInfo const * loadInfo, Buffer buffer)
233
- {
234
- CHECK (loadInfo, ());
235
- m_loadInfo = loadInfo;
236
- m_data = buffer;
237
- m_header = Header (m_data);
236
+ m_parsed.m_types = true ;
237
+ m_header = CalculateHeader (emo.GetTypes ().Size (), geomType, m_params);
238
+ m_parsed.m_header2 = true ;
238
239
239
- m_offsets.Reset ();
240
- m_ptsSimpMask = 0 ;
241
- m_limitRect = m2::RectD::GetEmptyRect ();
242
- m_parsed.Reset ();
243
- m_innerStats.MakeZero ();
240
+ m_id = emo.GetID ();
244
241
}
245
242
246
243
feature::EGeomType FeatureType::GetFeatureType () const
@@ -322,15 +319,6 @@ int8_t FeatureType::GetLayer()
322
319
return m_params.layer ;
323
320
}
324
321
325
- void FeatureType::ParseEverything ()
326
- {
327
- // Also calls ParseCommon() and ParseTypes().
328
- ParseHeader2 ();
329
- ParseGeometry (FeatureType::BEST_GEOMETRY);
330
- ParseTriangles (FeatureType::BEST_GEOMETRY);
331
- ParseMetadata ();
332
- }
333
-
334
322
void FeatureType::ParseHeader2 ()
335
323
{
336
324
if (m_parsed.m_header2 )
0 commit comments