On Sat Sep 28 19:59:05 2024 +0000, Nikolay Sivov wrote:
It wouldn't consider it sufficient, it's clear that there is more to it than copying data from individual geometries. So the question is the same - what needs to be done to make it work properly, once it's understood, we could implement it partially if it's too hard to do properly.
I think the current implementation is only incorrect when the fill mode is D2D1_FILL_MODE_ALTERNATE (0) (aka Even-Odd), but correct for D2D1_FILL_MODE_WINDING (1). More specifically, when the fill mode is ALTERNATE *and* there are intersections - for all of the other three cases (WINDING with and without intersections, ALTERNATE without), it is correct.
According to my experience, even-odd fill mode is quite uncommon. Having an implementation which is correct 99% of the time in real-world usage, and leaving the remainder with an explicit, verbose FIXME is an definitive improvement. Today, the result is always incorrect.