Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 19499) +++ trunk/src/obj_pstk.c (revision 19500) @@ -150,6 +150,8 @@ pcb_box_bump_point(dst, ps->x - shape->data.circ.dia/2, ps->y - shape->data.circ.dia/2); pcb_box_bump_point(dst, ps->x + shape->data.circ.dia/2, ps->y + shape->data.circ.dia/2); break; + case PCB_PSSH_HSHADOW: + break; } } @@ -444,6 +446,8 @@ pcb_hid_set_line_cap(gc, pcb_cap_round); pcb_gui->fill_circle(gc, ps->x + shape->data.circ.x, ps->y + shape->data.circ.y, r); break; + case PCB_PSSH_HSHADOW: + break; } } @@ -466,6 +470,8 @@ r = MAX(shape->data.circ.dia/2 + dthick/2, 1); pcb_gui->draw_arc(gc, ps->x + shape->data.circ.x, ps->y + shape->data.circ.y, r, r, 0, 360); break; + case PCB_PSSH_HSHADOW: + break; } } @@ -749,6 +755,10 @@ pad.Clearance = 0; pad.Flags = pcb_flag_make(shape->data.line.square ? PCB_FLAG_SQUARE : 0); return isneg ? PCB_PAD_TOUCHES_BOX(&pad, box) : PCB_PAD_IN_BOX(&pad, box); + + case PCB_PSSH_HSHADOW: + return 0; + case PCB_PSSH_POLY: if (shape->data.poly.pa == NULL) pcb_pstk_shape_update_pa(&shape->data.poly); @@ -848,6 +858,8 @@ pcb_vector_t v; switch(shape->shape) { + case PCB_PSSH_HSHADOW: + return 0; case PCB_PSSH_CIRC: return PCB_POINT_IN_CIRCLE(x, y, ps->x + shape->data.circ.x, ps->y + shape->data.circ.y, shape->data.circ.dia/2 + radius); case PCB_PSSH_LINE: @@ -931,6 +943,8 @@ int n; switch(shp->shape) { + case PCB_PSSH_HSHADOW: + break; case PCB_PSSH_CIRC: dist = sqrt(shp->data.circ.x*shp->data.circ.x + shp->data.circ.y*shp->data.circ.y); neck = (double)(shp->data.circ.dia - hdia) / 2.0 - dist; Index: trunk/src/obj_pstk_proto.c =================================================================== --- trunk/src/obj_pstk_proto.c (revision 19499) +++ trunk/src/obj_pstk_proto.c (revision 19500) @@ -122,6 +122,7 @@ switch(src->shape[srci].shape) { case PCB_PSSH_LINE: case PCB_PSSH_CIRC: + case PCB_PSSH_HSHADOW: break; /* do nothing, all fields are copied already by the memcpy */ case PCB_PSSH_POLY: pcb_pstk_shape_alloc_poly(&ts->shape[idx].data.poly, src->shape[srci].data.poly.len); @@ -476,6 +477,7 @@ switch(src->shape) { case PCB_PSSH_LINE: case PCB_PSSH_CIRC: + case PCB_PSSH_HSHADOW: break; /* do nothing, all fields are copied already by the memcpy */ case PCB_PSSH_POLY: pcb_pstk_shape_alloc_poly(&dst->data.poly, src->data.poly.len); @@ -489,6 +491,7 @@ switch(s->shape) { case PCB_PSSH_LINE: case PCB_PSSH_CIRC: + case PCB_PSSH_HSHADOW: break; /* no allocation */ case PCB_PSSH_POLY: pcb_pstk_shape_free_poly(&s->data.poly); @@ -510,6 +513,7 @@ switch(ts_src->shape[n].shape) { case PCB_PSSH_LINE: case PCB_PSSH_CIRC: + case PCB_PSSH_HSHADOW: break; /* do nothing, all fields are copied already by the memcpy */ case PCB_PSSH_POLY: pcb_pstk_shape_alloc_poly(&ts_dst->shape[n].data.poly, ts_src->shape[n].data.poly.len); @@ -531,6 +535,8 @@ case PCB_PSSH_CIRC: pcb_rotate(&sh->data.circ.x, &sh->data.circ.y, 0, 0, cosa, sina); break; + case PCB_PSSH_HSHADOW: + break; case PCB_PSSH_POLY: if (sh->data.poly.pa != NULL) pcb_polyarea_free(&sh->data.poly.pa); @@ -565,6 +571,8 @@ case PCB_PSSH_CIRC: sh->data.circ.y = -sh->data.circ.y; break; + case PCB_PSSH_HSHADOW: + break; case PCB_PSSH_POLY: if (sh->data.poly.pa != NULL) pcb_polyarea_free(&sh->data.poly.pa); @@ -928,6 +936,8 @@ if (shp->data.circ.dia < 1) shp->data.circ.dia = 1; break; + case PCB_PSSH_HSHADOW: + break; case PCB_PSSH_POLY: pcb_pstk_poly_center(&shp->data.poly, &cx, &cy); pcb_polyarea_free(&shp->data.poly.pa); @@ -1061,6 +1071,8 @@ ret ^= pcb_hash_coord(sh->data.circ.x) ^ pcb_hash_coord(sh->data.circ.y); ret ^= pcb_hash_coord(sh->data.circ.dia); break; + case PCB_PSSH_HSHADOW: + break; } return ret; @@ -1105,6 +1117,8 @@ if (sh1->data.circ.y != sh2->data.circ.y) return 0; if (sh1->data.circ.dia != sh2->data.circ.dia) return 0; break; + case PCB_PSSH_HSHADOW: + break; } return 1; Index: trunk/src/obj_pstk_shape.h =================================================================== --- trunk/src/obj_pstk_shape.h (revision 19499) +++ trunk/src/obj_pstk_shape.h (revision 19500) @@ -60,7 +60,8 @@ enum { PCB_PSSH_POLY, PCB_PSSH_LINE, - PCB_PSSH_CIRC /* filled circle */ + PCB_PSSH_CIRC, /* filled circle */ + PCB_PSSH_HSHADOW /* for clearance: pretend the shape is the same as the drill's or slot's; but do not add anything positive to the target layer */ } shape; pcb_coord_t clearance; /* per layer clearance: internal layer clearance is sometimes different for production or insulation reasons (IPC2221A) */ } pcb_pstk_shape_t;