| diff --git a/third_party/agg23/agg_rasterizer_scanline_aa.cpp b/third_party/agg23/agg_rasterizer_scanline_aa.cpp |
| index c90bdafdd..1fe9a0c32 100644 |
| --- a/third_party/agg23/agg_rasterizer_scanline_aa.cpp |
| +++ b/third_party/agg23/agg_rasterizer_scanline_aa.cpp |
| @@ -495,4 +495,11 @@ void outline_aa::sort_cells() |
| } |
| m_sorted = true; |
| } |
| +// static |
| +int rasterizer_scanline_aa::calculate_area(int cover, int shift) |
| +{ |
| + unsigned int result = cover; |
| + result <<= shift; |
| + return result; |
| +} |
| } |
| diff --git a/third_party/agg23/agg_rasterizer_scanline_aa.h b/third_party/agg23/agg_rasterizer_scanline_aa.h |
| index c747ee379..281933710 100644 |
| --- a/third_party/agg23/agg_rasterizer_scanline_aa.h |
| +++ b/third_party/agg23/agg_rasterizer_scanline_aa.h |
| @@ -338,7 +338,6 @@ public: |
| const cell_aa* cur_cell = *cells; |
| int x = cur_cell->x; |
| int area = cur_cell->area; |
| - unsigned alpha; |
| cover += cur_cell->cover; |
| while(--num_cells) { |
| cur_cell = *++cells; |
| @@ -349,14 +348,14 @@ public: |
| cover += cur_cell->cover; |
| } |
| if(area) { |
| - alpha = calculate_alpha((cover << (poly_base_shift + 1)) - area, no_smooth); |
| + unsigned alpha = calculate_alpha(calculate_area(cover, poly_base_shift + 1) - area, no_smooth); |
| if(alpha) { |
| sl.add_cell(x, alpha); |
| } |
| x++; |
| } |
| if(num_cells && cur_cell->x > x) { |
| - alpha = calculate_alpha(cover << (poly_base_shift + 1), no_smooth); |
| + unsigned alpha = calculate_alpha(calculate_area(cover, poly_base_shift + 1), no_smooth); |
| if(alpha) { |
| sl.add_span(x, cur_cell->x - x, alpha); |
| } |
| @@ -459,6 +458,8 @@ private: |
| m_prev_y = y; |
| } |
| private: |
| + static int calculate_area(int cover, int shift); |
| + |
| outline_aa m_outline; |
| filling_rule_e m_filling_rule; |
| int m_clipped_start_x; |