handle color parsing in one place
This commit is contained in:
parent
d7cf0d5bca
commit
d1b39f5841
1 changed files with 12 additions and 19 deletions
|
@ -100,7 +100,7 @@ struct key_value_sequence_ordered
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
agg::rgba8 parse_color(T & error_messages, const char* str)
|
mapnik::color parse_color(T & error_messages, const char* str)
|
||||||
{
|
{
|
||||||
mapnik::color c(100,100,100);
|
mapnik::color c(100,100,100);
|
||||||
try
|
try
|
||||||
|
@ -111,6 +111,13 @@ agg::rgba8 parse_color(T & error_messages, const char* str)
|
||||||
{
|
{
|
||||||
error_messages.emplace_back(ex.what());
|
error_messages.emplace_back(ex.what());
|
||||||
}
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
agg::rgba8 parse_color_agg(T & error_messages, const char* str)
|
||||||
|
{
|
||||||
|
auto c = parse_color(error_messages, str);
|
||||||
return agg::rgba8(c.red(), c.green(), c.blue(), c.alpha());
|
return agg::rgba8(c.red(), c.green(), c.blue(), c.alpha());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,7 +344,7 @@ void parse_attr(svg_parser & parser, const xmlChar * name, const xmlChar * value
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parser.path_.fill(parse_color(parser.error_messages_, (const char*) value));
|
parser.path_.fill(parse_color_agg(parser.error_messages_, (const char*) value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (xmlStrEqual(name, BAD_CAST "fill-opacity"))
|
else if (xmlStrEqual(name, BAD_CAST "fill-opacity"))
|
||||||
|
@ -376,7 +383,7 @@ void parse_attr(svg_parser & parser, const xmlChar * name, const xmlChar * value
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parser.path_.stroke(parse_color(parser.error_messages_, (const char*) value));
|
parser.path_.stroke(parse_color_agg(parser.error_messages_, (const char*) value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (xmlStrEqual(name, BAD_CAST "stroke-width"))
|
else if (xmlStrEqual(name, BAD_CAST "stroke-width"))
|
||||||
|
@ -836,14 +843,7 @@ void parse_gradient_stop(svg_parser & parser, xmlTextReaderPtr reader)
|
||||||
{
|
{
|
||||||
if (kv.first == "stop-color")
|
if (kv.first == "stop-color")
|
||||||
{
|
{
|
||||||
try
|
stop_color = parse_color(parser.error_messages_, kv.second.c_str());
|
||||||
{
|
|
||||||
stop_color = mapnik::parse_color(kv.second.c_str());
|
|
||||||
}
|
|
||||||
catch (mapnik::config_error const& ex)
|
|
||||||
{
|
|
||||||
parser.error_messages_.emplace_back(ex.what());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (kv.first == "stop-opacity")
|
else if (kv.first == "stop-opacity")
|
||||||
{
|
{
|
||||||
|
@ -856,14 +856,7 @@ void parse_gradient_stop(svg_parser & parser, xmlTextReaderPtr reader)
|
||||||
value = xmlTextReaderGetAttribute(reader, BAD_CAST "stop-color");
|
value = xmlTextReaderGetAttribute(reader, BAD_CAST "stop-color");
|
||||||
if (value)
|
if (value)
|
||||||
{
|
{
|
||||||
try
|
stop_color = parse_color(parser.error_messages_,(const char *) value);
|
||||||
{
|
|
||||||
stop_color = mapnik::parse_color((const char *) value);
|
|
||||||
}
|
|
||||||
catch (mapnik::config_error const& ex)
|
|
||||||
{
|
|
||||||
parser.error_messages_.emplace_back(ex.what());
|
|
||||||
}
|
|
||||||
xmlFree(value);
|
xmlFree(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue