Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 14357) +++ trunk/src/obj_pstk.c (revision 14358) @@ -1004,3 +1004,25 @@ #include "obj_pstk_op.c" + +void pcb_pstk_rotate90(pcb_pstk_t *pstk, pcb_coord_t cx, pcb_coord_t cy, int steps) +{ + pcb_opctx_t ctx; + + ctx.rotate.center_x = cx; + ctx.rotate.center_y = cy; + ctx.rotate.number = steps; + pcb_pstkop_rotate90(&ctx, pstk); +} + +void pcb_pstk_rotate(pcb_pstk_t *pstk, pcb_coord_t cx, pcb_coord_t cy, double cosa, double sina, double angle) +{ + pcb_opctx_t ctx; + + ctx.rotate.center_x = cx; + ctx.rotate.center_y = cy; + ctx.rotate.angle = angle; + ctx.rotate.cosa = cosa; + ctx.rotate.sina = sina; + pcb_pstkop_rotate(&ctx, pstk); +} Index: trunk/src/obj_pstk.h =================================================================== --- trunk/src/obj_pstk.h (revision 14357) +++ trunk/src/obj_pstk.h (revision 14358) @@ -176,6 +176,10 @@ /* Mirror a padstack (useful for sending to the other side - set swap_side to 1 in that case) */ void pcb_pstk_mirror(pcb_pstk_t *ps, pcb_coord_t y_offs, int swap_side); +/* Rotate in place (op wrapper) */ +void pcb_pstk_rotate90(pcb_pstk_t *pstk, pcb_coord_t cx, pcb_coord_t cy, int steps); +void pcb_pstk_rotate(pcb_pstk_t *pstk, pcb_coord_t cx, pcb_coord_t cy, double cosa, double sina, double angle); + /* High level move (op wrapper; no undo) */ void pcb_pstk_move(pcb_pstk_t *ps, pcb_coord_t dx, pcb_coord_t dy, pcb_bool more_to_come);