libosmscout 1.1.1
Loading...
Searching...
No Matches
StyleConfig.h
Go to the documentation of this file.
1#ifndef OSMSCOUT_STYLECONFIG_H
2#define OSMSCOUT_STYLECONFIG_H
3
4/*
5 This source is part of the libosmscout library
6 Copyright (C) 2009 Tim Teulings
7
8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Lesser General Public
10 License as published by the Free Software Foundation; either
11 version 2.1 of the License, or (at your option) any later version.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21*/
22
23#include <limits>
24#include <map>
25#include <memory>
26#include <unordered_map>
27#include <vector>
28
30
31#include <osmscout/Pixel.h>
32
34#include <osmscout/TypeConfig.h>
37
38#include <osmscout/Node.h>
39#include <osmscout/Area.h>
40#include <osmscout/Way.h>
41
43
44#include <osmscout/util/Color.h>
46
49#include <osmscoutmap/Styles.h>
51
52namespace osmscout {
53
54 using ColorPostprocessor = osmscout::Color (*)(const osmscout::Color &);
55
60 class OSMSCOUT_MAP_API StyleResolveContext CLASS_FINAL
61 {
62 private:
63 TypeConfigRef typeConfig;
64 std::map<std::string,size_t,std::less<>> featureReaderMap; //< Map that maps feature names to index in the feature reader vector
65 std::vector<DynamicFeatureReader> featureReaders; //< List of feature readers
66 AccessFeatureValueReader accessReader;
67
68 public:
69 explicit StyleResolveContext(const TypeConfigRef& typeConfig);
70
71 size_t GetFeatureReaderIndex(const Feature& feature);
72
73 bool HasFeature(size_t featureIndex,
74 const FeatureValueBuffer& buffer) const
75 {
76 return featureReaders[featureIndex].IsSet(buffer);
77 }
78
79 std::string GetFeatureName(size_t featureIndex) const
80 {
81 return featureReaders[featureIndex].GetFeatureName();
82 }
83
84 FeatureValue* GetFeatureValue(size_t featureIndex,
85 const FeatureValueBuffer& buffer) const
86 {
87 return featureReaders[featureIndex].GetValue(buffer);
88 }
89
91 };
92
98 {
99 public:
100 StyleConstant() = default;
101 virtual ~StyleConstant() = default;
102 };
103
104 using StyleConstantRef = std::shared_ptr<StyleConstant>;
105
110 class OSMSCOUT_MAP_API StyleConstantColor CLASS_FINAL : public StyleConstant
111 {
112 private:
113 Color color;
114
115 public:
116 explicit StyleConstantColor(const Color& color);
117
119 {
120 return color;
121 }
122 };
123
128 class OSMSCOUT_MAP_API StyleConstantMag CLASS_FINAL : public StyleConstant
129 {
130 private:
131 Magnification magnification;
132
133 public:
134 explicit StyleConstantMag(const Magnification& magnification);
135
137 {
138 return magnification;
139 }
140 };
141
146 class OSMSCOUT_MAP_API StyleConstantUInt CLASS_FINAL : public StyleConstant
147 {
148 private:
149 size_t value;
150
151 public:
152 explicit StyleConstantUInt(size_t value);
153
154 size_t GetUInt() const
155 {
156 return value;
157 }
158 };
159
164 class OSMSCOUT_MAP_API StyleConstantWidth CLASS_FINAL : public StyleConstant
165 {
166 public:
167 enum class Unit {
168 m,
169 mm
170 };
171
172 private:
173 double value;
174 Unit unit;
175
176 public:
177 explicit StyleConstantWidth(double value, Unit unit);
178
179 double GetWidth() const
180 {
181 return value;
182 }
183
184 Unit GetUnit() const
185 {
186 return unit;
187 }
188 };
189
194 class OSMSCOUT_MAP_API SizeCondition CLASS_FINAL
195 {
196 private:
197 double minMM;
198 bool minMMSet;
199
200 double minPx;
201 bool minPxSet;
202
203 double maxMM;
204 bool maxMMSet;
205
206 double maxPx;
207 bool maxPxSet;
208 public:
210
211 void SetMinMM(double minMM);
212 void SetMinPx(double minPx);
213
214 void SetMaxMM(double maxMM);
215 void SetMaxPx(double maxPx);
216
217 bool Evaluate(double meterInPixel, double meterInMM) const;
218 };
219
220 using SizeConditionRef = std::shared_ptr<SizeCondition>;
221
222 struct OSMSCOUT_MAP_API FeatureFilterData CLASS_FINAL
223 {
225 size_t flagIndex;
226
228 size_t flagIndex);
229
230 bool operator==(const FeatureFilterData& other) const
231 {
232 return featureFilterIndex==other.featureFilterIndex &&
233 flagIndex==other.flagIndex;
234 }
235 };
236
243 class OSMSCOUT_MAP_API StyleFilter CLASS_FINAL
244 {
245 private:
246 bool filtersByType;
247 TypeInfoSet types;
248 size_t minLevel;
249 size_t maxLevel;
250 std::list<FeatureFilterData> features;
251 bool oneway;
252 SizeConditionRef sizeCondition;
253
254 public:
256
258 StyleFilter& SetMinLevel(size_t level);
259 StyleFilter& SetMaxLevel(size_t level);
260
262 size_t flagIndex);
263
264 StyleFilter& SetOneway(bool oneway);
265
267
268 bool FiltersByType() const
269 {
270 return filtersByType;
271 }
272
273 bool FiltersByFeature() const
274 {
275 return !features.empty();
276 }
277
278 bool HasType(const TypeInfoRef& type) const
279 {
280 return types.IsSet(type);
281 }
282
283 size_t GetMinLevel() const
284 {
285 return minLevel;
286 }
287
288 size_t GetMaxLevel() const
289 {
290 return maxLevel;
291 }
292
293 const std::list<FeatureFilterData>& GetFeatures() const
294 {
295 return features;
296 }
297
298 bool GetOneway() const
299 {
300 return oneway;
301 }
302
303 bool HasMaxLevel() const
304 {
305 return maxLevel!=std::numeric_limits<size_t>::max();
306 }
307
309 {
310 return sizeCondition;
311 }
312 };
313
321 class OSMSCOUT_MAP_API StyleCriteria CLASS_FINAL
322 {
323 private:
324 std::list<FeatureFilterData> features;
325 bool oneway=false;
326 SizeConditionRef sizeCondition;
327
328 public:
329 explicit StyleCriteria(const StyleFilter& other);
330
331 bool operator==(const StyleCriteria& other) const;
332 bool operator!=(const StyleCriteria& other) const;
333
334 bool HasCriteria() const
335 {
336 return !features.empty() ||
337 oneway ||
338 sizeCondition;
339 }
340
341 bool GetOneway() const
342 {
343 return oneway;
344 }
345
346 bool Matches(const StyleResolveContext& context,
348 double meterInPixel,
349 double meterInMM) const;
350 };
351
353 {
354 virtual ~PartialStyleBase() = default;
355
356 virtual void SetBoolValue(int attribute, bool value) = 0;
357 virtual void SetStringValue(int attribute, const std::string& value) = 0;
358 virtual void SetColorValue(int attribute, const Color& value) = 0;
359 virtual void SetMagnificationValue(int attribute, const Magnification& value) = 0;
360 virtual void SetDoubleValue(int attribute, double value) = 0;
361 virtual void SetDoubleArrayValue(int attribute, const std::vector<double>& value) = 0;
362 virtual void SetSymbolValue(int attribute, const SymbolRef& value) = 0;
363 virtual void SetIntValue(int attribute, int value) = 0;
364 virtual void SetUIntValue(int attribute, size_t value) = 0;
365 virtual void SetLabelValue(int attribute, const LabelProviderRef& value) = 0;
366 };
367
373 template<class S, class A>
375 {
376 std::set<A> attributes;
377 std::shared_ptr<S> style=std::make_shared<S>();
378
379 PartialStyle() = default;
380
381 void SetBoolValue(int attribute, bool value) override
382 {
383 style->SetBoolValue(attribute,value);
384 attributes.insert((A)attribute);
385 }
386
387 void SetStringValue(int attribute, const std::string& value) override
388 {
389 style->SetStringValue(attribute,value);
390 attributes.insert((A)attribute);
391 }
392
393 void SetColorValue(int attribute, const Color& value) override
394 {
395 style->SetColorValue(attribute,value);
396 attributes.insert((A)attribute);
397 }
398
399 void SetMagnificationValue(int attribute, const Magnification& value) override
400 {
401 style->SetMagnificationValue(attribute,value);
402 attributes.insert((A)attribute);
403 }
404
405 void SetDoubleValue(int attribute, double value) override
406 {
407 style->SetDoubleValue(attribute,value);
408 attributes.insert((A)attribute);
409 }
410
411 void SetDoubleArrayValue(int attribute, const std::vector<double>& value) override
412 {
413 style->SetDoubleArrayValue(attribute,value);
414 attributes.insert((A)attribute);
415 }
416
417 void SetSymbolValue(int attribute, const SymbolRef& value) override
418 {
419 style->SetSymbolValue(attribute,value);
420 attributes.insert((A)attribute);
421 }
422
423 void SetIntValue(int attribute, int value) override
424 {
425 style->SetIntValue(attribute,value);
426 attributes.insert((A)attribute);
427 }
428
429 void SetUIntValue(int attribute, size_t value) override
430 {
431 style->SetUIntValue(attribute,value);
432 attributes.insert((A)attribute);
433 }
434
435 void SetLabelValue(int attribute, const LabelProviderRef& value) override
436 {
437 style->SetLabelValue(attribute,value);
438 attributes.insert((A)attribute);
439 }
440 };
441
448 template<class S, class A>
450 {
451 StyleFilter filter;
453
454 ConditionalStyle(const StyleFilter& filter,
456 : filter(filter),
457 style(style)
458 {
459 // no code
460 }
461 };
462
470 template<class S, class A>
472 {
473 StyleCriteria criteria;
474 std::set<A> attributes;
475 std::shared_ptr<S> style;
476
477 StyleSelector(const StyleFilter& filter,
479 : criteria(filter),
482 {
483 // no code
484 }
485 };
486
490 using LineStyleSelectorList = std::list<LineStyleSelector>;
491 using LineStyleLookupTable = std::vector<std::vector<LineStyleSelectorList> >;
492
496 using FillStyleSelectorList = std::list<FillStyleSelector>;
497 using FillStyleLookupTable = std::vector<std::vector<FillStyleSelectorList> >;
498
502 using BorderStyleSelectorList = std::list<BorderStyleSelector>;
503 using BorderStyleLookupTable = std::vector<std::vector<BorderStyleSelectorList> >;
504
508 using TextStyleSelectorList = std::list<TextStyleSelector>;
509 using TextStyleLookupTable = std::vector<std::vector<TextStyleSelectorList> >;
510
514 using ShieldStyleSelectorList = std::list<ShieldStyleSelector>;
515 using ShieldStyleLookupTable = std::vector<std::vector<ShieldStyleSelectorList> >;
516
520 using PathShieldStyleSelectorList = std::list<PathShieldStyleSelector>;
521 using PathShieldStyleLookupTable = std::vector<std::vector<PathShieldStyleSelectorList> >;
522
526 using PathTextStyleSelectorList = std::list<PathTextStyleSelector>;
527 using PathTextStyleLookupTable = std::vector<std::vector<PathTextStyleSelectorList> >;
528
532 using IconStyleSelectorList = std::list<IconStyleSelector>;
533 using IconStyleLookupTable = std::vector<std::vector<IconStyleSelectorList> >;
534
538 using PathSymbolStyleSelectorList = std::list<PathSymbolStyleSelector>;
539 using PathSymbolStyleLookupTable = std::vector<std::vector<PathSymbolStyleSelectorList> >;
540
552 {
553 public:
555
556 private:
557 mutable StyleResolveContext styleResolveContext;
558
559 FeatureValueBuffer tileLandBuffer;
560 FeatureValueBuffer tileSeaBuffer;
561 FeatureValueBuffer tileCoastBuffer;
562 FeatureValueBuffer tileUnknownBuffer;
563 FeatureValueBuffer coastlineBuffer;
564 FeatureValueBuffer osmTileBorderBuffer;
565 FeatureValueBuffer osmSubTileBorderBuffer;
566
567 std::unordered_map<std::string,LabelProviderFactoryRef> labelFactories;
568
569 // Symbol
570 std::unordered_map<std::string,SymbolRef> symbols;
571 SymbolRef emptySymbol;
572
573 // Node
574 private:
575 std::list<TextConditionalStyle> nodeTextStyleConditionals;
576 std::list<IconConditionalStyle> nodeIconStyleConditionals;
577
578 std::vector<TextStyleLookupTable> nodeTextStyleSelectors;
579 IconStyleLookupTable nodeIconStyleSelectors;
580
581 public:
582 std::vector<TypeInfoSet> nodeTypeSets;
583
584 // Way
585 private:
586 std::vector<size_t> wayPrio;
587
588 std::list<LineConditionalStyle> wayLineStyleConditionals;
589 std::list<PathTextConditionalStyle> wayPathTextStyleConditionals;
590 std::list<PathSymbolConditionalStyle> wayPathSymbolStyleConditionals;
591 std::list<PathShieldConditionalStyle> wayPathShieldStyleConditionals;
592
593 std::vector<LineStyleLookupTable> wayLineStyleSelectors;
594 PathTextStyleLookupTable wayPathTextStyleSelectors;
595 std::vector<PathSymbolStyleLookupTable> wayPathSymbolStyleSelectors;
596 PathShieldStyleLookupTable wayPathShieldStyleSelectors;
597
598 std::vector<bool> wayTextFlags;
599 std::vector<bool> wayShieldFlags;
600
601 public:
602 std::vector<TypeInfoSet> wayTypeSets;
603
604 // Area
605
606 private:
607 std::list<FillConditionalStyle> areaFillStyleConditionals;
608 std::list<BorderConditionalStyle> areaBorderStyleConditionals;
609 std::list<TextConditionalStyle> areaTextStyleConditionals;
610 std::list<IconConditionalStyle> areaIconStyleConditionals;
611 std::list<PathTextConditionalStyle> areaBorderTextStyleConditionals;
612 std::list<PathSymbolConditionalStyle> areaBorderSymbolStyleConditionals;
613
614 // Route
615 std::vector<LineStyleLookupTable> routeLineStyleSelectors;
616 std::list<LineConditionalStyle> routeLineStyleConditionals;
617 std::list<PathTextConditionalStyle> routePathTextStyleConditionals;
618 PathTextStyleLookupTable routePathTextStyleSelectors;
619
620 FillStyleLookupTable areaFillStyleSelectors;
621 std::vector<BorderStyleLookupTable> areaBorderStyleSelectors;
622 std::vector<TextStyleLookupTable> areaTextStyleSelectors;
623 IconStyleLookupTable areaIconStyleSelectors;
624 PathTextStyleLookupTable areaBorderTextStyleSelectors;
625 PathSymbolStyleLookupTable areaBorderSymbolStyleSelectors;
626
627 public:
628 std::vector<TypeInfoSet> areaTypeSets;
629
630 // Route
631
632 public:
633 std::vector<TypeInfoSet> routeTypeSets;
634
635 private:
636 std::unordered_map<std::string,bool> flags;
637 std::unordered_map<std::string,StyleConstantRef> constants;
638 std::list<StyleError> errors;
639 std::list<StyleError> warnings;
640
641 private:
642 void Reset();
643
644 void PostprocessNodes();
645 void PostprocessWays();
646 void PostprocessAreas();
647 void PostprocessRoutes();
648 void PostprocessIconId();
649 void PostprocessPatternId();
650
651 public:
653 virtual ~StyleConfig();
654
659 bool RegisterLabelProviderFactory(const std::string& name,
660 const LabelProviderFactoryRef& factory);
661
662 LabelProviderRef GetLabelProvider(const std::string& name) const;
664
665 bool HasFlag(const std::string& name) const;
666 bool GetFlagByName(const std::string& name) const;
667 void AddFlag(const std::string& name,
668 bool value);
669
670 std::unordered_map<std::string,bool> GetFlags() const
671 {
672 return flags;
673 }
674
675 StyleConstantRef GetConstantByName(const std::string& name) const;
676 void AddConstant(const std::string& name,
677 const StyleConstantRef& variable);
678
679 bool RegisterSymbol(const SymbolRef& symbol);
680 const SymbolRef& GetSymbol(const std::string& name) const;
681
683
685
686 size_t GetFeatureFilterIndex(const Feature& feature) const;
687
689 size_t prio);
690
691 void AddNodeTextStyle(const StyleFilter& filter,
692 TextPartialStyle& stype);
693 void AddNodeIconStyle(const StyleFilter& filter,
694 IconPartialStyle& style);
695
696 void AddWayLineStyle(const StyleFilter& filter,
697 LinePartialStyle& style);
698 void AddWayPathTextStyle(const StyleFilter& filter,
699 PathTextPartialStyle& style);
700 void AddWayPathSymbolStyle(const StyleFilter& filter,
702 void AddWayPathShieldStyle(const StyleFilter& filter,
704
705 void AddAreaFillStyle(const StyleFilter& filter,
706 FillPartialStyle& style);
707 void AddAreaBorderStyle(const StyleFilter& filter,
708 BorderPartialStyle& style);
709 void AddAreaTextStyle(const StyleFilter& filter,
710 TextPartialStyle& style);
711 void AddAreaIconStyle(const StyleFilter& filter,
712 IconPartialStyle& style);
713 void AddAreaBorderTextStyle(const StyleFilter& filter,
714 PathTextPartialStyle& style);
715 void AddAreaBorderSymbolStyle(const StyleFilter& filter,
717
718 void AddRouteLineStyle(const StyleFilter& filter,
719 LinePartialStyle& style);
720 void AddRoutePathTextStyle(const StyleFilter& filter,
721 PathTextPartialStyle& style);
722
723 void GetNodeTypesWithMaxMag(const Magnification& maxMag,
724 TypeInfoSet& types) const;
725 void GetWayTypesWithMaxMag(const Magnification& mag,
726 TypeInfoSet& types) const;
727 void GetAreaTypesWithMaxMag(const Magnification& maxMag,
728 TypeInfoSet& types) const;
729 void GetRouteTypesWithMaxMag(const Magnification& maxMag,
730 TypeInfoSet& types) const;
731
732
733 size_t GetWayPrio(const TypeInfoRef& type) const
734 {
735 if (type->GetIndex()<wayPrio.size()) {
736 return wayPrio[type->GetIndex()];
737 }
738
739 return std::numeric_limits<size_t>::max();
740 }
741
742
748 const Magnification& magnification) const;
749 void GetNodeTextStyles(const FeatureValueBuffer& buffer,
750 const Projection& projection,
751 std::vector<TextStyleRef>& textStyles) const;
752 size_t GetNodeTextStyleCount(const FeatureValueBuffer& buffer,
753 const Projection& projection) const;
754
755 IconStyleRef GetNodeIconStyle(const FeatureValueBuffer& buffer,
756 const Projection& projection) const;
757
758 void GetWayLineStyles(const FeatureValueBuffer& buffer,
759 const Projection& projection,
760 std::vector<LineStyleRef>& lineStyles) const;
761 void GetWayPathSymbolStyle(const FeatureValueBuffer& buffer,
762 const Projection& projection,
763 std::vector<PathSymbolStyleRef> &symbolStyles) const;
764 PathTextStyleRef GetWayPathTextStyle(const FeatureValueBuffer& buffer,
765 const Projection& projection) const;
766
771 bool HasWayPathTextStyle(const Projection& projection) const;
772
773 PathShieldStyleRef GetWayPathShieldStyle(const FeatureValueBuffer& buffer,
774 const Projection& projection) const;
775
780 bool HasWayPathShieldStyle(const Projection& projection) const;
781
782 PathTextStyleRef GetRoutePathTextStyle(const FeatureValueBuffer& buffer,
783 const Projection& projection) const;
784
785 void GetRouteLineStyles(const FeatureValueBuffer& buffer,
786 const Projection& projection,
787 std::vector<LineStyleRef>& lineStyles) const;
788
790 const FeatureValueBuffer& buffer,
791 const Projection& projection) const;
793 const FeatureValueBuffer& buffer,
794 const Projection& projection,
795 std::vector<BorderStyleRef>& borderStyles) const;
796
798 const Magnification& magnification) const;
800 const FeatureValueBuffer& buffer,
801 const Projection& projection,
802 std::vector<TextStyleRef>& textStyles) const;
804 const FeatureValueBuffer& buffer,
805 const Projection& projection) const;
806
808 const FeatureValueBuffer& buffer,
809 const Projection& projection) const;
811 const FeatureValueBuffer& buffer,
812 const Projection& projection) const;
814 const FeatureValueBuffer& buffer,
815 const Projection& projection) const;
816
817 FillStyleRef GetLandFillStyle(const Projection& projection) const;
818 FillStyleRef GetSeaFillStyle(const Projection& projection) const;
819 FillStyleRef GetCoastFillStyle(const Projection& projection) const;
825
830 void GetNodeTextStyleSelectors(size_t level,
831 const TypeInfoRef& type,
832 std::list<TextStyleSelector>& selectors) const;
833 void GetAreaFillStyleSelectors(size_t level,
834 const TypeInfoRef& type,
835 std::list<FillStyleSelector>& selectors) const;
836 void GetAreaTextStyleSelectors(size_t level,
837 const TypeInfoRef& type,
838 std::list<TextStyleSelector>& selectors) const;
840
845 bool LoadContent(const std::string& filename,
846 const std::string& content,
847 ColorPostprocessor colorPostprocessor=nullptr,
848 bool submodule=false,
850 bool Load(const std::string& styleFile,
851 ColorPostprocessor colorPostprocessor=nullptr,
852 bool submodule=false,
854 const std::list<StyleError>& GetErrors() const;
855 const std::list<StyleError>& GetWarnings() const;
857 };
858
859 using StyleConfigRef = std::shared_ptr<StyleConfig>;
860
866}
867
868#endif
#define CLASS_FINAL
Definition Compiler.h:26
#define OSMSCOUT_MAP_API
Definition MapImportExport.h:45
Definition Area.h:88
StyleConstantUInt(size_t value)
bool GetOneway() const
Definition StyleConfig.h:298
std::string GetFeatureName(size_t featureIndex) const
Definition StyleConfig.h:79
double GetWidth() const
Definition StyleConfig.h:179
bool FiltersByFeature() const
Definition StyleConfig.h:273
size_t GetUInt() const
Definition StyleConfig.h:154
FeatureValue * GetFeatureValue(size_t featureIndex, const FeatureValueBuffer &buffer) const
Definition StyleConfig.h:84
void SetMaxMM(double maxMM)
Color GetColor() const
Definition StyleConfig.h:118
size_t GetFeatureReaderIndex(const Feature &feature)
bool operator==(const StyleCriteria &other) const
size_t GetMinLevel() const
Definition StyleConfig.h:283
size_t flagIndex
Definition StyleConfig.h:225
StyleConstantWidth(double value, Unit unit)
FeatureFilterData(size_t featureFilterIndex, size_t flagIndex)
StyleResolveContext(const TypeConfigRef &typeConfig)
bool Evaluate(double meterInPixel, double meterInMM) const
const SizeConditionRef & GetSizeCondition() const
Definition StyleConfig.h:308
bool HasFeature(size_t featureIndex, const FeatureValueBuffer &buffer) const
Definition StyleConfig.h:73
StyleFilter & SetOneway(bool oneway)
bool IsOneway(const FeatureValueBuffer &buffer) const
bool FiltersByType() const
Definition StyleConfig.h:268
bool operator!=(const StyleCriteria &other) const
bool operator==(const FeatureFilterData &other) const
Definition StyleConfig.h:230
Unit GetUnit() const
Definition StyleConfig.h:184
StyleFilter & SetMaxLevel(size_t level)
StyleFilter & AddFeature(size_t featureFilterIndex, size_t flagIndex)
size_t GetMaxLevel() const
Definition StyleConfig.h:288
bool HasType(const TypeInfoRef &type) const
Definition StyleConfig.h:278
bool HasCriteria() const
Definition StyleConfig.h:334
StyleCriteria(const StyleFilter &other)
Type type
The type of the cell.
Definition GroundTile.h:92
bool Matches(const StyleResolveContext &context, const FeatureValueBuffer &buffer, double meterInPixel, double meterInMM) const
Unit
Definition StyleConfig.h:167
bool HasMaxLevel() const
Definition StyleConfig.h:303
size_t featureFilterIndex
Definition StyleConfig.h:224
StyleConstantMag(const Magnification &magnification)
StyleFilter & SetSizeCondition(const SizeConditionRef &condition)
Magnification GetMag() const
Definition StyleConfig.h:136
StyleFilter & SetTypes(const TypeInfoSet &types)
void SetMaxPx(double maxPx)
void SetMinMM(double minMM)
Vertex2D * buffer
Definition Transformation.h:343
StyleConstantColor(const Color &color)
StyleFilter & SetMinLevel(size_t level)
FeatureValueBuffer()=default
const std::list< FeatureFilterData > & GetFeatures() const
Definition StyleConfig.h:293
void SetMinPx(double minPx)
Definition TypeFeature.h:99
Definition TypeFeature.h:41
Definition Logger.h:352
Definition Projection.h:46
const SymbolRef & GetSymbol(const std::string &name) const
StyleConfig(const TypeConfigRef &typeConfig)
size_t GetWayPrio(const TypeInfoRef &type) const
Definition StyleConfig.h:733
void GetAreaTextStyleSelectors(size_t level, const TypeInfoRef &type, std::list< TextStyleSelector > &selectors) const
LineStyleRef GetCoastlineLineStyle(const Projection &projection) const
void AddNodeIconStyle(const StyleFilter &filter, IconPartialStyle &style)
bool GetFlagByName(const std::string &name) const
void AddRoutePathTextStyle(const StyleFilter &filter, PathTextPartialStyle &style)
void AddAreaBorderStyle(const StyleFilter &filter, BorderPartialStyle &style)
LineStyleRef GetOSMSubTileBorderLineStyle(const Projection &projection) const
FillStyleRef GetSeaFillStyle(const Projection &projection) const
PathTextStyleRef GetRoutePathTextStyle(const FeatureValueBuffer &buffer, const Projection &projection) const
void GetAreaTypesWithMaxMag(const Magnification &maxMag, TypeInfoSet &types) const
void AddAreaIconStyle(const StyleFilter &filter, IconPartialStyle &style)
void AddWayPathSymbolStyle(const StyleFilter &filter, PathSymbolPartialStyle &style)
void AddNodeTextStyle(const StyleFilter &filter, TextPartialStyle &stype)
std::vector< TypeInfoSet > areaTypeSets
Definition StyleConfig.h:628
FillStyleRef GetLandFillStyle(const Projection &projection) const
void AddConstant(const std::string &name, const StyleConstantRef &variable)
std::vector< TypeInfoSet > wayTypeSets
way types with defined style by magnification level
Definition StyleConfig.h:602
void AddRouteLineStyle(const StyleFilter &filter, LinePartialStyle &style)
std::unordered_map< std::string, bool > GetFlags() const
Definition StyleConfig.h:670
FillStyleRef GetAreaFillStyle(const TypeInfoRef &type, const FeatureValueBuffer &buffer, const Projection &projection) const
void AddFlag(const std::string &name, bool value)
size_t GetAreaTextStyleCount(const TypeInfoRef &type, const FeatureValueBuffer &buffer, const Projection &projection) const
const std::list< StyleError > & GetErrors() const
void GetWayTypesWithMaxMag(const Magnification &mag, TypeInfoSet &types) const
FillStyleRef GetCoastFillStyle(const Projection &projection) const
FillStyleRef GetUnknownFillStyle(const Projection &projection) const
void AddAreaTextStyle(const StyleFilter &filter, TextPartialStyle &style)
void GetNodeTextStyles(const FeatureValueBuffer &buffer, const Projection &projection, std::vector< TextStyleRef > &textStyles) const
bool LoadContent(const std::string &filename, const std::string &content, ColorPostprocessor colorPostprocessor=nullptr, bool submodule=false, Log &log=osmscout::log)
void AddAreaBorderTextStyle(const StyleFilter &filter, PathTextPartialStyle &style)
void GetNodeTypesWithMaxMag(const Magnification &maxMag, TypeInfoSet &types) const
bool HasFlag(const std::string &name) const
IconStyleRef GetAreaIconStyle(const TypeInfoRef &type, const FeatureValueBuffer &buffer, const Projection &projection) const
PathShieldStyleRef GetWayPathShieldStyle(const FeatureValueBuffer &buffer, const Projection &projection) const
void GetRouteLineStyles(const FeatureValueBuffer &buffer, const Projection &projection, std::vector< LineStyleRef > &lineStyles) const
void GetWayPathSymbolStyle(const FeatureValueBuffer &buffer, const Projection &projection, std::vector< PathSymbolStyleRef > &symbolStyles) const
LineStyleRef GetOSMTileBorderLineStyle(const Projection &projection) const
bool HasNodeTextStyles(const TypeInfoRef &type, const Magnification &magnification) const
void AddWayPathShieldStyle(const StyleFilter &filter, PathShieldPartialStyle &style)
void GetAreaFillStyleSelectors(size_t level, const TypeInfoRef &type, std::list< FillStyleSelector > &selectors) const
LabelProviderRef GetLabelProvider(const std::string &name) const
void AddAreaBorderSymbolStyle(const StyleFilter &filter, PathSymbolPartialStyle &style)
std::vector< TypeInfoSet > nodeTypeSets
Definition StyleConfig.h:582
StyleConstantRef GetConstantByName(const std::string &name) const
PathTextStyleRef GetWayPathTextStyle(const FeatureValueBuffer &buffer, const Projection &projection) const
TypeConfigRef typeConfig
Reference to the type configuration.
Definition StyleConfig.h:554
void GetNodeTextStyleSelectors(size_t level, const TypeInfoRef &type, std::list< TextStyleSelector > &selectors) const
void GetRouteTypesWithMaxMag(const Magnification &maxMag, TypeInfoSet &types) const
void GetWayLineStyles(const FeatureValueBuffer &buffer, const Projection &projection, std::vector< LineStyleRef > &lineStyles) const
bool HasWayPathTextStyle(const Projection &projection) const
PathTextStyleRef GetAreaBorderTextStyle(const TypeInfoRef &type, const FeatureValueBuffer &buffer, const Projection &projection) const
PathSymbolStyleRef GetAreaBorderSymbolStyle(const TypeInfoRef &type, const FeatureValueBuffer &buffer, const Projection &projection) const
TypeConfigRef GetTypeConfig() const
void GetAreaTextStyles(const TypeInfoRef &type, const FeatureValueBuffer &buffer, const Projection &projection, std::vector< TextStyleRef > &textStyles) const
void AddAreaFillStyle(const StyleFilter &filter, FillPartialStyle &style)
bool Load(const std::string &styleFile, ColorPostprocessor colorPostprocessor=nullptr, bool submodule=false, Log &log=osmscout::log)
bool RegisterSymbol(const SymbolRef &symbol)
IconStyleRef GetNodeIconStyle(const FeatureValueBuffer &buffer, const Projection &projection) const
StyleConfig & SetWayPrio(const TypeInfoRef &type, size_t prio)
size_t GetFeatureFilterIndex(const Feature &feature) const
bool RegisterLabelProviderFactory(const std::string &name, const LabelProviderFactoryRef &factory)
bool HasAreaTextStyles(const TypeInfoRef &type, const Magnification &magnification) const
void AddWayPathTextStyle(const StyleFilter &filter, PathTextPartialStyle &style)
void AddWayLineStyle(const StyleFilter &filter, LinePartialStyle &style)
void GetAreaBorderStyles(const TypeInfoRef &type, const FeatureValueBuffer &buffer, const Projection &projection, std::vector< BorderStyleRef > &borderStyles) const
const std::list< StyleError > & GetWarnings() const
bool HasWayPathShieldStyle(const Projection &projection) const
std::vector< TypeInfoSet > routeTypeSets
Definition StyleConfig.h:633
size_t GetNodeTextStyleCount(const FeatureValueBuffer &buffer, const Projection &projection) const
Definition StyleConfig.h:98
virtual ~StyleConstant()=default
OSMSCOUT_API Log log
Definition LoggerImpl.h:95
std::shared_ptr< TypeConfig > TypeConfigRef
Definition TypeConfig.h:1396
Definition Area.h:39
StyleSelector< ShieldStyle, ShieldStyle::Attribute > ShieldStyleSelector
Definition StyleConfig.h:513
ConditionalStyle< LineStyle, LineStyle::Attribute > LineConditionalStyle
Definition StyleConfig.h:488
std::list< PathSymbolStyleSelector > PathSymbolStyleSelectorList
Definition StyleConfig.h:538
std::vector< std::vector< PathTextStyleSelectorList > > PathTextStyleLookupTable
List of selectors.
Definition StyleConfig.h:527
PartialStyle< ShieldStyle, ShieldStyle::Attribute > ShieldPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:511
StyleSelector< IconStyle, IconStyle::Attribute > IconStyleSelector
Definition StyleConfig.h:531
PartialStyle< PathShieldStyle, PathShieldStyle::Attribute > PathShieldPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:517
StyleSelector< LineStyle, LineStyle::Attribute > LineStyleSelector
Definition StyleConfig.h:489
std::list< PathTextStyleSelector > PathTextStyleSelectorList
Definition StyleConfig.h:526
StyleSelector< PathSymbolStyle, PathSymbolStyle::Attribute > PathSymbolStyleSelector
Definition StyleConfig.h:537
PartialStyle< PathTextStyle, PathTextStyle::Attribute > PathTextPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:523
PartialStyle< TextStyle, TextStyle::Attribute > TextPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:505
std::vector< std::vector< TextStyleSelectorList > > TextStyleLookupTable
List of selectors.
Definition StyleConfig.h:509
osmscout::Color(*)(const osmscout::Color &) ColorPostprocessor
Definition StyleConfig.h:54
std::shared_ptr< PathTextStyle > PathTextStyleRef
Definition Styles.h:890
std::shared_ptr< StyleConfig > StyleConfigRef
Definition StyleConfig.h:859
std::vector< std::vector< PathSymbolStyleSelectorList > > PathSymbolStyleLookupTable
List of selectors.
Definition StyleConfig.h:539
std::shared_ptr< Symbol > SymbolRef
Definition StyleDescription.h:37
PartialStyle< LineStyle, LineStyle::Attribute > LinePartialStyle
Definition StyleConfig.h:487
std::list< TextStyleSelector > TextStyleSelectorList
Definition StyleConfig.h:508
ConditionalStyle< BorderStyle, BorderStyle::Attribute > BorderConditionalStyle
Definition StyleConfig.h:500
PartialStyle< BorderStyle, BorderStyle::Attribute > BorderPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:499
PartialStyle< PathSymbolStyle, PathSymbolStyle::Attribute > PathSymbolPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:535
std::shared_ptr< PathSymbolStyle > PathSymbolStyleRef
Definition Styles.h:1319
StyleSelector< PathShieldStyle, PathShieldStyle::Attribute > PathShieldStyleSelector
Definition StyleConfig.h:519
std::shared_ptr< LabelProvider > LabelProviderRef
Definition LabelProvider.h:60
std::vector< std::vector< BorderStyleSelectorList > > BorderStyleLookupTable
List of selectors.
Definition StyleConfig.h:503
StyleSelector< TextStyle, TextStyle::Attribute > TextStyleSelector
Definition StyleConfig.h:507
ConditionalStyle< ShieldStyle, ShieldStyle::Attribute > ShieldConditionalStyle
Definition StyleConfig.h:512
std::list< ShieldStyleSelector > ShieldStyleSelectorList
Definition StyleConfig.h:514
std::shared_ptr< StyleConstant > StyleConstantRef
Definition StyleConfig.h:104
StyleSelector< FillStyle, FillStyle::Attribute > FillStyleSelector
Definition StyleConfig.h:495
StyleSelector< PathTextStyle, PathTextStyle::Attribute > PathTextStyleSelector
Definition StyleConfig.h:525
std::shared_ptr< LabelProviderFactory > LabelProviderFactoryRef
Definition LabelProvider.h:74
std::shared_ptr< LineStyle > LineStyleRef
Definition Styles.h:281
ConditionalStyle< FillStyle, FillStyle::Attribute > FillConditionalStyle
Definition StyleConfig.h:494
std::vector< std::vector< FillStyleSelectorList > > FillStyleLookupTable
List of selectors.
Definition StyleConfig.h:497
ConditionalStyle< PathSymbolStyle, PathSymbolStyle::Attribute > PathSymbolConditionalStyle
Definition StyleConfig.h:536
std::list< BorderStyleSelector > BorderStyleSelectorList
Definition StyleConfig.h:502
std::vector< std::vector< IconStyleSelectorList > > IconStyleLookupTable
List of selectors.
Definition StyleConfig.h:533
ConditionalStyle< PathTextStyle, PathTextStyle::Attribute > PathTextConditionalStyle
Definition StyleConfig.h:524
std::shared_ptr< FillStyle > FillStyleRef
Definition Styles.h:356
PartialStyle< IconStyle, IconStyle::Attribute > IconPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:529
std::list< IconStyleSelector > IconStyleSelectorList
Definition StyleConfig.h:532
std::list< LineStyleSelector > LineStyleSelectorList
Definition StyleConfig.h:490
std::shared_ptr< IconStyle > IconStyleRef
Definition Styles.h:987
StyleSelector< BorderStyle, BorderStyle::Attribute > BorderStyleSelector
Definition StyleConfig.h:501
std::vector< std::vector< PathShieldStyleSelectorList > > PathShieldStyleLookupTable
List of selectors.
Definition StyleConfig.h:521
std::shared_ptr< TypeInfo > TypeInfoRef
Definition TypeConfig.h:61
ConditionalStyle< TextStyle, TextStyle::Attribute > TextConditionalStyle
Definition StyleConfig.h:506
std::list< PathShieldStyleSelector > PathShieldStyleSelectorList
Definition StyleConfig.h:520
FeatureValueReader< AccessFeature, AccessFeatureValue > AccessFeatureValueReader
Definition AccessFeature.h:276
std::list< FillStyleSelector > FillStyleSelectorList
Definition StyleConfig.h:496
ConditionalStyle< PathShieldStyle, PathShieldStyle::Attribute > PathShieldConditionalStyle
Definition StyleConfig.h:518
ConditionalStyle< IconStyle, IconStyle::Attribute > IconConditionalStyle
Definition StyleConfig.h:530
std::vector< std::vector< ShieldStyleSelectorList > > ShieldStyleLookupTable
List of selectors.
Definition StyleConfig.h:515
std::shared_ptr< SizeCondition > SizeConditionRef
Definition StyleConfig.h:220
PartialStyle< FillStyle, FillStyle::Attribute > FillPartialStyle
Index selectors by type and level.
Definition StyleConfig.h:493
std::vector< std::vector< LineStyleSelectorList > > LineStyleLookupTable
List of selectors.
Definition StyleConfig.h:491
std::shared_ptr< PathShieldStyle > PathShieldStyleRef
Definition Styles.h:805
Definition StyleConfig.h:450
PartialStyle< LineStyle, LineStyle::Attribute > style
Definition StyleConfig.h:452
ConditionalStyle(const StyleFilter &filter, const PartialStyle< S, A > &style)
Definition StyleConfig.h:454
StyleFilter filter
Definition StyleConfig.h:451
Definition StyleConfig.h:353
virtual void SetDoubleArrayValue(int attribute, const std::vector< double > &value)=0
virtual ~PartialStyleBase()=default
virtual void SetBoolValue(int attribute, bool value)=0
virtual void SetUIntValue(int attribute, size_t value)=0
virtual void SetDoubleValue(int attribute, double value)=0
virtual void SetStringValue(int attribute, const std::string &value)=0
virtual void SetIntValue(int attribute, int value)=0
virtual void SetSymbolValue(int attribute, const SymbolRef &value)=0
virtual void SetLabelValue(int attribute, const LabelProviderRef &value)=0
virtual void SetColorValue(int attribute, const Color &value)=0
virtual void SetMagnificationValue(int attribute, const Magnification &value)=0
Definition StyleConfig.h:375
void SetLabelValue(int attribute, const LabelProviderRef &value) override
Definition StyleConfig.h:435
void SetUIntValue(int attribute, size_t value) override
Definition StyleConfig.h:429
void SetSymbolValue(int attribute, const SymbolRef &value) override
Definition StyleConfig.h:417
void SetMagnificationValue(int attribute, const Magnification &value) override
Definition StyleConfig.h:399
void SetIntValue(int attribute, int value) override
Definition StyleConfig.h:423
void SetStringValue(int attribute, const std::string &value) override
Definition StyleConfig.h:387
void SetColorValue(int attribute, const Color &value) override
Definition StyleConfig.h:393
void SetDoubleValue(int attribute, double value) override
Definition StyleConfig.h:405
void SetDoubleArrayValue(int attribute, const std::vector< double > &value) override
Definition StyleConfig.h:411
std::shared_ptr< LineStyle > style
Definition StyleConfig.h:377
void SetBoolValue(int attribute, bool value) override
Definition StyleConfig.h:381
std::set< LineStyle::Attribute > attributes
Definition StyleConfig.h:376
Definition StyleConfig.h:472
StyleSelector(const StyleFilter &filter, const PartialStyle< S, A > &style)
Definition StyleConfig.h:477
std::shared_ptr< LineStyle > style
Definition StyleConfig.h:475
StyleCriteria criteria
Definition StyleConfig.h:473
std::set< LineStyle::Attribute > attributes
Definition StyleConfig.h:474