MCPcopy Create free account
hub / github.com/MyGUI/mygui / parseFont

Method parseFont

Tools/FontEditor/FontExportSerializer.cpp:44–113  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42 }
43
44 void FontExportSerializer::parseFont(pugi::xml_node _node)
45 {
46 DataPtr data = Data::CreateInstance();
47 data->setType(DataTypeManager::getInstance().getType("Font"));
48 data->setPropertyValue("Name", _node.attribute("name").value());
49
50 std::string value = _node.select_single_node("Property[@key=\"Source\"]/@value").attribute().value();
51 data->setPropertyValue("Source", value);
52
53 value = _node.select_single_node("Property[@key=\"Size\"]/@value").attribute().value();
54 data->setPropertyValue("Size", MyGUI::utility::parseValue<float>(value));
55
56 value = _node.select_single_node("Property[@key=\"Hinting\"]/@value").attribute().value();
57 if (value.empty())
58 value = "use_native";
59 data->setPropertyValue("Hinting", value);
60
61 value = _node.select_single_node("Property[@key=\"Resolution\"]/@value").attribute().value();
62 if (!value.empty())
63 data->setPropertyValue("Resolution", MyGUI::utility::parseValue<int>(value));
64
65 value = _node.select_single_node("Property[@key=\"Antialias\"]/@value").attribute().value();
66 if (!value.empty())
67 data->setPropertyValue("Antialias", MyGUI::utility::parseValue<bool>(value));
68
69 value = _node.select_single_node("Property[@key=\"TabWidth\"]/@value").attribute().value();
70 if (!value.empty())
71 data->setPropertyValue("TabWidth", MyGUI::utility::parseValue<float>(value));
72
73 value = _node.select_single_node("Property[@key=\"OffsetHeight\"]/@value").attribute().value();
74 if (!value.empty())
75 data->setPropertyValue("OffsetHeight", MyGUI::utility::parseValue<int>(value));
76
77 value = _node.select_single_node("Property[@key=\"SubstituteCode\"]/@value").attribute().value();
78 if (!value.empty())
79 data->setPropertyValue("SubstituteCode", MyGUI::utility::parseValue<int>(value));
80
81 value = _node.select_single_node("Property[@key=\"Distance\"]/@value").attribute().value();
82 if (!value.empty())
83 data->setPropertyValue("Distance", MyGUI::utility::parseValue<int>(value));
84
85 value.clear();
86 pugi::xpath_node_set codes = _node.select_nodes("Codes/Code/@range");
87 for (const auto& code : codes)
88 {
89 if (!value.empty())
90 value += "|";
91
92 std::vector<std::string> values = MyGUI::utility::split(code.attribute().value());
93 if (values.size() == 1)
94 value += MyGUI::utility::toString(values[0], " ", values[0]);
95 else if (values.size() == 2)
96 value += MyGUI::utility::toString(values[0], " ", values[1]);
97 }
98 data->setPropertyValue("FontCodeRanges", value);
99
100 value = _node.select_single_node("Property[@key=\"MsdfMode\"]/@value").attribute().value();
101 if (!value.empty())

Callers

nothing calls this directly

Calls 14

splitFunction · 0.85
toStringFunction · 0.85
setTypeMethod · 0.45
getTypeMethod · 0.45
setPropertyValueMethod · 0.45
valueMethod · 0.45
attributeMethod · 0.45
select_single_nodeMethod · 0.45
emptyMethod · 0.45
clearMethod · 0.45
select_nodesMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected