All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
LabelStyleSheetParser.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Labels.h"
6 #include "ILabelStyleSheetParser.h"
7 #include "Types.h"
8 
9 #include "document.h"
10 
11 #include <string>
12 #include <vector>
13 
14 namespace Eegeo
15 {
16  namespace Labels
17  {
18 
20  {
21  public:
22  LabelStyleSheetParser(const LabelTextStyleDto& defaultLabelTextStyle,
23  const LabelIconStyleDto& defaultLabelIconStyle,
24  const LabelStyleDto& defaultLabelStyle);
25 
26  bool TryParse(const std::string& labelStyleJson, LabelStyleSheetParserResult& out_result) const;
27 
28  private:
29 
30  bool ParseLabelTextStyles(const rapidjson::Value& labelTextStyleJsonArray, std::vector<LabelTextStyleDto>& results) const;
31  bool ParseLabelIconStyles(const rapidjson::Value& labelIconStyleJsonArray, std::vector<LabelIconStyleDto>& results) const;
32  bool ParseLabelStyles(const rapidjson::Value& labelStyleJsonArray, std::vector<LabelStyleDto>& results) const;
33  bool ParseLabelStyleBindings(const rapidjson::Value& labelStyleBindingJsonArray, std::vector<LabelStyleBindingDto>& results) const;
34 
35  bool ParseLabelTextStyle(const rapidjson::Value& labelTextStyleJson, LabelTextStyleDto& result) const;
36  bool ParseLabelIconStyle(const rapidjson::Value& labelIconStyleJson, LabelIconStyleDto& result) const;
37  bool ParseLabelStyle(const rapidjson::Value& labelStyleJson, LabelStyleDto& result) const;
38  bool ParseLabelStyleBinding(const rapidjson::Value& labelStyleBindingJson, LabelStyleBindingDto& result) const;
39 
40  LabelTextStyleDto m_defaultLabelTextStyle;
41  LabelIconStyleDto m_defaultLabelIconStyle;
42  LabelStyleDto m_defaultLabelStyle;
43 
44  const std::vector<std::string> m_labelOrientationEnumTokens;
45  const std::vector<std::string> m_labelDisplayEnumTokens;
46  const std::vector<std::string> m_labelHorizontalAlignmentEnumTokens;
47  const std::vector<std::string> m_labelVerticalAlignmentEnumTokens;
48  const std::vector<std::string> m_labelStencilModeEnumTokens;
49  const std::vector<std::string> m_labelScreenMarginHidingEnumTokens;
50  };
51  }
52 }