Index: find_geo.c =================================================================== --- find_geo.c (revision 26576) +++ find_geo.c (revision 26577) @@ -917,9 +917,8 @@ return shp; } -PCB_INLINE pcb_bool_t pcb_isc_pstk_poly(pcb_pstk_t *ps, pcb_poly_t *poly) +PCB_INLINE pcb_bool_t pcb_isc_pstk_poly_shp(pcb_pstk_t *ps, pcb_poly_t *poly, pcb_pstk_shape_t *shape) { - pcb_pstk_shape_t *shape = pcb_pstk_shape_at(PCB, ps, poly->parent.layer); if (shape == NULL) return pcb_false; switch(shape->shape) { @@ -956,6 +955,26 @@ return pcb_false; } +PCB_INLINE pcb_bool_t pcb_isc_pstk_poly(pcb_pstk_t *ps, pcb_poly_t *poly) +{ + pcb_pstk_shape_t *shape; + pcb_pstk_proto_t *proto; + + shape = pcb_pstk_shape_at(PCB, ps, poly->parent.layer); + if (pcb_isc_pstk_poly_shp(ps, poly, shape)) + return pcb_true; + + proto = pcb_pstk_get_proto(ps); + if (proto->hplated) { + shape = pcb_pstk_shape_mech_at(PCB, ps, poly->parent.layer); + if (pcb_isc_pstk_poly_shp(ps, poly, shape)) + return pcb_true; + } + + return pcb_false; +} + + PCB_INLINE pcb_bool_t pstk_shape_isc_circ_poly(pcb_pstk_t *p, pcb_pstk_shape_t *sp, pcb_pstk_t *c, pcb_pstk_shape_t *sc) { pcb_coord_t px = sc->data.circ.x + c->x - p->x;