You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.1 KiB
55 lines
2.1 KiB
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;
|