Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 17107) +++ trunk/src/buffer.c (revision 17108) @@ -416,7 +416,7 @@ /* set buffer offset to 'mark' position */ Buffer->X = PCB_SWAP_X(Buffer->X); Buffer->Y = PCB_SWAP_Y(Buffer->Y); - pcb_data_mirror(Buffer->Data, 0, pcb_false, pcb_false); + pcb_data_mirror(Buffer->Data, 0, PCB_TXM_COORD, pcb_false); pcb_set_buffer_bbox(Buffer); } Index: trunk/src/data.c =================================================================== --- trunk/src/data.c (revision 17107) +++ trunk/src/data.c (revision 17108) @@ -319,7 +319,7 @@ return NULL; } -void pcb_data_mirror(pcb_data_t *data, pcb_coord_t y_offs, pcb_bool text_too, pcb_bool pstk_smirror) +void pcb_data_mirror(pcb_data_t *data, pcb_coord_t y_offs, pcb_data_mirror_text_t mtxt, pcb_bool pstk_smirror) { PCB_PADSTACK_LOOP(data); { @@ -347,12 +347,23 @@ } PCB_ENDALL_LOOP; - if (text_too) { - PCB_TEXT_ALL_LOOP(data); - { - pcb_text_flip_side(layer, text, y_offs); - } - PCB_ENDALL_LOOP; + switch(mtxt) { + case PCB_TXM_NONE: + break; + case PCB_TXM_SIDE: + PCB_TEXT_ALL_LOOP(data); + { + pcb_text_flip_side(layer, text, y_offs); + } + PCB_ENDALL_LOOP; + break; + case PCB_TXM_COORD: + PCB_TEXT_ALL_LOOP(data); + { + pcb_text_mirror_coords(layer, text, y_offs); + } + PCB_ENDALL_LOOP; + break; } } Index: trunk/src/data.h =================================================================== --- trunk/src/data.h (revision 17107) +++ trunk/src/data.h (revision 17108) @@ -151,7 +151,12 @@ the layers!) */ void pcb_data_set_parent_globals(pcb_data_t *data, pcb_data_t *new_parent); -void pcb_data_mirror(pcb_data_t *data, pcb_coord_t y_offs, pcb_bool text_too, pcb_bool pstk_smirror); +typedef enum pcb_data_mirror_text_e { + PCB_TXM_NONE = 0, /* do not mirror text */ + PCB_TXM_SIDE = 1, /* mirror text, changing side */ + PCB_TXM_COORD /* mirror text base coords only */ +} pcb_data_mirror_text_t; +void pcb_data_mirror(pcb_data_t *data, pcb_coord_t y_offs, pcb_data_mirror_text_t mtxt, pcb_bool pstk_smirror); void pcb_data_move(pcb_data_t *data, pcb_coord_t dx, pcb_coord_t dy); Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 17107) +++ trunk/src/obj_subc.c (revision 17108) @@ -1464,7 +1464,7 @@ if ((data != NULL) && (data->subc_tree != NULL)) pcb_r_delete_entry(data->subc_tree, (pcb_box_t *)subc); - pcb_data_mirror(subc->data, y_offs, smirror, smirror); + pcb_data_mirror(subc->data, y_offs, smirror ? PCB_TXM_SIDE : PCB_TXM_COORD, smirror); pcb_subc_bbox(subc); if ((data != NULL) && (data->subc_tree != NULL))