Пример #1
0
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 );