libosmscout  1.1.1
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 
33 #include <osmscout/OSMScoutTypes.h>
34 #include <osmscout/TypeConfig.h>
35 #include <osmscout/TypeFeatures.h>
36 #include <osmscout/TypeInfoSet.h>
37 #include <osmscout/FeatureReader.h>
38 
39 #include <osmscout/Node.h>
40 #include <osmscout/Area.h>
41 #include <osmscout/Way.h>
42 
43 #include <osmscout/util/Color.h>
45 
46 #include <osmscout/LabelProvider.h>
48 #include <osmscout/Styles.h>
49 
50 namespace osmscout {
51 
52  using ColorPostprocessor = osmscout::Color (*)(const osmscout::Color &);
53 
59  {
60  private:
61  TypeConfigRef typeConfig;
62  std::map<std::string,size_t> featureReaderMap; //< Map that maps feature names to index in the feature reader vector
63  std::vector<DynamicFeatureReader> featureReaders; //< List of feature readers
64  AccessFeatureValueReader accessReader;
65 
66  public:
67  explicit StyleResolveContext(const TypeConfigRef& typeConfig);
68 
69  size_t GetFeatureReaderIndex(const Feature& feature);
70 
71  bool HasFeature(size_t featureIndex,
72  const FeatureValueBuffer& buffer) const
73  {
74  return featureReaders[featureIndex].IsSet(buffer);
75  }
76 
77  std::string GetFeatureName(size_t featureIndex) const
78  {
79  return featureReaders[featureIndex].GetFeatureName();
80  }
81 
82  FeatureValue* GetFeatureValue(size_t featureIndex,
83  const FeatureValueBuffer& buffer) const
84  {
85  return featureReaders[featureIndex].GetValue(buffer);
86  }
87 
88  bool IsOneway(const FeatureValueBuffer& buffer) const;
89  };
90 
96  {
97  public:
98  StyleConstant() = default;
99  virtual ~StyleConstant() = default;
100  };
101 
102  using StyleConstantRef = std::shared_ptr<StyleConstant>;
103 
109  {
110  private:
111  Color color;
112 
113  public:
114  explicit StyleConstantColor(const Color& color);
115 
116  Color GetColor() const
117  {
118  return color;
119  }
120  };
121 
127  {
128  private:
129  Magnification magnification;
130 
131  public:
132  explicit StyleConstantMag(const Magnification& magnification);
133 
134  Magnification GetMag() const
135  {
136  return magnification;
137  }
138  };
139 
145  {
146  private:
147  size_t value;
148 
149  public:
150  explicit StyleConstantUInt(size_t value);
151 
152  size_t GetUInt() const
153  {
154  return value;
155  }
156  };
157 
163  {
164  public:
165  enum class Unit {
166  m,
167  mm
168  };
169 
170  private:
171  double value;
172  Unit unit;
173 
174  public:
175  explicit StyleConstantWidth(double value, Unit unit);
176 
177  double GetWidth() const
178  {
179  return value;
180  }
181 
182  Unit GetUnit() const
183  {
184  return unit;
185  }
186  };
187 
192  class OSMSCOUT_MAP_API SizeCondition CLASS_FINAL
193  {
194  private:
195  double minMM;
196  bool minMMSet;
197 
198  double minPx;
199  bool minPxSet;
200 
201  double maxMM;
202  bool maxMMSet;
203 
204  double maxPx;
205  bool maxPxSet;
206  public:
207  SizeCondition();
208 
209  void SetMinMM(double minMM);
210  void SetMinPx(double minPx);
211 
212  void SetMaxMM(double maxMM);
213  void SetMaxPx(double maxPx);
214 
215  bool Evaluate(double meterInPixel, double meterInMM) const;
216  };
217 
218  using SizeConditionRef = std::shared_ptr<SizeCondition>;
219 
221  {
223  size_t flagIndex;
224 
225  FeatureFilterData(size_t featureFilterIndex,
226  size_t flagIndex);
227 
228  bool operator==(const FeatureFilterData& other) const
229  {
230  return featureFilterIndex==other.featureFilterIndex &&
231  flagIndex==other.flagIndex;
232  }
233  };
234 
242  {
243  private:
244  bool filtersByType;
245  TypeInfoSet types;
246  size_t minLevel;
247  size_t maxLevel;
248  std::list<FeatureFilterData> features;
249  bool oneway;
250  SizeConditionRef sizeCondition;
251 
252  public:
253  StyleFilter();
254  StyleFilter(const StyleFilter& other);
255 
256  StyleFilter& SetTypes(const TypeInfoSet& types);
257  StyleFilter& SetMinLevel(size_t level);
258  StyleFilter& SetMaxLevel(size_t level);
259 
260  StyleFilter& AddFeature(size_t featureFilterIndex,
261  size_t flagIndex);
262 
263  StyleFilter& SetOneway(bool oneway);
264 
265  StyleFilter& SetSizeCondition(const SizeConditionRef& condition);
266 
267  bool FiltersByType() const
268  {
269  return filtersByType;
270  }
271 
272  bool FiltersByFeature() const
273  {
274  return !features.empty();
275  }
276 
277  bool HasType(const TypeInfoRef& type) const
278  {
279  return types.IsSet(type);
280  }
281 
282  size_t GetMinLevel() const
283  {
284  return minLevel;
285  }
286 
287  size_t GetMaxLevel() const
288  {
289  return maxLevel;
290  }
291 
292  const std::list<FeatureFilterData>& GetFeatures() const
293  {
294  return features;
295  }
296 
297  bool GetOneway() const
298  {
299  return oneway;
300  }
301 
302  bool HasMaxLevel() const
303  {
304  return maxLevel!=std::numeric_limits<size_t>::max();
305  }
306 
308  {
309  return sizeCondition;
310  }
311  };
312 
321  {
322  private:
323  std::list<FeatureFilterData> features;
324  bool oneway;
325  SizeConditionRef sizeCondition;
326 
327  public:
328  StyleCriteria();
329 
330  explicit StyleCriteria(const StyleFilter& other);
331  StyleCriteria(const StyleCriteria& other);
332 
333  bool operator==(const StyleCriteria& other) const;
334  bool operator!=(const StyleCriteria& other) const;
335 
336  bool HasCriteria() const
337  {
338  return !features.empty() ||
339  oneway ||
340  sizeCondition;
341  }
342 
343  bool GetOneway() const
344  {
345  return oneway;
346  }
347 
348  bool Matches(const StyleResolveContext& context,
349  const FeatureValueBuffer& buffer,
350  double meterInPixel,
351  double meterInMM) const;
352  };
353 
355  {
356  virtual ~PartialStyleBase() = default;
357 
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;
361  virtual void SetMagnificationValue(int attribute, const Magnification& value) = 0;
362  virtual void SetDoubleValue(int attribute, double value) = 0;
363  virtual void SetDoubleArrayValue(int attribute, const std::vector<double>& value) = 0;
364  virtual void SetSymbolValue(int attribute, const SymbolRef& value) = 0;
365  virtual void SetIntValue(int attribute, int value) = 0;
366  virtual void SetUIntValue(int attribute, size_t value) = 0;
367  virtual void SetLabelValue(int attribute, const LabelProviderRef& value) = 0;
368  };
369 
375  template<class S, class A>
377  {
378  std::set<A> attributes;
379  std::shared_ptr<S> style=std::make_shared<S>();
380 
381  PartialStyle() = default;
382 
383  void SetBoolValue(int attribute, bool value) override
384  {
385  style->SetBoolValue(attribute,value);
386  attributes.insert((A)attribute);
387  }
388 
389  void SetStringValue(int attribute, const std::string& value) override
390  {
391  style->SetStringValue(attribute,value);
392  attributes.insert((A)attribute);
393  }
394 
395  void SetColorValue(int attribute, const Color& value) override
396  {
397  style->SetColorValue(attribute,value);
398  attributes.insert((A)attribute);
399  }
400 
401  void SetMagnificationValue(int attribute, const Magnification& value) override
402  {
403  style->SetMagnificationValue(attribute,value);
404  attributes.insert((A)attribute);
405  }
406 
407  void SetDoubleValue(int attribute, double value) override
408  {
409  style->SetDoubleValue(attribute,value);
410  attributes.insert((A)attribute);
411  }
412 
413  void SetDoubleArrayValue(int attribute, const std::vector<double>& value) override
414  {
415  style->SetDoubleArrayValue(attribute,value);
416  attributes.insert((A)attribute);
417  }
418 
419  void SetSymbolValue(int attribute, const SymbolRef& value) override
420  {
421  style->SetSymbolValue(attribute,value);
422  attributes.insert((A)attribute);
423  }
424 
425  void SetIntValue(int attribute, int value) override
426  {
427  style->SetIntValue(attribute,value);
428  attributes.insert((A)attribute);
429  }
430 
431  void SetUIntValue(int attribute, size_t value) override
432  {
433  style->SetUIntValue(attribute,value);
434  attributes.insert((A)attribute);
435  }
436 
437  void SetLabelValue(int attribute, const LabelProviderRef& value) override
438  {
439  style->SetLabelValue(attribute,value);
440  attributes.insert((A)attribute);
441  }
442  };
443 
450  template<class S, class A>
452  {
455 
457  const PartialStyle<S,A>& style)
458  : filter(filter),
459  style(style)
460  {
461  // no code
462  }
463  };
464 
472  template<class S, class A>
474  {
476  std::set<A> attributes;
477  std::shared_ptr<S> style;
478 
479  StyleSelector(const StyleFilter& filter,
480  const PartialStyle<S,A>& style)
481  : criteria(filter),
483  style(style.style)
484  {
485  // no code
486  }
487  };
488 
492  using LineStyleSelectorList = std::list<LineStyleSelector>;
493  using LineStyleLookupTable = std::vector<std::vector<LineStyleSelectorList> >;
494 
498  using FillStyleSelectorList = std::list<FillStyleSelector>;
499  using FillStyleLookupTable = std::vector<std::vector<FillStyleSelectorList> >;
500 
504  using BorderStyleSelectorList = std::list<BorderStyleSelector>;
505  using BorderStyleLookupTable = std::vector<std::vector<BorderStyleSelectorList> >;
506 
510  using TextStyleSelectorList = std::list<TextStyleSelector>;
511  using TextStyleLookupTable = std::vector<std::vector<TextStyleSelectorList> >;
512 
516  using ShieldStyleSelectorList = std::list<ShieldStyleSelector>;
517  using ShieldStyleLookupTable = std::vector<std::vector<ShieldStyleSelectorList> >;
518 
522  using PathShieldStyleSelectorList = std::list<PathShieldStyleSelector>;
523  using PathShieldStyleLookupTable = std::vector<std::vector<PathShieldStyleSelectorList> >;
524 
528  using PathTextStyleSelectorList = std::list<PathTextStyleSelector>;
529  using PathTextStyleLookupTable = std::vector<std::vector<PathTextStyleSelectorList> >;
530 
534  using IconStyleSelectorList = std::list<IconStyleSelector>;
535  using IconStyleLookupTable = std::vector<std::vector<IconStyleSelectorList> >;
536 
540  using PathSymbolStyleSelectorList = std::list<PathSymbolStyleSelector>;
541  using PathSymbolStyleLookupTable = std::vector<std::vector<PathSymbolStyleSelectorList> >;
542 
554  {
555  public:
557 
558  private:
559  mutable StyleResolveContext styleResolveContext;
560 
561  FeatureValueBuffer tileLandBuffer;
562  FeatureValueBuffer tileSeaBuffer;
563  FeatureValueBuffer tileCoastBuffer;
564  FeatureValueBuffer tileUnknownBuffer;
565  FeatureValueBuffer coastlineBuffer;
566  FeatureValueBuffer osmTileBorderBuffer;
567  FeatureValueBuffer osmSubTileBorderBuffer;
568 
569  std::unordered_map<std::string,LabelProviderFactoryRef> labelFactories;
570 
571  // Symbol
572  std::unordered_map<std::string,SymbolRef> symbols;
573  SymbolRef emptySymbol;
574 
575  // Node
576  private:
577  std::list<TextConditionalStyle> nodeTextStyleConditionals;
578  std::list<IconConditionalStyle> nodeIconStyleConditionals;
579 
580  std::vector<TextStyleLookupTable> nodeTextStyleSelectors;
581  IconStyleLookupTable nodeIconStyleSelectors;
582 
583  public:
584  std::vector<TypeInfoSet> nodeTypeSets;
585 
586  // Way
587  private:
588  std::vector<size_t> wayPrio;
589 
590  std::list<LineConditionalStyle> wayLineStyleConditionals;
591  std::list<PathTextConditionalStyle> wayPathTextStyleConditionals;
592  std::list<PathSymbolConditionalStyle> wayPathSymbolStyleConditionals;
593  std::list<PathShieldConditionalStyle> wayPathShieldStyleConditionals;
594 
595  std::vector<LineStyleLookupTable> wayLineStyleSelectors;
596  PathTextStyleLookupTable wayPathTextStyleSelectors;
597  std::vector<PathSymbolStyleLookupTable> wayPathSymbolStyleSelectors;
598  PathShieldStyleLookupTable wayPathShieldStyleSelectors;
599 
600  std::vector<bool> wayTextFlags;
601  std::vector<bool> wayShieldFlags;
602 
603  public:
604  std::vector<TypeInfoSet> wayTypeSets;
605 
606  // Area
607 
608  private:
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;
615 
616  // Route
617  std::vector<LineStyleLookupTable> routeLineStyleSelectors;
618  std::list<LineConditionalStyle> routeLineStyleConditionals;
619  std::list<PathTextConditionalStyle> routePathTextStyleConditionals;
620  PathTextStyleLookupTable routePathTextStyleSelectors;
621 
622  FillStyleLookupTable areaFillStyleSelectors;
623  std::vector<BorderStyleLookupTable> areaBorderStyleSelectors;
624  std::vector<TextStyleLookupTable> areaTextStyleSelectors;
625  IconStyleLookupTable areaIconStyleSelectors;
626  PathTextStyleLookupTable areaBorderTextStyleSelectors;
627  PathSymbolStyleLookupTable areaBorderSymbolStyleSelectors;
628 
629  public:
630  std::vector<TypeInfoSet> areaTypeSets;
631 
632  // Route
633 
634  public:
635  std::vector<TypeInfoSet> routeTypeSets;
636 
637  private:
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;
642 
643  private:
644  void Reset();
645 
646  void PostprocessNodes();
647  void PostprocessWays();
648  void PostprocessAreas();
649  void PostprocessRoutes();
650  void PostprocessIconId();
651  void PostprocessPatternId();
652 
653  public:
654  explicit StyleConfig(const TypeConfigRef& typeConfig);
655  virtual ~StyleConfig();
656 
661  bool RegisterLabelProviderFactory(const std::string& name,
662  const LabelProviderFactoryRef& factory);
663 
664  LabelProviderRef GetLabelProvider(const std::string& name) const;
666 
667  bool HasFlag(const std::string& name) const;
668  bool GetFlagByName(const std::string& name) const;
669  void AddFlag(const std::string& name,
670  bool value);
671 
672  std::unordered_map<std::string,bool> GetFlags() const
673  {
674  return flags;
675  }
676 
677  StyleConstantRef GetConstantByName(const std::string& name) const;
678  void AddConstant(const std::string& name,
679  const StyleConstantRef& variable);
680 
681  bool RegisterSymbol(const SymbolRef& symbol);
682  const SymbolRef& GetSymbol(const std::string& name) const;
683 
684  void Postprocess();
685 
686  TypeConfigRef GetTypeConfig() const;
687 
688  size_t GetFeatureFilterIndex(const Feature& feature) const;
689 
690  StyleConfig& SetWayPrio(const TypeInfoRef& type,
691  size_t prio);
692 
693  void AddNodeTextStyle(const StyleFilter& filter,
694  TextPartialStyle& stype);
695  void AddNodeIconStyle(const StyleFilter& filter,
696  IconPartialStyle& style);
697 
698  void AddWayLineStyle(const StyleFilter& filter,
699  LinePartialStyle& style);
700  void AddWayPathTextStyle(const StyleFilter& filter,
701  PathTextPartialStyle& style);
702  void AddWayPathSymbolStyle(const StyleFilter& filter,
703  PathSymbolPartialStyle& style);
704  void AddWayPathShieldStyle(const StyleFilter& filter,
705  PathShieldPartialStyle& style);
706 
707  void AddAreaFillStyle(const StyleFilter& filter,
708  FillPartialStyle& style);
709  void AddAreaBorderStyle(const StyleFilter& filter,
710  BorderPartialStyle& style);
711  void AddAreaTextStyle(const StyleFilter& filter,
712  TextPartialStyle& style);
713  void AddAreaIconStyle(const StyleFilter& filter,
714  IconPartialStyle& style);
715  void AddAreaBorderTextStyle(const StyleFilter& filter,
716  PathTextPartialStyle& style);
717  void AddAreaBorderSymbolStyle(const StyleFilter& filter,
718  PathSymbolPartialStyle& style);
719 
720  void AddRouteLineStyle(const StyleFilter& filter,
721  LinePartialStyle& style);
722  void AddRoutePathTextStyle(const StyleFilter& filter,
723  PathTextPartialStyle& style);
724 
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;
733 
734 
735  size_t GetWayPrio(const TypeInfoRef& type) const
736  {
737  if (type->GetIndex()<wayPrio.size()) {
738  return wayPrio[type->GetIndex()];
739  }
740 
741  return std::numeric_limits<size_t>::max();
742  }
743 
744 
749  bool HasNodeTextStyles(const TypeInfoRef& type,
750  const Magnification& magnification) const;
751  void GetNodeTextStyles(const FeatureValueBuffer& buffer,
752  const Projection& projection,
753  std::vector<TextStyleRef>& textStyles) 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 
789  FillStyleRef GetAreaFillStyle(const TypeInfoRef& type,
790  const FeatureValueBuffer& buffer,
791  const Projection& projection) const;
792  void GetAreaBorderStyles(const TypeInfoRef& type,
793  const FeatureValueBuffer& buffer,
794  const Projection& projection,
795  std::vector<BorderStyleRef>& borderStyles) const;
796  bool HasAreaTextStyles(const TypeInfoRef& type,
797  const Magnification& magnification) const;
798  void GetAreaTextStyles(const TypeInfoRef& type,
799  const FeatureValueBuffer& buffer,
800  const Projection& projection,
801  std::vector<TextStyleRef>& textStyles) const;
802  IconStyleRef GetAreaIconStyle(const TypeInfoRef& type,
803  const FeatureValueBuffer& buffer,
804  const Projection& projection) const;
805  PathTextStyleRef GetAreaBorderTextStyle(const TypeInfoRef& type,
806  const FeatureValueBuffer& buffer,
807  const Projection& projection) const;
808  PathSymbolStyleRef GetAreaBorderSymbolStyle(const TypeInfoRef& type,
809  const FeatureValueBuffer& buffer,
810  const Projection& projection) const;
811 
812  FillStyleRef GetLandFillStyle(const Projection& projection) const;
813  FillStyleRef GetSeaFillStyle(const Projection& projection) const;
814  FillStyleRef GetCoastFillStyle(const Projection& projection) const;
815  FillStyleRef GetUnknownFillStyle(const Projection& projection) const;
816  LineStyleRef GetCoastlineLineStyle(const Projection& projection) const;
817  LineStyleRef GetOSMTileBorderLineStyle(const Projection& projection) const;
818  LineStyleRef GetOSMSubTileBorderLineStyle(const Projection& projection) const;
820 
825  void GetNodeTextStyleSelectors(size_t level,
826  const TypeInfoRef& type,
827  std::list<TextStyleSelector>& selectors) const;
828  void GetAreaFillStyleSelectors(size_t level,
829  const TypeInfoRef& type,
830  std::list<FillStyleSelector>& selectors) const;
831  void GetAreaTextStyleSelectors(size_t level,
832  const TypeInfoRef& type,
833  std::list<TextStyleSelector>& selectors) const;
835 
840  bool LoadContent(const std::string& content,
841  ColorPostprocessor colorPostprocessor=nullptr);
842  bool Load(const std::string& styleFile,
843  ColorPostprocessor colorPostprocessor=nullptr);
844  const std::list<std::string>& GetErrors();
845  const std::list<std::string>& GetWarnings();
847  };
848 
849  using StyleConfigRef = std::shared_ptr<StyleConfig>;
850 
856 }
857 
858 #endif
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
Definition: Area.h:38
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