Index: trunk/src/font.c =================================================================== --- trunk/src/font.c (revision 7011) +++ trunk/src/font.c (revision 7012) @@ -185,3 +185,27 @@ return (line); } + +pcb_font_t *pcb_font(pcb_board_t *pcb, pcb_font_id_t id, int fallback) +{ +#if 0 + if (id == 0) + return pcb->fontkit->dflt; + + return pcb->fontkit->dflt; /* temporary, compatibility solution */ +#endif + return &pcb->Font; +} + +static void pcb_font_free(pcb_font_t *f) +{ + int i; + for (i = 0; i <= PCB_MAX_FONTPOSITION; i++) + free(f->Symbol[i].Line); +} + +void pcb_fontkit_free(pcb_fontkit_t *fk) +{ +/* pcb_font_free(fontkit->dflt);*/ + pcb_font_free(&PCB->Font); +} Index: trunk/src/font.h =================================================================== --- trunk/src/font.h (revision 7011) +++ trunk/src/font.h (revision 7012) @@ -48,10 +48,24 @@ pcb_bool Valid; }; +struct pcb_fontkit_s { /* a set of unrelated fonts */ + pcb_font_t dflt; /* default, fallback font, also the sysfont */ +}; + +typedef int pcb_font_id_t; /* a font is referenced by a pcb_board_t:pcb_font_id_t pair */ + +/* Look up font. If not found: Return NULL (fallback=0), or return the + default font (fallback=1) */ +pcb_font_t *pcb_font(pcb_board_t *pcb, pcb_font_id_t id, int fallback); + void pcb_font_create_default(pcb_board_t *pcb); void pcb_font_set_info(pcb_font_t *Ptr); pcb_line_t *pcb_font_new_line_in_sym(pcb_symbol_t *Symbol, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_coord_t Thickness); + +/*** font kit handling ***/ +void pcb_fontkit_free(pcb_fontkit_t *fk); + #endif Index: trunk/src/global_typedefs.h =================================================================== --- trunk/src/global_typedefs.h (revision 7011) +++ trunk/src/global_typedefs.h (revision 7012) @@ -34,6 +34,7 @@ typedef struct pcb_box_s pcb_box_t; typedef struct pcb_box_list_s pcb_box_list_t; typedef struct pcb_font_s pcb_font_t; +typedef struct pcb_fontkit_s pcb_fontkit_t; typedef struct pcb_line_s pcb_line_t; typedef struct pcb_arc_s pcb_arc_t; typedef struct pcb_point_s pcb_point_t;