mirror of
https://github.com/mapnik/mapnik.git
synced 2025-12-08 20:13:09 +00:00
add basic cairo support
This commit is contained in:
parent
5678e55abf
commit
fec1d75e8e
@ -534,7 +534,7 @@ void render_grid(mapnik::Map const& map, double scaling_factor, QPixmap & pix)
|
||||
void render_cairo(mapnik::Map const& map, double scaling_factor, QPixmap & pix)
|
||||
{
|
||||
// FIXME
|
||||
#if 0 //def HAVE_CAIRO
|
||||
#ifdef HAVE_CAIRO
|
||||
mapnik::cairo_surface_ptr image_surface(cairo_image_surface_create(CAIRO_FORMAT_ARGB32,map.width(),map.height()),
|
||||
mapnik::cairo_surface_closer());
|
||||
mapnik::cairo_ptr cairo = mapnik::create_context(image_surface);
|
||||
|
||||
@ -80,6 +80,8 @@ void cairo_renderer<T>::process(debug_symbolizer const& sym,
|
||||
}
|
||||
else if (mode == DEBUG_SYM_MODE_VERTEX)
|
||||
{
|
||||
// FIXME
|
||||
#if 0
|
||||
for (auto const& geom : feature.paths())
|
||||
{
|
||||
double x;
|
||||
@ -100,6 +102,7 @@ void cairo_renderer<T>::process(debug_symbolizer const& sym,
|
||||
context_.stroke();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -118,6 +118,8 @@ void cairo_renderer<T>::process(line_pattern_symbolizer const& sym,
|
||||
if (simplify_tolerance > 0.0) converter.set<simplify_tag>(); // optional simplify converter
|
||||
if (smooth > 0.0) converter.set<smooth_tag>(); // optional smooth converter
|
||||
|
||||
// FIXME
|
||||
#if 0
|
||||
|
||||
for (auto const& geom : feature.paths())
|
||||
{
|
||||
@ -127,6 +129,7 @@ void cairo_renderer<T>::process(line_pattern_symbolizer const& sym,
|
||||
converter.apply(va);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
template void cairo_renderer<cairo_ptr>::process(line_pattern_symbolizer const&,
|
||||
|
||||
@ -95,14 +95,23 @@ void cairo_renderer<T>::process(line_symbolizer const& sym,
|
||||
if (simplify_tolerance > 0.0) converter.set<simplify_tag>(); // optional simplify converter
|
||||
if (smooth > 0.0) converter.set<smooth_tag>(); // optional smooth converter
|
||||
|
||||
for (geometry_type const& geom : feature.paths())
|
||||
mapnik::new_geometry::geometry const& geometry = feature.get_geometry();
|
||||
if (geometry.is<mapnik::new_geometry::line_string>())
|
||||
{
|
||||
if (geom.size() > 1)
|
||||
auto const& line = mapnik::util::get<mapnik::new_geometry::line_string>(geometry);
|
||||
mapnik::new_geometry::line_string_vertex_adapter va(line);
|
||||
converter.apply(va);
|
||||
}
|
||||
else if (geometry.is<mapnik::new_geometry::multi_line_string>())
|
||||
{
|
||||
auto const& multi_line = mapnik::util::get<mapnik::new_geometry::multi_line_string>(geometry);
|
||||
for (auto const& line : multi_line)
|
||||
{
|
||||
vertex_adapter va(geom);
|
||||
mapnik::new_geometry::line_string_vertex_adapter va(line);
|
||||
converter.apply(va);
|
||||
}
|
||||
}
|
||||
|
||||
// stroke
|
||||
context_.set_fill_rule(CAIRO_FILL_RULE_WINDING);
|
||||
context_.stroke();
|
||||
|
||||
@ -66,7 +66,8 @@ void cairo_renderer<T>::process(polygon_pattern_symbolizer const& sym,
|
||||
{
|
||||
double x0 = 0.0;
|
||||
double y0 = 0.0;
|
||||
|
||||
// FIXME
|
||||
#if 0
|
||||
if (feature.num_geometries() > 0)
|
||||
{
|
||||
using clipped_geometry_type = agg::conv_clip_polygon<vertex_adapter>;
|
||||
@ -80,6 +81,7 @@ void cairo_renderer<T>::process(polygon_pattern_symbolizer const& sym,
|
||||
}
|
||||
offset_x = std::abs(clip_box.width() - x0);
|
||||
offset_y = std::abs(clip_box.height() - y0);
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((*marker)->is_bitmap())
|
||||
@ -112,6 +114,8 @@ void cairo_renderer<T>::process(polygon_pattern_symbolizer const& sym,
|
||||
if (simplify_tolerance > 0.0) converter.set<simplify_tag>(); // optional simplify converter
|
||||
if (smooth > 0.0) converter.set<smooth_tag>(); // optional smooth converter
|
||||
|
||||
// FIXME
|
||||
#if 0
|
||||
for ( geometry_type const& geom : feature.paths())
|
||||
{
|
||||
if (geom.size() > 2)
|
||||
@ -120,6 +124,7 @@ void cairo_renderer<T>::process(polygon_pattern_symbolizer const& sym,
|
||||
converter.apply(va);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// fill polygon
|
||||
context_.set_fill_rule(CAIRO_FILL_RULE_EVEN_ODD);
|
||||
context_.fill();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user