Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 9775) +++ trunk/src/obj_subc.c (revision 9776) @@ -657,7 +657,21 @@ DrawSubc(sc); } +/* mirrors the coordinates of a subcircuit; an additional offset is passed */ +void pcb_subc_mirror(pcb_data_t *data, pcb_subc_t *subc, pcb_coord_t y_offs) +{ + if (data->subc_tree != NULL) + pcb_r_delete_entry(data->subc_tree, (pcb_box_t *)subc); + pcb_data_mirror(subc->data, y_offs); + pcb_subc_bbox(subc); + + if (data->subc_tree != NULL) + pcb_r_insert_entry(data->subc_tree, (pcb_box_t *)subc, 0); +} + + + #include "conf_core.h" #include "draw.h" pcb_r_dir_t draw_subc_mark_callback(const pcb_box_t *b, void *cl) Index: trunk/src/obj_subc.h =================================================================== --- trunk/src/obj_subc.h (revision 9775) +++ trunk/src/obj_subc.h (revision 9776) @@ -47,7 +47,9 @@ int pcb_subc_convert_from_buffer(pcb_buffer_t *buffer); pcb_bool pcb_subc_smash_buffer(pcb_buffer_t *buff); +void pcb_subc_mirror(pcb_data_t *data, pcb_subc_t *subc, pcb_coord_t y_offs); + void XORDrawSubc(pcb_subc_t *sc, pcb_coord_t DX, pcb_coord_t DY); #include "rtree.h"