Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 31243) +++ trunk/src/obj_text.c (revision 31244) @@ -215,11 +215,17 @@ return text; } -pcb_text_t *pcb_text_new_by_bbox(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, rnd_coord_t bbw, rnd_coord_t bbh, rnd_coord_t anchx, rnd_coord_t anchy, double scxy, double rot, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags) +pcb_text_t *pcb_text_new_by_bbox(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, rnd_coord_t bbw, rnd_coord_t bbh, rnd_coord_t anchx, rnd_coord_t anchy, double scxy, pcb_text_mirror_t mirror, double rot, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags) { rnd_coord_t obw, obh, nbw, nbh, nanchx, nanchy; double gsc, gscx, gscy, cs, sn; - pcb_text_t *t = pcb_text_new_(Layer, PCBFont, 0, 0, 0, 100, 1, 1, thickness, TextString, Flags); + pcb_text_t *t; + + if (mirror & PCB_TXT_MIRROR_Y) + Flags.f |= PCB_FLAG_ONSOLDER; + t = pcb_text_new_(Layer, PCBFont, 0, 0, 0, 100, 1, 1, thickness, TextString, Flags); + if (mirror & PCB_TXT_MIRROR_X) + rnd_attribute_put(&t->Attributes, "mirror_x", "1"); t->scale_x = scxy; t->scale_y = 1; Index: trunk/src/obj_text.h =================================================================== --- trunk/src/obj_text.h (revision 31243) +++ trunk/src/obj_text.h (revision 31244) @@ -83,7 +83,7 @@ text will typically be smaller than the input bounding box, with wither bbox width or bbox height matching the original, but text aspect ratio kept and anchor point placed at X;Y. */ -pcb_text_t *pcb_text_new_by_bbox(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, rnd_coord_t bbw, rnd_coord_t bbh, rnd_coord_t anchx, rnd_coord_t anchy, double scxy, double rot, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags); +pcb_text_t *pcb_text_new_by_bbox(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, rnd_coord_t bbw, rnd_coord_t bbh, rnd_coord_t anchx, rnd_coord_t anchy, double scxy, pcb_text_mirror_t mirror, double rot, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags); /* Add objects without creating them or making any "sanity modifications" to them */ Index: trunk/src_plugins/io_bxl/read.c =================================================================== --- trunk/src_plugins/io_bxl/read.c (revision 31243) +++ trunk/src_plugins/io_bxl/read.c (revision 31244) @@ -426,6 +426,7 @@ rnd_coord_t bbw, bbh, anchx, anchy; rnd_coord_t thickness; double scxy; + pcb_text_mirror_t mirror; SKIP; if (!ctx->state.is_text && (ctx->state.attr_key != NULL)) { @@ -479,9 +480,10 @@ thickness = 0; } + mirror = ctx->state.flipped ? PCB_TXT_MIRROR_X : 0; pcb_text_new_by_bbox(ctx->state.layer, pcb_font(ctx->pcb, 0, 1), ctx->state.origin_x, ctx->state.origin_y, - bbw, bbh, anchx, anchy, scxy, + bbw, bbh, anchx, anchy, scxy, mirror, ctx->state.rot, thickness, ctx->state.text_str, pcb_flag_make(PCB_FLAG_CLEARLINE | flg)); }