Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 13062) +++ trunk/src/obj_pstk.c (revision 13063) @@ -70,7 +70,7 @@ free(ps); } -pcb_pstk_t *pcb_pstk_new(pcb_data_t *data, pcb_cardinal_t proto, pcb_coord_t x, pcb_coord_t y, pcb_coord_t clearance, pcb_flag_t Flags) +pcb_pstk_t *pcb_pstk_new_tr(pcb_data_t *data, pcb_cardinal_t proto, pcb_coord_t x, pcb_coord_t y, pcb_coord_t clearance, pcb_flag_t Flags, double rot, int xmirror) { pcb_pstk_t *ps; @@ -86,11 +86,19 @@ ps->Clearance = clearance; ps->Flags = Flags; ps->ID = pcb_create_ID_get(); + ps->rot = rot; + ps->xmirror = xmirror; pcb_pstk_add(data, ps); pcb_poly_clear_from_poly(data, PCB_TYPE_PSTK, NULL, ps); return ps; } +pcb_pstk_t *pcb_pstk_new(pcb_data_t *data, pcb_cardinal_t proto, pcb_coord_t x, pcb_coord_t y, pcb_coord_t clearance, pcb_flag_t Flags) +{ + return pcb_pstk_new_tr(data, proto, x, y, clearance, Flags, 0, 0); +} + + void pcb_pstk_add(pcb_data_t *data, pcb_pstk_t *ps) { pcb_pstk_bbox(ps); Index: trunk/src/obj_pstk.h =================================================================== --- trunk/src/obj_pstk.h (revision 13062) +++ trunk/src/obj_pstk.h (revision 13063) @@ -76,6 +76,7 @@ pcb_pstk_t *pcb_pstk_alloc(pcb_data_t *data); void pcb_pstk_free(pcb_pstk_t *ps); pcb_pstk_t *pcb_pstk_new(pcb_data_t *data, pcb_cardinal_t proto, pcb_coord_t x, pcb_coord_t y, pcb_coord_t clearance, pcb_flag_t Flags); +pcb_pstk_t *pcb_pstk_new_tr(pcb_data_t *data, pcb_cardinal_t proto, pcb_coord_t x, pcb_coord_t y, pcb_coord_t clearance, pcb_flag_t Flags, double rot, int xmirror); void pcb_pstk_add(pcb_data_t *data, pcb_pstk_t *ps); void pcb_pstk_bbox(pcb_pstk_t *ps); Index: trunk/src/obj_pstk_op.c =================================================================== --- trunk/src/obj_pstk_op.c (revision 13062) +++ trunk/src/obj_pstk_op.c (revision 13063) @@ -32,8 +32,7 @@ return NULL; npid = pcb_pstk_proto_insert_dup(ctx->buffer.dst, proto, 1); - p = pcb_pstk_new(ctx->buffer.dst, npid, ps->x, ps->y, ps->Clearance, pcb_flag_mask(ps->Flags, PCB_FLAG_FOUND | ctx->buffer.extraflg)); - pcb_pstk_copy_orient(p, ps); + p = pcb_pstk_new_tr(ctx->buffer.dst, npid, ps->x, ps->y, ps->Clearance, pcb_flag_mask(ps->Flags, PCB_FLAG_FOUND | ctx->buffer.extraflg), ps->rot, ps->xmirror); return pcb_pstk_copy_meta(p, ps); } @@ -77,12 +76,11 @@ return NULL; npid = pcb_pstk_proto_insert_dup(data, proto, 1); - nps = pcb_pstk_new(data, npid, ps->x + ctx->copy.DeltaX, ps->y + ctx->copy.DeltaY, ps->Clearance, pcb_flag_mask(ps->Flags, PCB_FLAG_FOUND)); + nps = pcb_pstk_new_tr(data, npid, ps->x + ctx->copy.DeltaX, ps->y + ctx->copy.DeltaY, ps->Clearance, pcb_flag_mask(ps->Flags, PCB_FLAG_FOUND), ps->rot, ps->xmirror); if (nps == NULL) return NULL; pcb_pstk_copy_meta(nps, ps); - pcb_pstk_copy_orient(nps, ps); pcb_pstk_invalidate_draw(nps); pcb_undo_add_obj_to_create(PCB_TYPE_PSTK, data, nps, nps); return nps; Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 13062) +++ trunk/src/obj_subc.c (revision 13063) @@ -715,9 +715,8 @@ padstacklist_foreach(&src->data->padstack, &it, ps) { pcb_cardinal_t pid = pcb_pstk_proto_insert_dup(sc->data, pcb_pstk_get_proto(ps), 1); - nps = pcb_pstk_new(sc->data, pid, ps->x+dx, ps->y+dy, ps->Clearance, ps->Flags); + nps = pcb_pstk_new_tr(sc->data, pid, ps->x+dx, ps->y+dy, ps->Clearance, ps->Flags, ps->rot, ps->xmirror); pcb_pstk_copy_meta(nps, ps); - pcb_pstk_copy_orient(nps, ps); MAYBE_KEEP_ID(nps, ps); if (nps != NULL) pcb_box_bump_box_noflt(&sc->BoundingBox, &nps->BoundingBox);