continue;
}
- for (int row = max2(p->y, 0); row < min2(p->y + v->height, page_height_int); row++)
+ int base_x = p->x; int base_y = p->y;
+ for (int dr = max2(0, 0-p->y); dr < v->height; dr++)
{
- for (int col = max2(p->x, 0); col < min2(p->x + v->width, page_width_int); col++)
+ for (int dc = max2(0, 0-p->x); dc < v->width; dc++)
{
- if (bitmap[row * page_width_int + col] == 1) total += 1;
- bitmap[row * page_width_int + col] = 1;
+ if (v->bitmap[dr * v->width + dc])
+ {
+ if (bitmap[(base_y + dr) * page_width_int + (base_x + dc)]) total += 1;
+ bitmap[(base_y + dr) * page_width_int + (base_x + dc)] = 1;
+ }
}
}
}