Index: trunk/src_plugins/sketch_route/spoke.c =================================================================== --- trunk/src_plugins/sketch_route/spoke.c (revision 18430) +++ trunk/src_plugins/sketch_route/spoke.c (revision 18431) @@ -24,45 +24,51 @@ vtp0_uninit(&sp->slots); } -void spoke_pos_at_wire_node(spoke_t *sp, wirelist_node_t *w_node, pcb_coord_t *x, pcb_coord_t *y) +static void spoke_pos(spoke_t *sp, pcb_coord_t spacing, pcb_coord_t *x, pcb_coord_t *y) { pcb_box_t *obj_bbox = &((pointdata_t *) sp->p->data)->obj->BoundingBox; pcb_coord_t half_obj_w, half_obj_h; - pcb_coord_t delta; - assert(w_node != NULL); - - delta = (w_node->item->thickness + 1)/2; - delta += conf_core.design.bloat; - w_node = w_node->next; - WIRELIST_FOREACH(w, w_node) - delta += w->thickness; - delta += conf_core.design.bloat; - WIRELIST_FOREACH_END(); - half_obj_w = (obj_bbox->X2 - obj_bbox->X1 + 1) / 2; half_obj_h = (obj_bbox->Y2 - obj_bbox->Y1 + 1) / 2; switch(sp->dir) { case SPOKE_DIR_1PI4: - *x = sp->p->pos.x + half_obj_w + delta; - *y = (-sp->p->pos.y) - half_obj_h - delta; + *x = sp->p->pos.x + half_obj_w + spacing; + *y = (-sp->p->pos.y) - half_obj_h - spacing; break; case SPOKE_DIR_3PI4: - *x = sp->p->pos.x - half_obj_w - delta; - *y = (-sp->p->pos.y) - half_obj_h - delta; + *x = sp->p->pos.x - half_obj_w - spacing; + *y = (-sp->p->pos.y) - half_obj_h - spacing; break; case SPOKE_DIR_5PI4: - *x = sp->p->pos.x - half_obj_w - delta; - *y = (-sp->p->pos.y) + half_obj_h + delta; + *x = sp->p->pos.x - half_obj_w - spacing; + *y = (-sp->p->pos.y) + half_obj_h + spacing; break; case SPOKE_DIR_7PI4: - *x = sp->p->pos.x + half_obj_w + delta; - *y = (-sp->p->pos.y) + half_obj_h + delta; + *x = sp->p->pos.x + half_obj_w + spacing; + *y = (-sp->p->pos.y) + half_obj_h + spacing; break; } } +void spoke_pos_at_wire_node(spoke_t *sp, wirelist_node_t *w_node, pcb_coord_t *x, pcb_coord_t *y) +{ + pcb_coord_t spacing; + + assert(w_node != NULL); + + spacing = (w_node->item->thickness + 1)/2; + spacing += conf_core.design.bloat; + w_node = w_node->next; + WIRELIST_FOREACH(w, w_node) + spacing += w->thickness; + spacing += conf_core.design.bloat; + WIRELIST_FOREACH_END(); + + spoke_pos(sp, delta, x, y); +} + void spoke_insert_wire_at_slot(spoke_t *sp, int slot_num, ewire_t *ew) { if (vtp0_in_bound(&sp->slots, slot_num) && sp->slots.array[slot_num] != NULL) {