예제 #1
0
파일: color.cpp 프로젝트: novldp/mapnik
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
}
예제 #2
0
파일: color.cpp 프로젝트: novldp/mapnik
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
}