Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 5111) +++ trunk/src/buffer.c (revision 5112) @@ -305,10 +305,7 @@ PCB_ENDALL_LOOP; PCB_ARC_ALL_LOOP(Buffer->Data); { - pcb_r_delete_entry(layer->arc_tree, (pcb_box_t *) arc); - pcb_rotate(&arc->X, &arc->Y, Buffer->X, Buffer->Y, cosa, sina); - arc->StartAngle = pcb_normalize_angle(arc->StartAngle + angle); - pcb_r_insert_entry(layer->arc_tree, (pcb_box_t *) arc, 0); + pcb_arc_rotate(layer, arc, Buffer->X, Buffer->Y, cosa, sina, angle); } PCB_ENDALL_LOOP; /* FIXME: rotate text */ Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 5111) +++ trunk/src/obj_arc.c (revision 5112) @@ -540,6 +540,14 @@ pcb_box_rotate90(&Arc->BoundingBox, X, Y, Number); } +void pcb_arc_rotate(pcb_layer_t *layer, pcb_arc_t *arc, pcb_coord_t X, pcb_coord_t Y, double cosa, double sina, pcb_angle_t angle) +{ + pcb_r_delete_entry(layer->arc_tree, (pcb_box_t *) arc); + pcb_rotate(&arc->X, &arc->Y, X, Y, cosa, sina); + arc->StartAngle = pcb_normalize_angle(arc->StartAngle + angle); + pcb_r_insert_entry(layer->arc_tree, (pcb_box_t *) arc, 0); +} + /* rotates an arc */ void *RotateArc(pcb_opctx_t *ctx, pcb_layer_t *Layer, pcb_arc_t *Arc) { Index: trunk/src/obj_arc.h =================================================================== --- trunk/src/obj_arc.h (revision 5111) +++ trunk/src/obj_arc.h (revision 5112) @@ -56,7 +56,9 @@ /*** Utility ***/ void pcb_arc_bbox(pcb_arc_t *Arc); void pcb_arc_rotate90(pcb_arc_t *Arc, pcb_coord_t X, pcb_coord_t Y, unsigned Number); +void pcb_arc_rotate(pcb_layer_t *layer, pcb_arc_t *arc, pcb_coord_t X, pcb_coord_t Y, double cosa, double sina, pcb_angle_t angle); + pcb_box_t *pcb_arc_get_ends(pcb_arc_t *Arc); void pcb_arc_set_angles(pcb_layer_t *Layer, pcb_arc_t *a, pcb_angle_t new_sa, pcb_angle_t new_da); void pcb_arc_set_radii(pcb_layer_t *Layer, pcb_arc_t *a, pcb_coord_t new_width, pcb_coord_t new_height);