void gdipp_setting::load_gdimm_font(const xpath_node_set &font_node) { for (xpath_node_set::const_iterator node_iter = font_node.begin(); node_iter != font_node.end(); node_iter++) { setting_map curr_settings; for (xml_node::iterator set_iter = node_iter->node().begin(); set_iter != node_iter->node().end(); set_iter++) parse_gdimm_setting_node(*set_iter, curr_settings); const xml_node curr_font = node_iter->node(); const xml_attribute name_attr = curr_font.attribute(L"name"); const xml_attribute bold_attr = curr_font.attribute(L"bold"); const xml_attribute italic_attr = curr_font.attribute(L"italic"); const xml_attribute max_height_attr = curr_font.attribute(L"max_height"); // negative indicates such optional attribute is not specified const gdimm_font_node new_font = {(name_attr.empty() ? wstring() : name_attr.value()), (bold_attr.empty() ? -1 : bold_attr.as_uint()), (italic_attr.empty() ? -1 : italic_attr.as_uint()), (max_height_attr.empty() ? -1 : max_height_attr.as_uint()), curr_settings}; _gdimm_font.push_back(new_font); } }
} }; auto parse_sublevel_node = [&]( xml_node& sublevel_node, u32 sublevel_index ) -> void { for ( xml_attribute attr=sublevel_node.first_attribute(); attr; attr=attr.next_attribute() ) { if ( attr.name() == string("width") ) { temp_level.sublevel_vec.at(sublevel_index).real_size_2d.x = attr.as_uint(); } else if ( attr.name() == string("height") ) { temp_level.sublevel_vec.at(sublevel_index).real_size_2d.y = attr.as_uint(); } } for ( xml_node node=sublevel_node.first_child(); node; node=node.next_sibling() ) { if ( node.name() == string("block_data") ) { parse_sublevel_block_data_node( node, sublevel_index );