Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 00acff2

Browse files
committed
Fix the clippath renderering so that it uses no-clip unsigned chars
1 parent ff749cb commit 00acff2

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

src/_backend_agg.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -422,9 +422,8 @@ RendererAgg::create_alpha_buffers()
422422
{
423423
if (!alphaBuffer)
424424
{
425-
unsigned stride(width*4);
426-
alphaBuffer = new agg::int8u[NUMBYTES];
427-
alphaMaskRenderingBuffer.attach(alphaBuffer, width, height, stride);
425+
alphaBuffer = new agg::int8u[width * height];
426+
alphaMaskRenderingBuffer.attach(alphaBuffer, width, height, width);
428427
rendererBaseAlphaMask.attach(pixfmtAlphaMask);
429428
rendererAlphaMask.attach(rendererBaseAlphaMask);
430429
}
@@ -1120,7 +1119,7 @@ RendererAgg::draw_image(const Py::Tuple& args)
11201119
renderer_type_alpha ri(r, sa, spans);
11211120

11221121
theRasterizer.add_path(rect2);
1123-
agg::render_scanlines(theRasterizer, slineP8, ri);
1122+
agg::render_scanlines(theRasterizer, scanlineAlphaMask, ri);
11241123
}
11251124
else
11261125
{
@@ -1178,7 +1177,7 @@ void RendererAgg::_draw_path(path_t& path, bool has_clippath,
11781177
amask_ren_type r(pfa);
11791178
amask_aa_renderer_type ren(r);
11801179
ren.color(face.second);
1181-
agg::render_scanlines(theRasterizer, slineP8, ren);
1180+
agg::render_scanlines(theRasterizer, scanlineAlphaMask, ren);
11821181
}
11831182
else
11841183
{
@@ -1194,7 +1193,7 @@ void RendererAgg::_draw_path(path_t& path, bool has_clippath,
11941193
amask_ren_type r(pfa);
11951194
amask_bin_renderer_type ren(r);
11961195
ren.color(face.second);
1197-
agg::render_scanlines(theRasterizer, slineP8, ren);
1196+
agg::render_scanlines(theRasterizer, scanlineAlphaMask, ren);
11981197
}
11991198
else
12001199
{
@@ -1304,7 +1303,7 @@ void RendererAgg::_draw_path(path_t& path, bool has_clippath,
13041303
amask_ren_type r(pfa);
13051304
amask_aa_renderer_type ren(r);
13061305
ren.color(gc.color);
1307-
agg::render_scanlines(theRasterizer, slineP8, ren);
1306+
agg::render_scanlines(theRasterizer, scanlineAlphaMask, ren);
13081307
}
13091308
else
13101309
{
@@ -1320,7 +1319,7 @@ void RendererAgg::_draw_path(path_t& path, bool has_clippath,
13201319
amask_ren_type r(pfa);
13211320
amask_bin_renderer_type ren(r);
13221321
ren.color(gc.color);
1323-
agg::render_scanlines(theRasterizer, slineP8, ren);
1322+
agg::render_scanlines(theRasterizer, scanlineAlphaMask, ren);
13241323
}
13251324
else
13261325
{
@@ -1902,7 +1901,7 @@ RendererAgg::_draw_gouraud_triangle(const double* points,
19021901
pixfmt_amask_type pfa(pixFmt, alphaMask);
19031902
amask_ren_type r(pfa);
19041903
amask_aa_renderer_type ren(r, span_alloc, span_gen);
1905-
agg::render_scanlines(theRasterizer, slineP8, ren);
1904+
agg::render_scanlines(theRasterizer, scanlineAlphaMask, ren);
19061905
}
19071906
else
19081907
{

src/_backend_agg.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ typedef agg::rasterizer_scanline_aa<agg::rasterizer_sl_clip_dbl> rasterizer;
6262
typedef agg::scanline_p8 scanline_p8;
6363
typedef agg::scanline_bin scanline_bin;
6464
typedef agg::amask_no_clip_gray8 alpha_mask_type;
65+
typedef agg::scanline_u8_am<alpha_mask_type> scanline_am;
6566

6667
typedef agg::renderer_base<agg::pixfmt_gray8> renderer_base_alpha_mask_type;
6768
typedef agg::renderer_scanline_aa_solid<renderer_base_alpha_mask_type> renderer_alpha_mask_type;
@@ -215,7 +216,7 @@ class RendererAgg: public Py::PythonExtension<RendererAgg>
215216
agg::pixfmt_gray8 pixfmtAlphaMask;
216217
renderer_base_alpha_mask_type rendererBaseAlphaMask;
217218
renderer_alpha_mask_type rendererAlphaMask;
218-
agg::scanline_p8 scanlineAlphaMask;
219+
scanline_am scanlineAlphaMask;
219220

220221
scanline_p8 slineP8;
221222
scanline_bin slineBin;

0 commit comments

Comments
 (0)