Пример #1
0
	void add_color_info(const config &v)
	{
		BOOST_FOREACH(const config &teamC, v.child_range("color_range"))
		{
			const config::attribute_value *a1 = teamC.get("id"),
				*a2 = teamC.get("rgb");
			if (!a1 || !a2) continue;
			std::string id = *a1;
			std::vector<Uint32> temp;
			if(!string2rgb(*a2, temp)) {
				std::stringstream ss;
				ss << "can't parse color string:\n" << teamC.debug() << "\n";
				throw config::error(ss.str());
			}
			team_rgb_range.insert(std::make_pair(id,color_range(temp)));
			team_rgb_name[id] = teamC["name"];
			//generate palette of same name;
			std::vector<Uint32> tp = palette(team_rgb_range[id]);
			if (tp.empty()) continue;
			team_rgb_colors.insert(std::make_pair(id,tp));
			//if this is being used, output log of palette for artists use.
			DBG_NG << "color palette creation:\n";
			std::ostringstream str;
			str << id << " = ";
			for (std::vector<Uint32>::const_iterator r = tp.begin(),
			     r_end = tp.end(), r_beg = r; r != r_end; ++r)
			{
				int red = ((*r) & 0x00FF0000) >> 16;
				int green = ((*r) & 0x0000FF00) >> 8;
				int blue = ((*r) & 0x000000FF);
				if (r != r_beg) str << ',';
				str << red << ',' << green << ',' << blue;
			}
			DBG_NG << str.str() << '\n';
		}

		BOOST_FOREACH(const config &cp, v.child_range("color_palette"))
		{
			BOOST_FOREACH(const config::attribute &rgb, cp.attribute_range())
			{
				std::vector<Uint32> temp;
				if(!string2rgb(rgb.second, temp)) {
					ERR_NG << "Invalid color palette: " << rgb.second << "\n";
				}
				team_rgb_colors.insert(std::make_pair(rgb.first, temp));
			}
		}
	}
Пример #2
0
bool parser::register_rc_pal(const std::string& map_entry_name, const std::string& rc_array)
{
	if(debug_mode()) {
		std::cerr << "registering RC palette '" << map_entry_name << "' of color array: " << rc_array << '\n';
	}
	std::vector<uint32_t> cvt_pal = string2rgb(rc_array);

	return rc_pal_tab_.insert( std::make_pair(map_entry_name, cvt_pal) ).second;
}
Пример #3
0
	void add_color_info(const config &v)
	{
		BOOST_FOREACH(const config &teamC, v.child_range("color_range"))
		{
			const config::attribute_value *a1 = teamC.get("id"),
				*a2 = teamC.get("rgb");
			if (!a1 || !a2) {
				continue;
			}
			std::string id = *a1;
			std::vector<Uint32> temp;
			if(!string2rgb(*a2, temp)) {
				std::stringstream ss;
				ss << "can't parse color string:\n" << teamC.debug() << "\n";
				throw config::error(ss.str());
			}
			team_rgb_range.insert(std::make_pair(id,color_range(temp)));
			team_rgb_name[id] = teamC["name"];

			LOG_NG << "registered color range '" << id << "': " << team_rgb_range[id].debug() << '\n';

			//generate palette of same name;
			std::vector<Uint32> tp = palette(team_rgb_range[id]);
			if (tp.empty()) {
				continue;
			}
			team_rgb_colors.insert(std::make_pair(id,tp));
		}

		BOOST_FOREACH(const config &cp, v.child_range("color_palette"))
		{
			BOOST_FOREACH(const config::attribute &rgb, cp.attribute_range())
			{
				std::vector<Uint32> temp;
				if(!string2rgb(rgb.second, temp)) {
					ERR_NG << "Invalid color palette: " << rgb.second << std::endl;
				}
				team_rgb_colors.insert(std::make_pair(rgb.first, temp));
				LOG_NG << "registered color palette: " << rgb.first << '\n';
			}
		}
	}
Пример #4
0
	const color_range& color_info(const std::string& name)
	{
		std::map<std::string, color_range>::const_iterator i = team_rgb_range.find(name);
		if(i == team_rgb_range.end()) {
			std::vector<Uint32> temp;
			if(!string2rgb(name, temp))
				throw config::error(_("Invalid color range: ") + name);
			team_rgb_range.insert(std::make_pair(name,color_range(temp)));
			return color_info(name);
		}
		return i->second;
	}
Пример #5
0
	const std::vector<Uint32>& tc_info(const std::string& name)
	{
		std::map<std::string, std::vector<Uint32> >::const_iterator i = team_rgb_colors.find(name);
		if(i == team_rgb_colors.end()) {
			std::vector<Uint32> temp;
			if(!string2rgb(name, temp)) {
				static std::vector<Uint32> stv;
				ERR_NG << "Invalid color palette: " << name << "\n";
				return stv;
			}
			team_rgb_colors.insert(std::make_pair(name,temp));
			return tc_info(name);
		}
		return i->second;
	}