Skip to content

Commit 3fb41e8

Browse files
author
Dane Springmeyer
committed
fix outline drawing in debugsymbolizer ring mode
1 parent cdb9a2e commit 3fb41e8

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

src/agg/process_debug_symbolizer.cpp

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,13 @@ struct apply_vertex_mode
103103
template <typename BufferType>
104104
struct RingRenderer {
105105

106-
using ren_base = agg::renderer_base<agg::pixfmt_rgba32_pre>;
107-
using renderer = agg::renderer_scanline_aa_solid<ren_base>;
106+
using color_type = agg::rgba8;
107+
using order_type = agg::order_rgba;
108+
using blender_type = agg::comp_op_adaptor_rgba_pre<color_type, order_type>; // comp blender
109+
using pixfmt_comp_type = agg::pixfmt_custom_blend_rgba<blender_type, agg::rendering_buffer>;
110+
using renderer_base = agg::renderer_base<pixfmt_comp_type>;
111+
using renderer_type = agg::renderer_scanline_aa_solid<renderer_base>;
112+
108113
using path_type = transform_path_adapter<view_transform, geometry::ring_vertex_adapter>;
109114

110115
RingRenderer(rasterizer & ras_ptr,
@@ -122,25 +127,26 @@ struct RingRenderer {
122127
{
123128
ras_ptr_.reset();
124129
agg::rendering_buffer buf(im_.getBytes(),im_.width(),im_.height(),im_.getRowSize());
125-
agg::pixfmt_rgba32_pre pixf(buf);
126-
ren_base renb(pixf);
127-
renderer ren(renb);
130+
pixfmt_comp_type pixf(buf);
131+
renderer_base renb(pixf);
132+
renderer_type ren(renb);
128133
geometry::ring_vertex_adapter va(ring);
129134
path_type path(tr_,va,prj_trans_);
130135
ras_ptr_.add_path(path);
136+
ras_ptr_.filling_rule(agg::fill_non_zero);
131137
ren.color(color);
132138
agg::render_scanlines(ras_ptr_, sl_, ren);
133139
}
134140

135141
void draw_outline(geometry::linear_ring const& ring,
136142
agg::rgba8 const& color,
137-
double stroke_width)
143+
double stroke_width=3)
138144
{
139145
ras_ptr_.reset();
140146
agg::rendering_buffer buf(im_.getBytes(),im_.width(),im_.height(),im_.getRowSize());
141-
agg::pixfmt_rgba32_pre pixf(buf);
142-
ren_base renb(pixf);
143-
renderer ren(renb);
147+
pixfmt_comp_type pixf(buf);
148+
renderer_base renb(pixf);
149+
renderer_type ren(renb);
144150
geometry::ring_vertex_adapter va(ring);
145151
path_type path(tr_,va,prj_trans_);
146152
agg::conv_stroke<path_type> stroke(path);
@@ -174,20 +180,20 @@ struct render_ring_visitor {
174180

175181
void operator()(mapnik::geometry::polygon const& geom)
176182
{
177-
agg::rgba8 red(255, 0, 0, 255);
178-
agg::rgba8 green(0, 255, 255, 255);
179-
agg::rgba black(0,0,0,255);
183+
agg::rgba8 red(255,0,0,255);
184+
agg::rgba8 green(0,255,255,255);
185+
agg::rgba8 black(0,0,0,255);
180186
renderer_.draw_ring(geom.exterior_ring,red);
181187
if (mapnik::util::is_clockwise(geom.exterior_ring))
182188
{
183-
renderer_.draw_outline(geom.exterior_ring,black,2);
189+
renderer_.draw_outline(geom.exterior_ring,black);
184190
}
185191
for (auto const& ring : geom.interior_rings)
186192
{
187193
renderer_.draw_ring(ring,green);
188194
if (!mapnik::util::is_clockwise(ring))
189195
{
190-
renderer_.draw_outline(ring,black,2);
196+
renderer_.draw_outline(ring,black);
191197
}
192198
}
193199
}

0 commit comments

Comments
 (0)