1 #ifndef OSMSCOUT_STYLECONFIG_H 2 #define OSMSCOUT_STYLECONFIG_H 26 #include <unordered_map> 62 std::map<std::string,size_t> featureReaderMap;
63 std::vector<DynamicFeatureReader> featureReaders;
69 size_t GetFeatureReaderIndex(
const Feature& feature);
72 const FeatureValueBuffer& buffer)
const 74 return featureReaders[featureIndex].IsSet(buffer);
79 return featureReaders[featureIndex].GetFeatureName();
83 const FeatureValueBuffer& buffer)
const 85 return featureReaders[featureIndex].GetValue(buffer);
88 bool IsOneway(
const FeatureValueBuffer& buffer)
const;
129 Magnification magnification;
136 return magnification;
209 void SetMinMM(
double minMM);
210 void SetMinPx(
double minPx);
212 void SetMaxMM(
double maxMM);
213 void SetMaxPx(
double maxPx);
215 bool Evaluate(
double meterInPixel,
double meterInMM)
const;
248 std::list<FeatureFilterData> features;
269 return filtersByType;
274 return !features.empty();
279 return types.IsSet(type);
304 return maxLevel!=std::numeric_limits<size_t>::max();
309 return sizeCondition;
323 std::list<FeatureFilterData> features;
338 return !features.empty() ||
349 const FeatureValueBuffer& buffer,
351 double meterInMM)
const;
358 virtual void SetBoolValue(
int attribute,
bool value) = 0;
359 virtual void SetStringValue(
int attribute,
const std::string& value) = 0;
360 virtual void SetColorValue(
int attribute,
const Color& value) = 0;
365 virtual void SetIntValue(
int attribute,
int value) = 0;
366 virtual void SetUIntValue(
int attribute,
size_t value) = 0;
375 template<
class S,
class A>
379 std::shared_ptr<S>
style=std::make_shared<S>();
385 style->SetBoolValue(attribute,value);
391 style->SetStringValue(attribute,value);
397 style->SetColorValue(attribute,value);
403 style->SetMagnificationValue(attribute,value);
409 style->SetDoubleValue(attribute,value);
415 style->SetDoubleArrayValue(attribute,value);
421 style->SetSymbolValue(attribute,value);
427 style->SetIntValue(attribute,value);
433 style->SetUIntValue(attribute,value);
439 style->SetLabelValue(attribute,value);
450 template<
class S,
class A>
472 template<
class S,
class A>
561 FeatureValueBuffer tileLandBuffer;
562 FeatureValueBuffer tileSeaBuffer;
563 FeatureValueBuffer tileCoastBuffer;
564 FeatureValueBuffer tileUnknownBuffer;
565 FeatureValueBuffer coastlineBuffer;
566 FeatureValueBuffer osmTileBorderBuffer;
567 FeatureValueBuffer osmSubTileBorderBuffer;
569 std::unordered_map<std::string,LabelProviderFactoryRef> labelFactories;
572 std::unordered_map<std::string,SymbolRef> symbols;
577 std::list<TextConditionalStyle> nodeTextStyleConditionals;
578 std::list<IconConditionalStyle> nodeIconStyleConditionals;
580 std::vector<TextStyleLookupTable> nodeTextStyleSelectors;
588 std::vector<size_t> wayPrio;
590 std::list<LineConditionalStyle> wayLineStyleConditionals;
591 std::list<PathTextConditionalStyle> wayPathTextStyleConditionals;
592 std::list<PathSymbolConditionalStyle> wayPathSymbolStyleConditionals;
593 std::list<PathShieldConditionalStyle> wayPathShieldStyleConditionals;
595 std::vector<LineStyleLookupTable> wayLineStyleSelectors;
597 std::vector<PathSymbolStyleLookupTable> wayPathSymbolStyleSelectors;
600 std::vector<bool> wayTextFlags;
601 std::vector<bool> wayShieldFlags;
609 std::list<FillConditionalStyle> areaFillStyleConditionals;
610 std::list<BorderConditionalStyle> areaBorderStyleConditionals;
611 std::list<TextConditionalStyle> areaTextStyleConditionals;
612 std::list<IconConditionalStyle> areaIconStyleConditionals;
613 std::list<PathTextConditionalStyle> areaBorderTextStyleConditionals;
614 std::list<PathSymbolConditionalStyle> areaBorderSymbolStyleConditionals;
617 std::vector<LineStyleLookupTable> routeLineStyleSelectors;
618 std::list<LineConditionalStyle> routeLineStyleConditionals;
619 std::list<PathTextConditionalStyle> routePathTextStyleConditionals;
623 std::vector<BorderStyleLookupTable> areaBorderStyleSelectors;
624 std::vector<TextStyleLookupTable> areaTextStyleSelectors;
638 std::unordered_map<std::string,bool> flags;
639 std::unordered_map<std::string,StyleConstantRef> constants;
640 std::list<std::string> errors;
641 std::list<std::string> warnings;
646 void PostprocessNodes();
647 void PostprocessWays();
648 void PostprocessAreas();
649 void PostprocessRoutes();
650 void PostprocessIconId();
651 void PostprocessPatternId();
661 bool RegisterLabelProviderFactory(
const std::string& name,
667 bool HasFlag(
const std::string& name)
const;
668 bool GetFlagByName(
const std::string& name)
const;
669 void AddFlag(
const std::string& name,
672 std::unordered_map<std::string,bool>
GetFlags()
const 678 void AddConstant(
const std::string& name,
681 bool RegisterSymbol(
const SymbolRef& symbol);
682 const SymbolRef& GetSymbol(
const std::string& name)
const;
688 size_t GetFeatureFilterIndex(
const Feature& feature)
const;
700 void AddWayPathTextStyle(
const StyleFilter& filter,
702 void AddWayPathSymbolStyle(
const StyleFilter& filter,
704 void AddWayPathShieldStyle(
const StyleFilter& filter,
715 void AddAreaBorderTextStyle(
const StyleFilter& filter,
717 void AddAreaBorderSymbolStyle(
const StyleFilter& filter,
722 void AddRoutePathTextStyle(
const StyleFilter& filter,
725 void GetNodeTypesWithMaxMag(
const Magnification& maxMag,
726 TypeInfoSet& types)
const;
727 void GetWayTypesWithMaxMag(
const Magnification& mag,
728 TypeInfoSet& types)
const;
729 void GetAreaTypesWithMaxMag(
const Magnification& maxMag,
730 TypeInfoSet& types)
const;
731 void GetRouteTypesWithMaxMag(
const Magnification& maxMag,
732 TypeInfoSet& types)
const;
737 if (type->GetIndex()<wayPrio.size()) {
738 return wayPrio[type->GetIndex()];
741 return std::numeric_limits<size_t>::max();
750 const Magnification& magnification)
const;
751 void GetNodeTextStyles(
const FeatureValueBuffer& buffer,
753 std::vector<TextStyleRef>& textStyles)
const;
755 IconStyleRef GetNodeIconStyle(
const FeatureValueBuffer& buffer,
758 void GetWayLineStyles(
const FeatureValueBuffer& buffer,
760 std::vector<LineStyleRef>& lineStyles)
const;
761 void GetWayPathSymbolStyle(
const FeatureValueBuffer& buffer,
763 std::vector<PathSymbolStyleRef> &symbolStyles)
const;
771 bool HasWayPathTextStyle(
const Projection& projection)
const;
780 bool HasWayPathShieldStyle(
const Projection& projection)
const;
785 void GetRouteLineStyles(
const FeatureValueBuffer& buffer,
787 std::vector<LineStyleRef>& lineStyles)
const;
790 const FeatureValueBuffer& buffer,
793 const FeatureValueBuffer& buffer,
795 std::vector<BorderStyleRef>& borderStyles)
const;
797 const Magnification& magnification)
const;
799 const FeatureValueBuffer& buffer,
801 std::vector<TextStyleRef>& textStyles)
const;
803 const FeatureValueBuffer& buffer,
806 const FeatureValueBuffer& buffer,
809 const FeatureValueBuffer& buffer,
825 void GetNodeTextStyleSelectors(
size_t level,
827 std::list<TextStyleSelector>& selectors)
const;
828 void GetAreaFillStyleSelectors(
size_t level,
830 std::list<FillStyleSelector>& selectors)
const;
831 void GetAreaTextStyleSelectors(
size_t level,
833 std::list<TextStyleSelector>& selectors)
const;
840 bool LoadContent(
const std::string& content,
842 bool Load(
const std::string& styleFile,
844 const std::list<std::string>& GetErrors();
845 const std::list<std::string>& GetWarnings();
std::shared_ptr< S > style
Definition: StyleConfig.h:477
std::list< BorderStyleSelector > BorderStyleSelectorList
Definition: StyleConfig.h:504
size_t GetWayPrio(const TypeInfoRef &type) const
Definition: StyleConfig.h:735
void SetDoubleArrayValue(int attribute, const std::vector< double > &value) override
Definition: StyleConfig.h:413
void SetBoolValue(int attribute, bool value) override
Definition: StyleConfig.h:383
std::vector< std::vector< BorderStyleSelectorList > > BorderStyleLookupTable
List of selectors.
Definition: StyleConfig.h:505
std::vector< std::vector< ShieldStyleSelectorList > > ShieldStyleLookupTable
List of selectors.
Definition: StyleConfig.h:517
void SetStringValue(int attribute, const std::string &value) override
Definition: StyleConfig.h:389
size_t featureFilterIndex
Definition: StyleConfig.h:222
std::set< A > attributes
Definition: StyleConfig.h:476
std::vector< std::vector< LineStyleSelectorList > > LineStyleLookupTable
List of selectors.
Definition: StyleConfig.h:493
std::shared_ptr< FillStyle > FillStyleRef
Definition: Styles.h:349
void SetLabelValue(int attribute, const LabelProviderRef &value) override
Definition: StyleConfig.h:437
osmscout::Color(*)(const osmscout::Color &) ColorPostprocessor
Definition: StyleConfig.h:52
std::shared_ptr< PathSymbolStyle > PathSymbolStyleRef
Definition: Styles.h:1307
Index selectors by type and level.
Definition: StyleConfig.h:553
PartialStyle< S, A > style
Definition: StyleConfig.h:454
std::list< ShieldStyleSelector > ShieldStyleSelectorList
Definition: StyleConfig.h:516
virtual void SetSymbolValue(int attribute, const SymbolRef &value)=0
std::shared_ptr< LineStyle > LineStyleRef
Definition: Styles.h:273
std::vector< TypeInfoSet > routeTypeSets
Definition: StyleConfig.h:635
void SetUIntValue(int attribute, size_t value) override
Definition: StyleConfig.h:431
size_t flagIndex
Definition: StyleConfig.h:223
Unit GetUnit() const
Definition: StyleConfig.h:182
Definition: StyleConfig.h:108
bool operator==(const FeatureFilterData &other) const
Definition: StyleConfig.h:228
virtual void SetColorValue(int attribute, const Color &value)=0
std::list< LineStyleSelector > LineStyleSelectorList
Definition: StyleConfig.h:492
Definition: StyleConfig.h:376
virtual void SetStringValue(int attribute, const std::string &value)=0
std::unordered_map< std::string, bool > GetFlags() const
Definition: StyleConfig.h:672
void SetDoubleValue(int attribute, double value) override
Definition: StyleConfig.h:407
Definition: StyleConfig.h:162
Definition: StyleConfig.h:473
Definition: StyleConfig.h:95
bool FiltersByFeature() const
Definition: StyleConfig.h:272
Definition: StyleConfig.h:144
std::vector< std::vector< IconStyleSelectorList > > IconStyleLookupTable
List of selectors.
Definition: StyleConfig.h:535
Definition: StyleConfig.h:58
bool operator!=(const MapViewStruct &r1, const MapViewStruct &r2)
Definition: DBThread.h:61
bool GetOneway() const
Definition: StyleConfig.h:297
std::list< PathShieldStyleSelector > PathShieldStyleSelectorList
Definition: StyleConfig.h:522
Definition: StyleConfig.h:354
bool HasMaxLevel() const
Definition: StyleConfig.h:302
std::shared_ptr< LabelProvider > LabelProviderRef
Definition: LabelProvider.h:61
Color GetColor() const
Definition: StyleConfig.h:116
std::vector< std::vector< PathShieldStyleSelectorList > > PathShieldStyleLookupTable
List of selectors.
Definition: StyleConfig.h:523
virtual void SetBoolValue(int attribute, bool value)=0
std::list< IconStyleSelector > IconStyleSelectorList
Definition: StyleConfig.h:534
std::list< PathSymbolStyleSelector > PathSymbolStyleSelectorList
Definition: StyleConfig.h:540
size_t GetUInt() const
Definition: StyleConfig.h:152
Definition: Projection.h:43
void SetSymbolValue(int attribute, const SymbolRef &value) override
Definition: StyleConfig.h:419
std::shared_ptr< PathTextStyle > PathTextStyleRef
Definition: Styles.h:877
virtual void SetDoubleValue(int attribute, double value)=0
Definition: TypeFeature.h:98
StyleCriteria criteria
Definition: StyleConfig.h:475
void SetIntValue(int attribute, int value) override
Definition: StyleConfig.h:425
std::shared_ptr< SizeCondition > SizeConditionRef
Definition: StyleConfig.h:218
virtual void SetLabelValue(int attribute, const LabelProviderRef &value)=0
StyleFilter filter
Definition: StyleConfig.h:453
std::vector< TypeInfoSet > areaTypeSets
Definition: StyleConfig.h:630
Definition: TypeFeature.h:40
Unit
Definition: StyleConfig.h:165
TypeConfigRef typeConfig
Reference to the type configuration.
Definition: StyleConfig.h:556
double GetWidth() const
Definition: StyleConfig.h:177
#define CLASS_FINAL
Definition: Compiler.h:26
std::shared_ptr< PathShieldStyle > PathShieldStyleRef
Definition: Styles.h:791
std::shared_ptr< StyleConstant > StyleConstantRef
Definition: StyleConfig.h:102
std::shared_ptr< LabelProviderFactory > LabelProviderFactoryRef
Definition: LabelProvider.h:75
StyleSelector(const StyleFilter &filter, const PartialStyle< S, A > &style)
Definition: StyleConfig.h:479
bool FiltersByType() const
Definition: StyleConfig.h:267
#define OSMSCOUT_MAP_API
Definition: MapImportExport.h:45
std::vector< TypeInfoSet > nodeTypeSets
Definition: StyleConfig.h:584
bool HasType(const TypeInfoRef &type) const
Definition: StyleConfig.h:277
std::shared_ptr< StyleConfig > StyleConfigRef
Definition: StyleConfig.h:849
virtual void SetUIntValue(int attribute, size_t value)=0
size_t GetMinLevel() const
Definition: StyleConfig.h:282
const std::list< FeatureFilterData > & GetFeatures() const
Definition: StyleConfig.h:292
Definition: StyleConfig.h:126
bool operator==(const MapView &a, const MapView &b)
Definition: InputHandler.h:222
Definition: StyleConfig.h:241
bool HasCriteria() const
Definition: StyleConfig.h:336
bool HasFeature(size_t featureIndex, const FeatureValueBuffer &buffer) const
Definition: StyleConfig.h:71
std::vector< std::vector< TextStyleSelectorList > > TextStyleLookupTable
List of selectors.
Definition: StyleConfig.h:511
virtual void SetMagnificationValue(int attribute, const Magnification &value)=0
std::shared_ptr< Symbol > SymbolRef
Definition: StyleDescription.h:37
std::vector< std::vector< FillStyleSelectorList > > FillStyleLookupTable
List of selectors.
Definition: StyleConfig.h:499
bool GetOneway() const
Definition: StyleConfig.h:343
std::list< FillStyleSelector > FillStyleSelectorList
Definition: StyleConfig.h:498
virtual void SetIntValue(int attribute, int value)=0
const SizeConditionRef & GetSizeCondition() const
Definition: StyleConfig.h:307
Definition: StyleConfig.h:220
std::shared_ptr< TypeInfo > TypeInfoRef
Definition: TypeConfig.h:58
std::list< TextStyleSelector > TextStyleSelectorList
Definition: StyleConfig.h:510
std::vector< TypeInfoSet > wayTypeSets
way types with defined style by magnification level
Definition: StyleConfig.h:604
virtual void SetDoubleArrayValue(int attribute, const std::vector< double > &value)=0
std::string GetFeatureName(size_t featureIndex) const
Definition: StyleConfig.h:77
std::vector< std::vector< PathTextStyleSelectorList > > PathTextStyleLookupTable
List of selectors.
Definition: StyleConfig.h:529
ConditionalStyle(const StyleFilter &filter, const PartialStyle< S, A > &style)
Definition: StyleConfig.h:456
virtual ~PartialStyleBase()=default
std::set< A > attributes
Definition: StyleConfig.h:378
FeatureValue * GetFeatureValue(size_t featureIndex, const FeatureValueBuffer &buffer) const
Definition: StyleConfig.h:82
std::shared_ptr< S > style
Definition: StyleConfig.h:379
std::shared_ptr< TypeConfig > TypeConfigRef
Definition: TypeConfig.h:1227
Definition: StyleConfig.h:451
void SetMagnificationValue(int attribute, const Magnification &value) override
Definition: StyleConfig.h:401
void SetColorValue(int attribute, const Color &value) override
Definition: StyleConfig.h:395
std::list< PathTextStyleSelector > PathTextStyleSelectorList
Definition: StyleConfig.h:528
size_t GetMaxLevel() const
Definition: StyleConfig.h:287
Magnification GetMag() const
Definition: StyleConfig.h:134
std::vector< std::vector< PathSymbolStyleSelectorList > > PathSymbolStyleLookupTable
List of selectors.
Definition: StyleConfig.h:541
std::shared_ptr< IconStyle > IconStyleRef
Definition: Styles.h:975
Definition: StyleConfig.h:320