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)); } } }
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; }
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'; } } }
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; }
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; }