Index: trunk/src/action_helper.c =================================================================== --- trunk/src/action_helper.c (revision 11679) +++ trunk/src/action_helper.c (revision 11680) @@ -952,7 +952,9 @@ pcb_crosshair.AttachedBox.Point1.X, pcb_crosshair.AttachedBox.Point1.Y, pcb_crosshair.AttachedBox.Point2.X, - pcb_crosshair.AttachedBox.Point2.Y, pcb_flag_make(flags))) != NULL) { + pcb_crosshair.AttachedBox.Point2.Y, + 2 * conf_core.design.clearance, + pcb_flag_make(flags))) != NULL) { pcb_obj_add_attribs(polygon, PCB->pen_attr); pcb_undo_add_obj_to_create(PCB_TYPE_POLYGON, CURRENT, polygon, polygon); pcb_undo_inc_serial(); Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 11679) +++ trunk/src/obj_poly.c (revision 11680) @@ -194,9 +194,9 @@ } /* creates a new polygon from the old formats rectangle data */ -pcb_polygon_t *pcb_poly_new_from_rectangle(pcb_layer_t *Layer, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_flag_t Flags) +pcb_polygon_t *pcb_poly_new_from_rectangle(pcb_layer_t *Layer, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_coord_t Clearance, pcb_flag_t Flags) { - pcb_polygon_t *polygon = pcb_poly_new(Layer, Flags); + pcb_polygon_t *polygon = pcb_poly_new(Layer, Clearance, Flags); if (!polygon) return (polygon); @@ -219,7 +219,7 @@ } /* creates a new polygon on a layer */ -pcb_polygon_t *pcb_poly_new(pcb_layer_t *Layer, pcb_flag_t Flags) +pcb_polygon_t *pcb_poly_new(pcb_layer_t *Layer, pcb_coord_t Clearance, pcb_flag_t Flags) { pcb_polygon_t *polygon = pcb_poly_alloc(Layer); @@ -226,6 +226,7 @@ /* copy values */ polygon->Flags = Flags; polygon->ID = pcb_create_ID_get(); + polygon->Clearance = Clearance; polygon->Clipped = NULL; polygon->NoHoles = NULL; polygon->NoHolesValid = 0; @@ -243,7 +244,7 @@ pcb_polygon_t *pcb_poly_dup(pcb_layer_t *dst, pcb_polygon_t *src) { pcb_board_t *pcb; - pcb_polygon_t *p = pcb_poly_new(dst, src->Flags); + pcb_polygon_t *p = pcb_poly_new(dst, src->Clearance, src->Flags); pcb_poly_copy(p, src, 0, 0); pcb_add_polygon_on_layer(dst, p); pcb_poly_copy_meta(p, src); @@ -257,7 +258,7 @@ pcb_polygon_t *pcb_poly_dup_at(pcb_layer_t *dst, pcb_polygon_t *src, pcb_coord_t dx, pcb_coord_t dy) { pcb_board_t *pcb; - pcb_polygon_t *p = pcb_poly_new(dst, src->Flags); + pcb_polygon_t *p = pcb_poly_new(dst, src->Clearance, src->Flags); pcb_poly_copy(p, src, dx, dy); pcb_add_polygon_on_layer(dst, p); pcb_poly_copy_meta(p, src); @@ -350,7 +351,7 @@ pcb_layer_t *layer = &ctx->buffer.dst->Layer[pcb_layer_id(ctx->buffer.src, Layer)]; pcb_polygon_t *polygon; - polygon = pcb_poly_new(layer, Polygon->Flags); + polygon = pcb_poly_new(layer, Polygon->Clearance, Polygon->Flags); pcb_poly_copy(polygon, Polygon, 0, 0); pcb_poly_copy_meta(polygon, Polygon); @@ -766,7 +767,7 @@ { pcb_polygon_t *polygon; - polygon = pcb_poly_new(Layer, pcb_no_flags()); + polygon = pcb_poly_new(Layer, Polygon->Clearance, pcb_no_flags()); pcb_poly_copy(polygon, Polygon, ctx->copy.DeltaX, ctx->copy.DeltaY); pcb_poly_copy_meta(polygon, Polygon); if (!Layer->polygon_tree) Index: trunk/src/obj_poly.h =================================================================== --- trunk/src/obj_poly.h (revision 11679) +++ trunk/src/obj_poly.h (revision 11680) @@ -56,8 +56,8 @@ void pcb_poly_free_fields(pcb_polygon_t * polygon); void pcb_poly_bbox(pcb_polygon_t *Polygon); -pcb_polygon_t *pcb_poly_new_from_rectangle(pcb_layer_t *Layer, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_flag_t Flags); -pcb_polygon_t *pcb_poly_new(pcb_layer_t *Layer, pcb_flag_t Flags); +pcb_polygon_t *pcb_poly_new_from_rectangle(pcb_layer_t *Layer, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_coord_t Clearance, pcb_flag_t Flags); +pcb_polygon_t *pcb_poly_new(pcb_layer_t *Layer, pcb_coord_t Clearance, pcb_flag_t Flags); pcb_polygon_t *pcb_poly_dup(pcb_layer_t *dst, pcb_polygon_t *src); pcb_polygon_t *pcb_poly_dup_at(pcb_layer_t *dst, pcb_polygon_t *src, pcb_coord_t dx, pcb_coord_t dy); pcb_point_t *pcb_poly_point_new(pcb_polygon_t *Polygon, pcb_coord_t X, pcb_coord_t Y); Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 11679) +++ trunk/src/obj_subc.c (revision 11680) @@ -202,7 +202,7 @@ pcb_sqline_to_rect(line, x, y); - poly = pcb_poly_new(dst, pcb_no_flags()); + poly = pcb_poly_new(dst, line->Clearance, pcb_no_flags()); for(n = 0; n < 4; n++) pcb_poly_point_new(poly, x[n], y[n]); pcb_add_polygon_on_layer(dst, poly); Index: trunk/src/polygon.c =================================================================== --- trunk/src/polygon.c (revision 11679) +++ trunk/src/polygon.c (revision 11680) @@ -1515,7 +1515,7 @@ int saveID; /* move data to layer and clear attached struct */ - polygon = pcb_poly_new(CURRENT, pcb_no_flags()); + polygon = pcb_poly_new(CURRENT, 2 * conf_core.design.clearance, pcb_no_flags()); saveID = polygon->ID; poly_copy_data(polygon, &pcb_crosshair.AttachedPolygon); polygon->ID = saveID; @@ -2004,7 +2004,7 @@ pcb_polygon_t *newone; if (p->contours->area > PCB->IsleArea) { - newone = pcb_poly_new(layer, flags); + newone = pcb_poly_new(layer, poly->Clearance, flags); if (!newone) return pcb_false; many = pcb_true; @@ -2098,7 +2098,7 @@ pa = Input; do { - Polygon = pcb_poly_new(Layer, Flags); + Polygon = pcb_poly_new(Layer, 2 * conf_core.design.clearance, Flags); pline = pa->contours; outer = pcb_true; Index: trunk/src_plugins/fontmode/fontmode.c =================================================================== --- trunk/src_plugins/fontmode/fontmode.c (revision 11679) +++ trunk/src_plugins/fontmode/fontmode.c (revision 11680) @@ -84,7 +84,7 @@ pcb_polygon_t *np; /* alloc */ - np = pcb_poly_new(layer, pcb_no_flags()); + np = pcb_poly_new(layer, 0, pcb_no_flags()); pcb_poly_copy(np, poly, ox, oy); /* add */ Index: trunk/src_plugins/io_autotrax/read.c =================================================================== --- trunk/src_plugins/io_autotrax/read.c (revision 11679) +++ trunk/src_plugins/io_autotrax/read.c (revision 11680) @@ -690,7 +690,7 @@ } if (PCB_layer >= 0 && el == NULL) { - polygon = pcb_poly_new(&st->pcb->Data->Layer[PCB_layer], flags); + polygon = pcb_poly_new(&st->pcb->Data->Layer[PCB_layer], 0, flags); } else if (PCB_layer < 0 && el == NULL){ pcb_message(PCB_MSG_ERROR, "Invalid free fill layer found, %s:%d\n", st->Filename, st->lineno); } Index: trunk/src_plugins/io_eagle/read.c =================================================================== --- trunk/src_plugins/io_eagle/read.c (revision 11679) +++ trunk/src_plugins/io_eagle/read.c (revision 11680) @@ -1062,7 +1062,7 @@ return 0; } - poly = pcb_poly_new(&st->pcb->Data->Layer[ly->ly], pcb_flag_make(PCB_FLAG_CLEARPOLY)); + poly = pcb_poly_new(&st->pcb->Data->Layer[ly->ly], 0, pcb_flag_make(PCB_FLAG_CLEARPOLY)); for(n = CHILDREN(subtree); n != NULL; n = NEXT(n)) { if (STRCMP(NODENAME(n), "vertex") == 0) { Index: trunk/src_plugins/io_kicad/read.c =================================================================== --- trunk/src_plugins/io_kicad/read.c (revision 11679) +++ trunk/src_plugins/io_kicad/read.c (revision 11680) @@ -2144,7 +2144,7 @@ if (PCBLayer < 0) { return kicad_warning(subtree, "parse error: zone layer <0."); } - polygon = pcb_poly_new(&st->PCB->Data->Layer[PCBLayer], flags); + polygon = pcb_poly_new(&st->PCB->Data->Layer[PCBLayer], 0, flags); } else { return kicad_error(subtree, "unexpected zone layer null node."); } Index: trunk/src_plugins/io_pcb/parse_y.c =================================================================== --- trunk/src_plugins/io_pcb/parse_y.c (revision 11679) +++ trunk/src_plugins/io_pcb/parse_y.c (revision 11680) @@ -2256,7 +2256,7 @@ #line 927 "parse_y.y" /* yacc.c:1646 */ { pcb_poly_new_from_rectangle(Layer, - OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-5].measure)) + OU ((yyvsp[-3].measure)), OU ((yyvsp[-4].measure)) + OU ((yyvsp[-2].measure)), pcb_flag_old((yyvsp[-1].integer))); + OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-5].measure)) + OU ((yyvsp[-3].measure)), OU ((yyvsp[-4].measure)) + OU ((yyvsp[-2].measure)), 0, pcb_flag_old((yyvsp[-1].integer))); } #line 2262 "parse_y.c" /* yacc.c:1646 */ break; @@ -2379,7 +2379,7 @@ case 101: #line 1164 "parse_y.y" /* yacc.c:1646 */ { - Polygon = pcb_poly_new(Layer, (yyvsp[-2].flagtype)); + Polygon = pcb_poly_new(Layer, 0, (yyvsp[-2].flagtype)); } #line 2385 "parse_y.c" /* yacc.c:1646 */ break; Index: trunk/src_plugins/io_pcb/parse_y.y =================================================================== --- trunk/src_plugins/io_pcb/parse_y.y (revision 11679) +++ trunk/src_plugins/io_pcb/parse_y.y (revision 11680) @@ -926,7 +926,7 @@ | T_RECTANGLE '(' measure measure measure measure INTEGER ')' { pcb_poly_new_from_rectangle(Layer, - OU ($3), OU ($4), OU ($3) + OU ($5), OU ($4) + OU ($6), pcb_flag_old($7)); + OU ($3), OU ($4), OU ($3) + OU ($5), OU ($4) + OU ($6), 0, pcb_flag_old($7)); } | text_hi_format | text_newformat @@ -1162,7 +1162,7 @@ : /* flags are passed in */ T_POLYGON '(' flags ')' '(' { - Polygon = pcb_poly_new(Layer, $3); + Polygon = pcb_poly_new(Layer, 0, $3); } polygonpoints polygonholes ')' Index: trunk/src_plugins/lib_gtk_common/dlg_propedit.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_propedit.c (revision 11679) +++ trunk/src_plugins/lib_gtk_common/dlg_propedit.c (revision 11680) @@ -347,7 +347,7 @@ v = pcb_poly_new_from_rectangle(preview_pcb.Data->Layer + 0, PCB_MIL_TO_COORD(10), PCB_MIL_TO_COORD(10), PCB_MIL_TO_COORD(1200), PCB_MIL_TO_COORD(1200), - pcb_flag_make(PCB_FLAG_CLEARPOLY)); + 0, pcb_flag_make(PCB_FLAG_CLEARPOLY)); pcb_poly_init_clip(preview_pcb.Data, preview_pcb.Data->Layer + 0, v); PCB = old_pcb; Index: trunk/src_plugins/millpath/toolpath.c =================================================================== --- trunk/src_plugins/millpath/toolpath.c (revision 11679) +++ trunk/src_plugins/millpath/toolpath.c (revision 11680) @@ -179,10 +179,10 @@ pcb_box_bump_box(&otlbb, (pcb_box_t *)arc); pcb_r_end(&it); } - result->fill = pcb_poly_new_from_rectangle(result->res_ply, otlbb.X1, otlbb.Y1, otlbb.X2, otlbb.Y2, pcb_flag_make(PCB_FLAG_FULLPOLY)); + result->fill = pcb_poly_new_from_rectangle(result->res_ply, otlbb.X1, otlbb.Y1, otlbb.X2, otlbb.Y2, 0, pcb_flag_make(PCB_FLAG_FULLPOLY)); } else - result->fill = pcb_poly_new_from_rectangle(result->res_ply, 0, 0, pcb->MaxWidth, pcb->MaxHeight, pcb_flag_make(PCB_FLAG_FULLPOLY)); + result->fill = pcb_poly_new_from_rectangle(result->res_ply, 0, 0, pcb->MaxWidth, pcb->MaxHeight, 0, pcb_flag_make(PCB_FLAG_FULLPOLY)); pcb_poly_init_clip(pcb->Data, result->res_ply, result->fill);