1 #ifndef OSMSCOUT_AREA_H 2 #define OSMSCOUT_AREA_H 96 FeatureValueBuffer featureValueBuffer;
115 return featureValueBuffer.GetType();
120 return featureValueBuffer.GetType()->GetFeatureCount();
125 return featureValueBuffer.HasFeature(idx);
128 bool HasAnyFeaturesSet()
const;
132 return featureValueBuffer.GetType()->GetFeature(idx);
137 featureValueBuffer.FreeValue(idx);
142 return featureValueBuffer;
147 return ring==masterRingId;
153 return ring==outerRingId;
159 return (ring & outerRingId) == outerRingId;
169 return nodes[index].GetSerial();
174 return nodes[index].GetId();
179 return nodes.front().GetId();
184 return nodes.back().GetId();
187 bool GetNodeIndexByNodeId(
Id id,
188 size_t& index)
const;
192 return nodes[index].GetCoord();
195 bool GetCenter(GeoCoord& center)
const;
202 featureValueBuffer.SetType(type);
207 featureValueBuffer.Set(buffer);
212 featureValueBuffer.CopyMissingValues(buffer);
233 using RingVisitor = std::function<bool(size_t i, const Ring&, const TypeInfoRef&)>;
252 return nextFileOffset;
262 return rings.front().GetType();
278 return rings.front().GetFeatureValueBuffer();
283 return rings.size()==1;
286 bool GetCenter(GeoCoord& center)
const;
307 void Read(
const TypeConfig& typeConfig,
308 FileScanner& scanner);
313 void ReadImport(
const TypeConfig& typeConfig,
314 FileScanner& scanner);
319 void ReadOptimized(
const TypeConfig& typeConfig,
320 FileScanner& scanner);
326 void Write(
const TypeConfig& typeConfig,
327 FileWriter& writer)
const;
334 void WriteImport(
const TypeConfig& typeConfig,
335 FileWriter& writer)
const;
341 void WriteOptimized(
const TypeConfig& typeConfig,
342 FileWriter& writer)
const;
349 void VisitRings(
const RingVisitor& visitor)
const;
355 void VisitClippingRings(
size_t index,
const RingVisitor& visitor)
const;
bool IsOuter() const
Definition: Area.h:157
FileOffset GetFileOffset() const
Definition: Area.h:245
bool Intersects(const GeoBox &boundingBox) const
Definition: Area.h:299
GeoBox bbox
Precomputed (cache) bounding box.
Definition: Area.h:108
void SetType(const TypeInfoRef &type)
Definition: Area.h:200
uint64_t Id
Definition: OSMScoutTypes.h:41
void UnsetFeature(size_t idx)
Definition: Area.h:135
const FeatureValueBuffer & GetFeatureValueBuffer() const
Definition: Area.h:276
void MarkAsMasterRing()
Definition: Area.h:215
const FeatureValueBuffer & GetFeatureValueBuffer() const
Definition: Area.h:140
uint8_t GetRing() const
Definition: Area.h:162
Id GetSerial(size_t index) const
Definition: Area.h:167
bool HasFeature(size_t idx) const
Definition: Area.h:123
ObjectFileRef GetObjectFileRef() const
Definition: Area.h:255
void MarkAsOuterRing()
Definition: Area.h:220
const FeatureInstance & GetFeature(size_t idx) const
Definition: Area.h:130
static const uint8_t outerRingId
Definition: Area.h:90
TypeInfoRef GetType() const
Definition: Area.h:113
TypeInfoRef GetType() const
Definition: Area.h:260
Definition: ObjectRef.h:135
void GetBoundingBox(const std::vector< N > &nodes, double &minLon, double &maxLon, double &minLat, double &maxLat)
Definition: Geometry.h:107
FileOffset GetNextFileOffset() const
Definition: Area.h:250
Id GetFrontId() const
Definition: Area.h:177
const GeoCoord & GetCoord(size_t index) const
Definition: Area.h:190
bool IsMaster() const
Definition: Area.h:145
TypeInfoRef GetRingType(const Ring &ring) const
Definition: Area.h:265
size_t GetFeatureCount() const
Definition: Area.h:118
static const uint8_t masterRingId
Definition: Area.h:89
std::shared_ptr< Area > AreaRef
Definition: Area.h:358
#define OSMSCOUT_API
Definition: CoreImportExport.h:45
Definition: LaneAgent.h:60
Id GetId(size_t index) const
Definition: Area.h:172
void CopyMissingValues(const FeatureValueBuffer &buffer)
Definition: Area.h:210
bool IsSimple() const
Definition: Area.h:281
std::shared_ptr< TypeInfo > TypeInfoRef
Definition: TypeConfig.h:58
std::vector< Point > nodes
The array of coordinates.
Definition: Area.h:106
uint64_t FileOffset
Definition: OSMScoutTypes.h:47
std::vector< SegmentGeoBox > segments
Precomputed (cache) segment bounding boxes for optimisation.
Definition: Area.h:107
Id GetBackId() const
Definition: Area.h:182
void SetRing(uint8_t ring)
Definition: Area.h:225
void SetFeatures(const FeatureValueBuffer &buffer)
Definition: Area.h:205
std::function< bool(size_t i, const Ring &, const TypeInfoRef &)> RingVisitor
Definition: Area.h:233
bool IsTopOuter() const
Definition: Area.h:151
std::vector< Ring > rings
Definition: Area.h:240