Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 17221) +++ trunk/src/draw.c (revision 17222) @@ -967,7 +967,7 @@ if (pcb_gui->gui) pcb_draw_doing_pinout++; - pcb_text_draw_(&text, 0, 0); + pcb_text_draw_(&text, 0, 0, PCB_TXT_TINY_HIDE); if (pcb_gui->gui) pcb_draw_doing_pinout--; } Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 17221) +++ trunk/src/obj_text.c (revision 17222) @@ -799,7 +799,7 @@ /* lowlevel drawing routine for text objects */ -static void DrawTextLowLevel_(pcb_text_t *Text, pcb_coord_t min_line_width, int xordraw, pcb_coord_t xordx, pcb_coord_t xordy) +static void DrawTextLowLevel_(pcb_text_t *Text, pcb_coord_t min_line_width, int xordraw, pcb_coord_t xordx, pcb_coord_t xordy, pcb_text_tiny_t tiny) { pcb_coord_t x = 0; unsigned char *string, *rendered = pcb_text_render_str(Text); @@ -947,9 +947,9 @@ } -void pcb_text_draw_(pcb_text_t *text, pcb_coord_t min_line_width, int allow_term_gfx) +void pcb_text_draw_(pcb_text_t *text, pcb_coord_t min_line_width, int allow_term_gfx, pcb_text_tiny_t tiny) { - DrawTextLowLevel_(text, min_line_width, 0, 0, 0); + DrawTextLowLevel_(text, min_line_width, 0, 0, 0, tiny); if (text->term != NULL) { if ((allow_term_gfx) && ((pcb_draw_doing_pinout) || PCB_FLAG_TEST(PCB_FLAG_TERMNAME, text))) @@ -990,7 +990,7 @@ else min_silk_line = conf_core.design.min_wid; - pcb_text_draw_(text, min_silk_line, allow_term_gfx); + pcb_text_draw_(text, min_silk_line, allow_term_gfx, PCB_TXT_TINY_CHEAP); } pcb_r_dir_t pcb_text_draw_callback(const pcb_box_t * b, void *cl) @@ -1036,7 +1036,7 @@ void pcb_text_draw_xor(pcb_text_t *text, pcb_coord_t x, pcb_coord_t y) { - DrawTextLowLevel_(text, 0, 1, x, y); + DrawTextLowLevel_(text, 0, 1, x, y, PCB_TXT_TINY_CHEAP); if (conf_core.appearance.text_host_bbox) { pcb_gui->draw_line(pcb_crosshair.GC, x + text->BoundingBox.X1, y + text->BoundingBox.Y1, x + text->BoundingBox.X1, y + text->BoundingBox.Y2); pcb_gui->draw_line(pcb_crosshair.GC, x + text->BoundingBox.X1, y + text->BoundingBox.Y1, x + text->BoundingBox.X2, y + text->BoundingBox.Y1); Index: trunk/src/obj_text_draw.h =================================================================== --- trunk/src/obj_text_draw.h (revision 17221) +++ trunk/src/obj_text_draw.h (revision 17222) @@ -35,7 +35,13 @@ pcb_r_dir_t pcb_text_draw_term_callback(const pcb_box_t * b, void *cl); #endif -void pcb_text_draw_(pcb_text_t *Text, pcb_coord_t min_line_width, int allow_term_gfx); +typedef enum pcb_text_tiny_e { /* How to draw text that is too tiny to be readable */ + PCB_TXT_TINY_HIDE, /* do not draw it at all */ + PCB_TXT_TINY_CHEAP, /* draw a cheaper, simplified approximation that shows there's something there */ + PCB_TXT_TINY_ACCURATE /* always draw text accurately, even if it will end up unreadable */ +} pcb_text_tiny_t; + +void pcb_text_draw_(pcb_text_t *Text, pcb_coord_t min_line_width, int allow_term_gfx, pcb_text_tiny_t tiny); void pcb_text_invalidate_erase(pcb_layer_t *Layer, pcb_text_t *Text); void pcb_text_invalidate_draw(pcb_layer_t *Layer, pcb_text_t *Text); void pcb_text_draw_xor(pcb_text_t *text, pcb_coord_t x, pcb_coord_t y); Index: trunk/src/stub_draw.c =================================================================== --- trunk/src/stub_draw.c (revision 17221) +++ trunk/src/stub_draw.c (revision 17222) @@ -44,7 +44,7 @@ t.fid = 0; /* use the default font */ t.Scale = 150; t.Flags = pcb_no_flags(); - pcb_text_draw_(&t, 0, 0); + pcb_text_draw_(&t, 0, 0, PCB_TXT_TINY_ACCURATE); } static pcb_bool dummy_mouse(void *widget, pcb_hid_mouse_ev_t kind, pcb_coord_t x, pcb_coord_t y)