kicad-developers team mailing list archive
Mailing list archive
Re: PCBNew: Segments/polygons not rendered correctly (from Bug 1806411])
Am 2018-12-18 07:15, schrieb jp charras:
Le 17/12/2018 à 22:26, Seth Hillbrand a écrit :
Am 2018-12-17 08:47, schrieb jp charras:
Note the incorrect rendering happens only when footprints are
Thank you for the samples. I had coded the tesselation assuming the
copper layers, which always have the polygon in CW order for the
and CCW for the holes. But flipped footprints put the line chain in
reverse order, so they render incorrectly.
I've added some checks for the winding order to the code and
the polygon caching. Let me know if you see any issues.
Could you have a look into my commit 388397f97.
I want to be sure I did not break your code.
I modified Gerbview to use your tesselation.
During my tests, I found a crash with degenerated polygons (having less
than 3 corners).
That should not cause any issues. But I think it is degenerate with the
test immediately following:
if( !firstVertex || firstVertex->prev == firstVertex->next )
I've adjusted the CacheTriangulation() routine to correctly handle the
case when tessellation fails. Specifically, it will set
m_triangulationValid=false if any of the polygons fail triangulation.
This should work because DrawPolygon() falls back to the built-in OpenGL
triangulation if the triangulation is not cached. The exception is in
the 3dviewer, which does not draw polygons. For this reason, we still
attempt the remaining triangulation even after we set the failure flag.
Let me know if you see any issues.