Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 5112) +++ trunk/src/buffer.c (revision 5113) @@ -311,14 +311,7 @@ /* FIXME: rotate text */ PCB_POLY_ALL_LOOP(Buffer->Data); { - pcb_r_delete_entry(layer->polygon_tree, (pcb_box_t *) polygon); - PCB_POLY_POINT_LOOP(polygon); - { - pcb_rotate(&point->X, &point->Y, Buffer->X, Buffer->Y, cosa, sina); - } - PCB_END_LOOP; - pcb_poly_bbox(polygon); - pcb_r_insert_entry(layer->polygon_tree, (pcb_box_t *) polygon, 0); + pcb_poly_rotate(layer, polygon, Buffer->X, Buffer->Y, cosa, sina); } PCB_ENDALL_LOOP; Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 5112) +++ trunk/src/obj_poly.c (revision 5113) @@ -128,7 +128,19 @@ pcb_box_rotate90(&Polygon->BoundingBox, X, Y, Number); } +void pcb_poly_rotate(pcb_layer_t *layer, pcb_polygon_t *polygon, pcb_coord_t X, pcb_coord_t Y, double cosa, double sina) +{ + pcb_r_delete_entry(layer->polygon_tree, (pcb_box_t *) polygon); + PCB_POLY_POINT_LOOP(polygon); + { + pcb_rotate(&point->X, &point->Y, X, Y, cosa, sina); + } + PCB_END_LOOP; + pcb_poly_bbox(polygon); + pcb_r_insert_entry(layer->polygon_tree, (pcb_box_t *) polygon, 0); +} + /* sets the bounding box of a polygons */ void pcb_poly_bbox(pcb_polygon_t *Polygon) { Index: trunk/src/obj_poly.h =================================================================== --- trunk/src/obj_poly.h (revision 5112) +++ trunk/src/obj_poly.h (revision 5113) @@ -62,6 +62,8 @@ void *pcb_poly_remove(pcb_layer_t *Layer, pcb_polygon_t *Polygon); void pcb_poly_rotate90(pcb_polygon_t *Polygon, pcb_coord_t X, pcb_coord_t Y, unsigned Number); +void pcb_poly_rotate(pcb_layer_t *layer, pcb_polygon_t *poly, pcb_coord_t X, pcb_coord_t Y, double cosa, double sina); + void pcb_poly_move(pcb_polygon_t *Polygon, pcb_coord_t DX, pcb_coord_t DY); pcb_polygon_t *pcb_poly_copy(pcb_polygon_t *Dest, pcb_polygon_t *Src);