On Thu Oct 26 21:53:04 2023 +0000, Jeffrey Smith wrote:
It seem that with this change `GdipIsOutlineVisiblePathPoint` performs World -> Device space conversion on both the path and point. `GdipIsVisiblePathPoint` (once fixed) is _also_ going to perform a World -> Device space conversion. So I think either world-space path & point should be passed (as they have been prior to your changes), or NULL should be passed for graphics here to keep if from applying a space conversion. In the latter case, whatever fix is found to deal with the quirks identified there may need to be duplicated here.
I think we should completely remove World -> Device space conversion from GdipIsOutlineVisiblePathPoint, e.g. by passing transformation=NULL to `GdipWidenPath`: `GdipWidenPath(wide_path, pen, NULL, 1.0);`.
As a result all conversion will be done in `GdipIsVisiblePathPoint`. It will simplify the code, and boost performance (no need to have redundant calculation in `GdipIsOutlineVisiblePathPoint`).``
I could help with that after merging this PR (which make sure there will be no regression in `GdipIsOutlineVisiblePathPoint`).