Index: trunk/src/obj_poly.c =================================================================== --- trunk/src/obj_poly.c (revision 9296) +++ trunk/src/obj_poly.c (revision 9297) @@ -729,6 +729,21 @@ return (polygon); } +void *Rotate90Polygon(pcb_opctx_t *ctx, pcb_layer_t *Layer, pcb_polygon_t *Polygon) +{ + if (Layer->meta.real.vis) + ErasePolygon(Polygon); + pcb_r_delete_entry(Layer->polygon_tree, (pcb_box_t *) Polygon); + pcb_poly_rotate90(Polygon, ctx->rotate.center_x, ctx->rotate.center_y, ctx->rotate.number); + pcb_r_insert_entry(Layer->polygon_tree, (pcb_box_t *) Polygon, 0); + pcb_poly_init_clip(PCB->Data, Layer, Polygon); + if (Layer->meta.real.vis) { + DrawPolygon(Layer, Polygon); + pcb_draw(); + } + return Polygon; +} + /*** draw ***/ pcb_r_dir_t draw_poly_callback(const pcb_box_t * b, void *cl) { Index: trunk/src/obj_poly_op.h =================================================================== --- trunk/src/obj_poly_op.h (revision 9296) +++ trunk/src/obj_poly_op.h (revision 9297) @@ -43,5 +43,5 @@ void *RemovePolygonContour(pcb_opctx_t *ctx, pcb_layer_t *Layer, pcb_polygon_t *Polygon, pcb_cardinal_t contour); void *RemovePolygonPoint(pcb_opctx_t *ctx, pcb_layer_t *Layer, pcb_polygon_t *Polygon, pcb_point_t *Point); void *CopyPolygon(pcb_opctx_t *ctx, pcb_layer_t *Layer, pcb_polygon_t *Polygon); +void *Rotate90Polygon(pcb_opctx_t *ctx, pcb_layer_t *Layer, pcb_polygon_t *Polygon); - Index: trunk/src/rotate.c =================================================================== --- trunk/src/rotate.c (revision 9296) +++ trunk/src/rotate.c (revision 9297) @@ -55,8 +55,8 @@ pcb_opfunc_t Rotate90Functions = { Rotate90Line, Rotate90Text, + Rotate90Polygon, NULL, - NULL, Rotate90Element, Rotate90ElementName, NULL,