Index: trunk/src/font.h =================================================================== --- trunk/src/font.h (revision 7496) +++ trunk/src/font.h (revision 7497) @@ -30,6 +30,8 @@ #include #include "global_typedefs.h" +#include "obj_poly.h" +#include "obj_poly_list.h" #include "box.h" /* --------------------------------------------------------------------------- @@ -41,6 +43,7 @@ pcb_cardinal_t LineN; /* number of lines */ pcb_cardinal_t LineMax; /* lines allocated */ pcb_coord_t Width, Height, Delta; /* size of cell, distance to next symbol */ + polylist_t polys; /* simple (non-clipped) polygons */ } pcb_symbol_t; typedef long int pcb_font_id_t; /* a font is referenced by a pcb_board_t:pcb_font_id_t pair */ Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 7496) +++ trunk/src/obj_text.c (revision 7497) @@ -41,6 +41,7 @@ #include "obj_text.h" #include "obj_text_op.h" #include "obj_text_list.h" +#include "obj_poly_draw.h" /* TODO: remove this if draw.c is moved here: */ #include "draw.h" @@ -516,6 +517,7 @@ if (*string <= PCB_MAX_FONTPOSITION && font->Symbol[*string].Valid) { pcb_line_t *line = font->Symbol[*string].Line; pcb_line_t newline; + pcb_polygon_t *p; for (n = font->Symbol[*string].LineN; n; n--, line++) { /* create one line, scale, move, rotate and swap it */ @@ -547,6 +549,10 @@ _draw_line(&newline); } + /* draw the polygons */ + for(p = polylist_first(&font->Symbol[*string].polys); p != NULL; p = polylist_next(p)) + _draw_simple_poly(p); + /* move on to next cursor position */ x += (font->Symbol[*string].Width + font->Symbol[*string].Delta); }