bool color_factory::parse_from_string(color & c, std::string const& css_color, mapnik::css_color_grammar<std::string::const_iterator> const& g) { std::string::const_iterator first = css_color.begin(); std::string::const_iterator last = css_color.end(); // boost 1.41 -> 1.44 compatibility, to be removed in mapnik 2.1 (dane) #if BOOST_VERSION >= 104500 bool result = boost::spirit::qi::phrase_parse(first, last, g, boost::spirit::ascii::space, c); return result && (first == last); #else mapnik::css css_; bool result = boost::spirit::qi::phrase_parse(first, last, g, boost::spirit::ascii::space, css_); if (result && (first == last)) { c.set_red(css_.r); c.set_green(css_.g); c.set_blue(css_.b); c.set_alpha(css_.a); return true; } return false; #endif }
void color_factory::init_from_string(color & c, std::string const& css_color) { typedef std::string::const_iterator iterator_type; typedef mapnik::css_color_grammar<iterator_type> css_color_grammar; css_color_grammar g; iterator_type first = css_color.begin(); iterator_type last = css_color.end(); // boost 1.41 -> 1.44 compatibility, to be removed in mapnik 2.1 (dane) #if BOOST_VERSION >= 104500 bool result = boost::spirit::qi::phrase_parse(first, last, g, boost::spirit::ascii::space, c); if (!result) { throw config_error(std::string("Failed to parse color value: ") + "Expected a CSS color, but got '" + css_color + "'"); } #else mapnik::css css_; bool result = boost::spirit::qi::phrase_parse(first, last, g, boost::spirit::ascii::space, css_); if (!result) { throw config_error(std::string("Failed to parse color value: ") + "Expected a CSS color, but got '" + css_color + "'"); } c.set_red(css_.r); c.set_green(css_.g); c.set_blue(css_.b); c.set_alpha(css_.a); #endif }