Index: trunk/src_plugins/export_fidocadj/fidocadj.c =================================================================== --- trunk/src_plugins/export_fidocadj/fidocadj.c (revision 31238) +++ trunk/src_plugins/export_fidocadj/fidocadj.c (revision 31239) @@ -256,6 +256,8 @@ glyphx = 10*glyphx/7; /* scaling voodoo */ if (scret != 0) pcb_io_incompat_save(PCB->Data, (pcb_any_obj_t *)text, "text-scale", "file format does not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); + if (text->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); /*switch(text->Direction) { case 0: Index: trunk/src_plugins/io_autotrax/write.c =================================================================== --- trunk/src_plugins/io_autotrax/write.c (revision 31238) +++ trunk/src_plugins/io_autotrax/write.c (revision 31239) @@ -441,6 +441,9 @@ if (pcb_text_old_scale(text, &scale) != 0) pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-scale", "file format does not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); + if (text->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); + TODO("why do we hardwire this here?") default_stroke_thickness = 200000; Index: trunk/src_plugins/io_kicad/write.c =================================================================== --- trunk/src_plugins/io_kicad/write.c (revision 31238) +++ trunk/src_plugins/io_kicad/write.c (revision 31239) @@ -318,6 +318,8 @@ if (pcb_text_old_scale(text, &scale) != 0) pcb_io_incompat_save(PCB->Data, (pcb_any_obj_t *)text, "text-scale", "file format does not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); + if (text->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); fprintf(ctx->f, "%*s", ind, ""); rnd_fprintf(ctx->f, "(gr_text %[4] ", text->TextString); Index: trunk/src_plugins/io_kicad_legacy/write.c =================================================================== --- trunk/src_plugins/io_kicad_legacy/write.c (revision 31238) +++ trunk/src_plugins/io_kicad_legacy/write.c (revision 31239) @@ -236,6 +236,8 @@ int scale; if (pcb_text_old_scale(text, &scale) != 0) pcb_io_incompat_save(PCB->Data, (pcb_any_obj_t *)text, "text-scale", "file format does not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); + if (text->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); fputs("$TEXTPCB\nTe \"", FP); fputs(text->TextString, FP); Index: trunk/src_plugins/io_lihata/write.c =================================================================== --- trunk/src_plugins/io_lihata/write.c (revision 31238) +++ trunk/src_plugins/io_lihata/write.c (revision 31239) @@ -770,6 +770,8 @@ if (pcb_text_old_scale(text, &scale) != 0) pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-scale", "versions below lihata board v7 do not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); lht_dom_hash_put(obj, build_textf("scale", "%d", scale)); + if (text->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); } if (wrver >= 6) { @@ -797,6 +799,10 @@ if (rnd_istrue(av)) pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text_tight_clearance", "lihata boards before version v7 did not support text tight_clearance\n", "Either save in lihata v7+ or remove the tight_clearance attribute"); + if ((wrver < 7) && ((av = rnd_attribute_get(&text->Attributes, "mirror_x")) != NULL)) + if (rnd_istrue(av)) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text_mirror_x", "lihata boards before version v7 did not support text mirror_x\n", "Either save in lihata v7+ or remove the mirror_x attribute"); + return obj; } Index: trunk/src_plugins/io_pcb/file.c =================================================================== --- trunk/src_plugins/io_pcb/file.c (revision 31238) +++ trunk/src_plugins/io_pcb/file.c (revision 31239) @@ -441,6 +441,9 @@ int scale; if (pcb_text_old_scale(trefdes, &scale) != 0) pcb_io_incompat_save(sc->data, (pcb_any_obj_t *)trefdes, "text-scale", "file format does not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); + if (trefdes->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)trefdes, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); + rx = trefdes->X - ox; ry = trefdes->Y - oy; if (!pcb_text_old_direction(&rdir, trefdes->rot)) { @@ -640,6 +643,8 @@ int scale; if (pcb_text_old_scale(text, &scale) != 0) pcb_io_incompat_save(PCB->Data, (pcb_any_obj_t *)text, "text-scale", "file format does not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); + if (text->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); if (!pcb_text_old_direction(&dir, text->rot)) { TODO("textrot: incompatibility warning") } Index: trunk/src_plugins/io_tedax/tboard.c =================================================================== --- trunk/src_plugins/io_tedax/tboard.c (revision 31238) +++ trunk/src_plugins/io_tedax/tboard.c (revision 31239) @@ -206,6 +206,8 @@ int scale; if (pcb_text_old_scale(text, &scale) != 0) pcb_io_incompat_save(subc->data, (pcb_any_obj_t *)text, "text-scale", "file format does not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); + if (text->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); rnd_fprintf(f, " place_text %s %s %.06mm %.06mm %.06mm %.06mm %d %f ", refdes, *lyname, text->bbox_naked.X1, text->bbox_naked.Y1, text->bbox_naked.X2, text->bbox_naked.Y2, scale, text->rot); Index: trunk/src_plugins/io_tedax/tlayer.c =================================================================== --- trunk/src_plugins/io_tedax/tlayer.c (revision 31238) +++ trunk/src_plugins/io_tedax/tlayer.c (revision 31239) @@ -115,6 +115,8 @@ int scale; if (pcb_text_old_scale(text, &scale) != 0) pcb_io_incompat_save(pcb->Data, (pcb_any_obj_t *)text, "text-scale", "file format does not support different x and y direction text scale - using average scale", "Use the scale field, set scale_x and scale_y to 0"); + if (text->mirror_x) + pcb_io_incompat_save(NULL, (pcb_any_obj_t *)text, "text-mirror-x", "file format does not support different mirroring text in the x direction", "do not mirror, or mirror in the y direction (with the ONSOLDER flag)"); rnd_fprintf(f, " text %.06mm %.06mm %.06mm %.06mm %d %f %.06mm ", text->bbox_naked.X1, text->bbox_naked.Y1, text->bbox_naked.X2, text->bbox_naked.Y2, scale, text->rot, PCB_FLAG_TEST(PCB_FLAG_CLEARLINE, text) ? 1 : 0);