Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 31225) +++ trunk/src/obj_text.c (revision 31226) @@ -168,7 +168,7 @@ }; -pcb_text_t *pcb_text_new_(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, double rot, int Scale, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags) +pcb_text_t *pcb_text_new_(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, double rot, int Scale, double scx, double scy, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags) { pcb_text_t *text; @@ -187,7 +187,8 @@ text->rot = rot; text->Flags = Flags; text->Scale = Scale; - text->scale_x = text->scale_y = 0; + text->scale_x = scx; + text->scale_y = scy; text->thickness = thickness; text->TextString = rnd_strdup(TextString); text->fid = PCBFont->id; @@ -198,7 +199,7 @@ /* creates a new text on a layer */ pcb_text_t *pcb_text_new(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, double rot, int Scale, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags) { - pcb_text_t *text = pcb_text_new_(Layer, PCBFont, X, Y, rot, Scale, thickness, TextString, Flags); + pcb_text_t *text = pcb_text_new_(Layer, PCBFont, X, Y, rot, Scale, 0, 0, thickness, TextString, Flags); pcb_add_text_on_layer(Layer, text, PCBFont); @@ -205,6 +206,15 @@ return text; } +pcb_text_t *pcb_text_new_scaled(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, double rot, int Scale, double scx, double scy, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags) +{ + pcb_text_t *text = pcb_text_new_(Layer, PCBFont, X, Y, rot, Scale, scx, scy, thickness, TextString, Flags); + + pcb_add_text_on_layer(Layer, text, PCBFont); + + return text; +} + static pcb_text_t *pcb_text_copy_meta(pcb_text_t *dst, pcb_text_t *src) { if (dst == NULL) @@ -215,8 +225,7 @@ pcb_text_t *pcb_text_dup(pcb_layer_t *dst, pcb_text_t *src) { - pcb_text_t *t = pcb_text_new(dst, pcb_font(PCB, src->fid, 1), src->X, src->Y, src->rot, src->Scale, src->thickness, src->TextString, src->Flags); - t->scale_x = src->scale_x; t->scale_y = src->scale_y; + pcb_text_t *t = pcb_text_new_scaled(dst, pcb_font(PCB, src->fid, 1), src->X, src->Y, src->rot, src->Scale, src->scale_x, src->scale_y, src->thickness, src->TextString, src->Flags); pcb_text_copy_meta(t, src); return t; } @@ -223,8 +232,7 @@ pcb_text_t *pcb_text_dup_at(pcb_layer_t *dst, pcb_text_t *src, rnd_coord_t dx, rnd_coord_t dy) { - pcb_text_t *t = pcb_text_new(dst, pcb_font(PCB, src->fid, 1), src->X+dx, src->Y+dy, src->rot, src->Scale, src->thickness, src->TextString, src->Flags); - t->scale_x = src->scale_x; t->scale_y = src->scale_y; + pcb_text_t *t = pcb_text_new_scaled(dst, pcb_font(PCB, src->fid, 1), src->X+dx, src->Y+dy, src->rot, src->Scale, src->scale_x, src->scale_y, src->thickness, src->TextString, src->Flags); pcb_text_copy_meta(t, src); return t; } @@ -519,8 +527,7 @@ void *pcb_textop_add_to_buffer(pcb_opctx_t *ctx, pcb_layer_t *Layer, pcb_text_t *Text) { pcb_layer_t *layer = &ctx->buffer.dst->Layer[pcb_layer_id(ctx->buffer.src, Layer)]; - pcb_text_t *t = pcb_text_new(layer, pcb_font(PCB, Text->fid, 1), Text->X, Text->Y, Text->rot, Text->Scale, Text->thickness, Text->TextString, pcb_flag_mask(Text->Flags, ctx->buffer.extraflg)); - t->scale_x = Text->scale_x; t->scale_y = Text->scale_y; + pcb_text_t *t = pcb_text_new_scaled(layer, pcb_font(PCB, Text->fid, 1), Text->X, Text->Y, Text->rot, Text->Scale, Text->scale_x, Text->scale_y, Text->thickness, Text->TextString, pcb_flag_mask(Text->Flags, ctx->buffer.extraflg)); pcb_text_copy_meta(t, Text); if (ctx->buffer.keep_id) pcb_obj_change_id((pcb_any_obj_t *)t, Text->ID); @@ -689,9 +696,8 @@ { pcb_text_t *text; - text = pcb_text_new(Layer, pcb_font(PCB, Text->fid, 1), Text->X + ctx->copy.DeltaX, - Text->Y + ctx->copy.DeltaY, Text->rot, Text->Scale, Text->thickness, Text->TextString, pcb_flag_mask(Text->Flags, PCB_FLAG_FOUND)); - text->scale_x = Text->scale_x; text->scale_y = Text->scale_y; + text = pcb_text_new_scaled(Layer, pcb_font(PCB, Text->fid, 1), Text->X + ctx->copy.DeltaX, + Text->Y + ctx->copy.DeltaY, Text->rot, Text->Scale, Text->scale_x, Text->scale_y, Text->thickness, Text->TextString, pcb_flag_mask(Text->Flags, PCB_FLAG_FOUND)); if (ctx->copy.keep_id) text->ID = Text->ID; pcb_text_copy_meta(text, Text); Index: trunk/src/obj_text.h =================================================================== --- trunk/src/obj_text.h (revision 31225) +++ trunk/src/obj_text.h (revision 31226) @@ -68,7 +68,7 @@ void *pcb_text_destroy(pcb_layer_t *Layer, pcb_text_t *Text); /* creates the text object on the layer without rtree or poly clipping administration */ -pcb_text_t *pcb_text_new_(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, double rot, int Scale, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags); +pcb_text_t *pcb_text_new_(pcb_layer_t *Layer, pcb_font_t *PCBFont, rnd_coord_t X, rnd_coord_t Y, double rot, int Scale, double scx, double scy, rnd_coord_t thickness, const char *TextString, pcb_flag_t Flags); /* Add objects without creating them or making any "sanity modifications" to them */ void pcb_add_text_on_layer(pcb_layer_t *Layer, pcb_text_t *text, pcb_font_t *PCBFont); Index: trunk/src_plugins/io_bxl/read.c =================================================================== --- trunk/src_plugins/io_bxl/read.c (revision 31225) +++ trunk/src_plugins/io_bxl/read.c (revision 31226) @@ -423,7 +423,7 @@ { rnd_coord_t obw, obh; double gsc, gscx, gscy; - pcb_text_t *t = pcb_text_new_(Layer, PCBFont, 0, 0, 0, 100, thickness, TextString, Flags); + pcb_text_t *t = pcb_text_new_(Layer, PCBFont, 0, 0, 0, 100, 1, 1, thickness, TextString, Flags); t->scale_x = scxy; t->scale_y = 1;