Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 12972) +++ trunk/src/obj_subc.c (revision 12973) @@ -854,7 +854,7 @@ return (sc); } -extern pcb_opfunc_t ClipFunctions, MoveFunctions, MoveFunctions_noclip, Rotate90Functions, ChgFlagFunctions, ChangeSizeFunctions, ChangeClearSizeFunctions, Change1stSizeFunctions, Change2ndSizeFunctions; +extern pcb_opfunc_t ClipFunctions, MoveFunctions, MoveFunctions_noclip, Rotate90Functions, RotateFunctions, ChgFlagFunctions, ChangeSizeFunctions, ChangeClearSizeFunctions, Change1stSizeFunctions, Change2ndSizeFunctions; extern pcb_opfunc_t ChangeOctagonFunctions, SetOctagonFunctions, ClrOctagonFunctions; extern pcb_opfunc_t ChangeSquareFunctions, SetSquareFunctions, ClrSquareFunctions; @@ -884,6 +884,12 @@ return pcb_subc_op((pcb != NULL ? pcb->Data : NULL), sc, &Rotate90Functions, ctx); } +void *pcb_subcop_rotate(pcb_opctx_t *ctx, pcb_subc_t *sc) +{ + pcb_board_t *pcb = pcb_data_get_top(sc->data); + return pcb_subc_op((pcb != NULL ? pcb->Data : NULL), sc, &RotateFunctions, ctx); +} + static int subc_relocate_layer_objs(pcb_layer_t *dl, pcb_data_t *src_data, pcb_layer_t *sl, int src_has_real_layer, int dst_is_pcb) { pcb_line_t *line; Index: trunk/src/obj_subc_op.h =================================================================== --- trunk/src/obj_subc_op.h (revision 12972) +++ trunk/src/obj_subc_op.h (revision 12973) @@ -28,6 +28,7 @@ void *pcb_subcop_copy(pcb_opctx_t *ctx, pcb_subc_t *src); void *pcb_subcop_move(pcb_opctx_t *ctx, pcb_subc_t *sc); void *pcb_subcop_rotate90(pcb_opctx_t *ctx, pcb_subc_t *sc); +void *pcb_subcop_rotate(pcb_opctx_t *ctx, pcb_subc_t *sc); void *pcb_subcop_move_to_buffer(pcb_opctx_t *ctx, pcb_subc_t *sc); void *pcb_subcop_add_to_buffer(pcb_opctx_t *ctx, pcb_subc_t *sc); void *pcb_subcop_change_size(pcb_opctx_t *ctx, pcb_subc_t *sc);