Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 19386) +++ trunk/src/obj_arc.c (revision 19387) @@ -873,8 +873,10 @@ } } -void pcb_arc_draw_(pcb_arc_t * arc, int allow_term_gfx) +void pcb_arc_draw_(pcb_draw_info_t *info, pcb_arc_t *arc, int allow_term_gfx) { + pcb_coord_t thickness = arc->Thickness; + if (!arc->Thickness) return; @@ -883,6 +885,12 @@ return; } + if ((info != NULL) && (info->xform != NULL) && (info->xform->bloat != 0)) { + thickness += info->xform->bloat; + if (thickness < 1) + thickness = 1; + } + PCB_DRAW_BBOX(arc); if (!conf_core.editor.thin_draw && !conf_core.editor.wireframe_draw) @@ -889,12 +897,12 @@ { if ((allow_term_gfx) && pcb_draw_term_need_gfx(arc)) { pcb_hid_set_line_cap(pcb_draw_out.active_padGC, pcb_cap_round); - pcb_hid_set_line_width(pcb_draw_out.active_padGC, arc->Thickness); + pcb_hid_set_line_width(pcb_draw_out.active_padGC, thickness); pcb_gui->draw_arc(pcb_draw_out.active_padGC, arc->X, arc->Y, arc->Width, arc->Height, arc->StartAngle, arc->Delta); pcb_hid_set_line_width(pcb_draw_out.fgGC, PCB_DRAW_TERM_GFX_WIDTH); } else - pcb_hid_set_line_width(pcb_draw_out.fgGC, arc->Thickness); + pcb_hid_set_line_width(pcb_draw_out.fgGC, thickness); pcb_hid_set_line_cap(pcb_draw_out.fgGC, pcb_cap_round); pcb_gui->draw_arc(pcb_draw_out.fgGC, arc->X, arc->Y, arc->Width, arc->Height, arc->StartAngle, arc->Delta); } @@ -915,7 +923,7 @@ } } -static void pcb_arc_draw(pcb_arc_t *arc, int allow_term_gfx) +static void pcb_arc_draw(pcb_draw_info_t *info, pcb_arc_t *arc, int allow_term_gfx) { const char *color; char buf[sizeof("#XXXXXX")]; @@ -947,12 +955,13 @@ color = buf; } pcb_gui->set_color(pcb_draw_out.fgGC, color); - pcb_arc_draw_(arc, allow_term_gfx); + pcb_arc_draw_(info, arc, allow_term_gfx); } pcb_r_dir_t pcb_arc_draw_callback(const pcb_box_t * b, void *cl) { pcb_arc_t *arc = (pcb_arc_t *)b; + pcb_draw_info_t *info = cl; if (pcb_hidden_floater((pcb_any_obj_t*)b)) return PCB_R_DIR_FOUND_CONTINUE; @@ -960,7 +969,7 @@ if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(arc->parent_type, &arc->parent)) return PCB_R_DIR_NOT_FOUND; - pcb_arc_draw(arc, 0); + pcb_arc_draw(info, arc, 0); return PCB_R_DIR_FOUND_CONTINUE; } @@ -967,6 +976,7 @@ pcb_r_dir_t pcb_arc_draw_term_callback(const pcb_box_t * b, void *cl) { pcb_arc_t *arc = (pcb_arc_t *)b; + pcb_draw_info_t *info = cl; if (pcb_hidden_floater((pcb_any_obj_t*)b)) return PCB_R_DIR_FOUND_CONTINUE; @@ -974,7 +984,7 @@ if (!PCB->SubcPartsOn && pcb_lobj_parent_subc(arc->parent_type, &arc->parent)) return PCB_R_DIR_NOT_FOUND; - pcb_arc_draw(arc, 1); + pcb_arc_draw(info, arc, 1); return PCB_R_DIR_FOUND_CONTINUE; } Index: trunk/src/obj_arc_draw.h =================================================================== --- trunk/src/obj_arc_draw.h (revision 19386) +++ trunk/src/obj_arc_draw.h (revision 19387) @@ -28,6 +28,8 @@ /*** Standard draw of arcs ***/ +#include "draw.h" + /* Include rtree.h for this */ #ifdef PCB_RTREE_H pcb_r_dir_t pcb_arc_draw_callback(const pcb_box_t * b, void *cl); @@ -34,7 +36,7 @@ pcb_r_dir_t pcb_arc_draw_term_callback(const pcb_box_t * b, void *cl); #endif -void pcb_arc_draw_(pcb_arc_t * arc, int allow_term_gfx); +void pcb_arc_draw_(pcb_draw_info_t *info, pcb_arc_t *arc, int allow_term_gfx); void pcb_arc_invalidate_erase(pcb_arc_t *Arc); void pcb_arc_invalidate_draw(pcb_layer_t *Layer, pcb_arc_t *Arc); void pcb_arc_name_invalidate_draw(pcb_arc_t *arc); Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 19386) +++ trunk/src/obj_text.c (revision 19387) @@ -994,7 +994,7 @@ if (xordraw) pcb_gui->draw_arc(pcb_crosshair.GC, xordx + newarc.X, xordy + newarc.Y, newarc.Width, newarc.Height, newarc.StartAngle, newarc.Delta); else - pcb_arc_draw_(&newarc, 0); + pcb_arc_draw_(info, &newarc, 0); } /* draw the polygons */