Index: work/polydev/p.ccw.rect =================================================================== --- work/polydev/p.ccw.rect (revision 8208) +++ work/polydev/p.ccw.rect (revision 8209) @@ -1,3 +1,4 @@ +# the loader fixes ordering (internally contours are CW) polygon A 0 15 10 15 10 0 0 0 draw A check A Index: work/polydev/test.c =================================================================== --- work/polydev/test.c (revision 8208) +++ work/polydev/test.c (revision 8209) @@ -130,6 +130,13 @@ } } +static void fix_contour(pcb_pline_t *c) +{ + pcb_poly_contour_pre(c, 0); + if (c->Flags.orient != PCB_PLF_DIR) + pcb_poly_contour_inv(c); +} + pcb_polyarea_t *ply_parse(const char *vect) { pcb_pline_t *contour = NULL; @@ -152,6 +159,7 @@ if (*vect == 'h') { if (pa == NULL) { + fix_contour(contour); pa = pcb_poly_from_contour(contour); } else { @@ -180,6 +188,7 @@ } if (pa == NULL) { + fix_contour(contour); pa = pcb_poly_from_contour(contour); } else {