Index: read.c =================================================================== --- read.c (revision 19585) +++ read.c (revision 19586) @@ -221,7 +221,8 @@ if (lyt & PCB_LYT_BOTTOM) Flags = pcb_flag_make(PCB_FLAG_ONSOLDER); else Flags = pcb_flag_make(0); - if (pcb_text_new(ly, pcb_font(st->pcb, 0, 1), X, Y, direction, scaling, 0, t, Flags) != 0) +#warning textrot TODO: is there a real rotation angle available? + if (pcb_text_new(ly, pcb_font(st->pcb, 0, 1), X, Y, 90.0*direction, scaling, 0, t, Flags) != 0) return 1; return -1; Index: write.c =================================================================== --- write.c (revision 19585) +++ write.c (revision 19586) @@ -443,6 +443,12 @@ if (!pcb_layer_is_empty_(PCB, layer)) { /*|| (layer->name && *layer->name)) { */ local_flag = 0; textlist_foreach(&layer->Text, &it, text) { + int direction; + + if (pcb_text_old_direction(&direction, text->rot) != 0) { +#warning TODO: indicate save incompatibility + } + if (current_layer < 9) { /* copper or silk layer text */ if (in_subc) fputs("CS\r\n", ctx->f); @@ -453,13 +459,13 @@ rotation = 0; if (current_layer == 6 || current_layer == 8) /* back copper or silk */ autotrax_mirrored = 16; /* mirrored */ - if (text->Direction == 3) /*vertical down */ + if (direction == 3) /*vertical down */ rotation = 3; - else if (text->Direction == 2) /*upside down */ + else if (direction == 2) /*upside down */ rotation = 2; - else if (text->Direction == 1) /*vertical up */ + else if (direction == 1) /*vertical up */ rotation = 1; - else if (text->Direction == 0) /*normal text */ + else if (direction == 0) /*normal text */ rotation = 0; pcb_fprintf(ctx->f, "%.0ml %.0ml %.0ml %d %.0ml %d\r\n", text->X+dx, PCB->MaxHeight - (text->Y+dy), textHeight, rotation + autotrax_mirrored, strokeThickness, current_layer);