Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 10726) +++ trunk/src/draw.c (revision 10727) @@ -663,3 +663,26 @@ conf_force_set_bool(conf_core.editor.view.flip_y, fy); } } + +void pcb_term_label_draw(pcb_coord_t x, pcb_coord_t y, double scale, pcb_bool vert, const char *lab) +{ + pcb_text_t text; + pcb_bool flip_x = conf_core.editor.view.flip_x; + pcb_bool flip_y = conf_core.editor.view.flip_y; + + pcb_gui->set_color(Output.fgGC, conf_core.appearance.color.pin_name); + + text.TextString = (char *)lab; + text.Flags = (flip_x ^ flip_y) ? pcb_flag_make(PCB_FLAG_ONSOLDER) : pcb_no_flags(); + text.X = x; + text.Y = y; + text.fid = 0; + text.Scale = scale; + text.Direction = (vert ? 1 : 0) + (flip_x ? 2 : 0); + + if (pcb_gui->gui) + pcb_draw_doing_pinout++; + pcb_text_draw(&text, 0); + if (pcb_gui->gui) + pcb_draw_doing_pinout--; +} Index: trunk/src/draw.h =================================================================== --- trunk/src/draw.h (revision 10726) +++ trunk/src/draw.h (revision 10727) @@ -109,4 +109,7 @@ /* Returns whether a group is composite-drawn */ int pcb_draw_layergrp_is_comp(pcb_layergrp_t *g); +/* Draw (render) a terminal label */ +void pcb_term_label_draw(pcb_coord_t x, pcb_coord_t y, double scale, pcb_bool vert, const char *lab); + #endif Index: trunk/src/obj_pinvia.c =================================================================== --- trunk/src/obj_pinvia.c (revision 10726) +++ trunk/src/obj_pinvia.c (revision 10727) @@ -966,11 +966,13 @@ static void _draw_pv_name(pcb_pin_t * pv) { pcb_box_t box; - pcb_bool vert, flip_x, flip_y; + pcb_bool vert; pcb_coord_t x_off, y_off; - pcb_text_t text; char buff[128]; const char *pn; + double scale; + pcb_bool flip_x = conf_core.editor.view.flip_x; + pcb_bool flip_y = conf_core.editor.view.flip_y; PCB_DRAW_BBOX(pv); @@ -990,12 +992,8 @@ pcb_snprintf(buff, sizeof(buff), "%s[%d]", pn, PCB_FLAG_INTCONN_GET(pv)); else strcpy(buff, pn); - text.TextString = buff; vert = PCB_FLAG_TEST(PCB_FLAG_EDGE2, pv); - flip_x = conf_core.editor.view.flip_x; - flip_y = conf_core.editor.view.flip_y; - if (vert) { x_off = -pv->Thickness / 2 + conf_core.appearance.pinout.text_offset_y; y_off = -pv->DrillingHole / 2 - conf_core.appearance.pinout.text_offset_x; @@ -1009,21 +1007,10 @@ box.Y1 = pv->Y + (flip_y ? -y_off : y_off); } - pcb_gui->set_color(Output.fgGC, conf_core.appearance.color.pin_name); - - text.Flags = (flip_x ^ flip_y) ? pcb_flag_make (PCB_FLAG_ONSOLDER) : pcb_no_flags(); /* Set font height to approx 56% of pin thickness */ - text.Scale = 56 * pv->Thickness / PCB_FONT_CAPHEIGHT; - text.X = box.X1; - text.Y = box.Y1; - text.fid = 0; - text.Direction = (vert ? 1 : 0) + (flip_x ? 2 : 0); + scale = 56 * pv->Thickness / PCB_FONT_CAPHEIGHT; - if (pcb_gui->gui) - pcb_draw_doing_pinout++; - pcb_text_draw(&text, 0); - if (pcb_gui->gui) - pcb_draw_doing_pinout--; + pcb_term_label_draw(box.X1, box.Y1, scale, vert, buff); } static void _draw_pv(pcb_pin_t *pv, pcb_bool draw_hole)