Index: trunk/src/data.c =================================================================== --- trunk/src/data.c (revision 36694) +++ trunk/src/data.c (revision 36695) @@ -266,7 +266,7 @@ PCB_ENDALL_LOOP; PCB_TEXT_ALL_LOOP(Data); { - pcb_text_bbox(pcb_font_old(PCB, text->fid, 1), text); + pcb_text_bbox(pcb_font(PCB, text->fid, 1), text); if (!ignore_floaters || !PCB_FLAG_TEST(PCB_FLAG_FLOATER, text)) rnd_box_bump_box(out, &text->BoundingBox); } @@ -318,7 +318,7 @@ PCB_ENDALL_LOOP; PCB_TEXT_ALL_LOOP(Data); { - pcb_text_bbox(pcb_font_old(PCB, text->fid, 1), text); + pcb_text_bbox(pcb_font(PCB, text->fid, 1), text); if (!ignore_floaters || !PCB_FLAG_TEST(PCB_FLAG_FLOATER, text)) rnd_box_bump_box(out, &text->bbox_naked); } Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 36694) +++ trunk/src/draw.c (revision 36695) @@ -1044,16 +1044,16 @@ #define PCB_TERM_LABEL_SETUP(label) \ rnd_bool flip_x = rnd_conf.editor.view.flip_x; \ rnd_bool flip_y = rnd_conf.editor.view.flip_y; \ - pcb_font_t *font = pcb_font_old(PCB, 0, 0); \ + rnd_font_t *font = pcb_font(PCB, 0, 0); \ rnd_coord_t w, h, dx, dy; \ double scl = scale/100.0; \ if (vert) { \ - h = rnd_font_string_width(&font->rnd_font, scl, label); \ - w = rnd_font_string_height(&font->rnd_font, scl, label); \ + h = rnd_font_string_width(font, scl, label); \ + w = rnd_font_string_height(font, scl, label); \ } \ else { \ - w = rnd_font_string_width(&font->rnd_font, scl, label); \ - h = rnd_font_string_height(&font->rnd_font, scl, label); \ + w = rnd_font_string_width(font, scl, label); \ + h = rnd_font_string_height(font, scl, label); \ } \ dx = w / 2; \ dy = h / 2; \ Index: trunk/src/draw_label_smart.c =================================================================== --- trunk/src/draw_label_smart.c (revision 36694) +++ trunk/src/draw_label_smart.c (revision 36695) @@ -141,13 +141,13 @@ RND_INLINE void pcb_label_smart_flush(pcb_draw_info_t *info) { pcb_smart_label_t *l, *next; - pcb_font_t *font; + rnd_font_t *font; rnd_rtree_t rt; if (smart_labels == NULL) return; rnd_rtree_init(&rt); - font = pcb_font_old(PCB, 0, 0); + font = pcb_font(PCB, 0, 0); rnd_render->set_color(pcb_draw_out.fgGC, &conf_core.appearance.color.pin_name); if (rnd_render->gui) pcb_draw_force_termlab++; Index: trunk/src/font.c =================================================================== --- trunk/src/font.c (revision 36694) +++ trunk/src/font.c (revision 36695) @@ -78,15 +78,15 @@ } } -static pcb_font_t *pcb_font_(pcb_board_t *pcb, rnd_font_id_t id, int fallback, int unlink) +static rnd_font_t *pcb_font_(pcb_board_t *pcb, rnd_font_id_t id, int fallback, int unlink) { if (id <= 0) { do_default:; - return &pcb->fontkit.dflt; + return &pcb->fontkit.dflt.rnd_font; } if (pcb->fontkit.hash_inited) { - pcb_font_t *f = htip_get(&pcb->fontkit.fonts, id); + rnd_font_t *f = htip_get(&pcb->fontkit.fonts, id); if (f != NULL) { if (unlink) htip_popentry(&pcb->fontkit.fonts, id); @@ -102,16 +102,15 @@ pcb_font_t *pcb_font_old(pcb_board_t *pcb, rnd_font_id_t id, int fallback) { - return pcb_font_(pcb, id, fallback, 0); + return (pcb_font_t *)pcb_font_(pcb, id, fallback, 0); } rnd_font_t *pcb_font(pcb_board_t *pcb, rnd_font_id_t id, int fallback) { - pcb_font_t *res = pcb_font_(pcb, id, fallback, 0); - return res == NULL ? NULL : &res->rnd_font; + return pcb_font_(pcb, id, fallback, 0); } -pcb_font_t *pcb_font_unlink(pcb_board_t *pcb, rnd_font_id_t id) +rnd_font_t *pcb_font_unlink(pcb_board_t *pcb, rnd_font_id_t id) { return pcb_font_(pcb, id, 0, 1); } Index: trunk/src/font.h =================================================================== --- trunk/src/font.h (revision 36694) +++ trunk/src/font.h (revision 36695) @@ -68,7 +68,7 @@ void pcb_fontkit_reset(pcb_fontkit_t *fk); /* Unlink the font from pcb, but do not free anything but return the font */ -pcb_font_t *pcb_font_unlink(pcb_board_t *pcb, rnd_font_id_t id); +rnd_font_t *pcb_font_unlink(pcb_board_t *pcb, rnd_font_id_t id); #endif Index: trunk/src/obj_common.c =================================================================== --- trunk/src/obj_common.c (revision 36694) +++ trunk/src/obj_common.c (revision 36695) @@ -468,7 +468,7 @@ case PCB_OBJ_ARC: pcb_arc_bbox((pcb_arc_t *)obj); break; case PCB_OBJ_LINE: pcb_line_bbox((pcb_line_t *)obj); break; case PCB_OBJ_POLY: pcb_poly_bbox((pcb_poly_t *)obj); break; - case PCB_OBJ_TEXT: pcb_text_bbox(pcb_font_old(pcb, ((pcb_text_t *)obj)->fid, 1), (pcb_text_t *)obj); break; + case PCB_OBJ_TEXT: pcb_text_bbox(pcb_font(pcb, ((pcb_text_t *)obj)->fid, 1), (pcb_text_t *)obj); break; case PCB_OBJ_SUBC: pcb_subc_bbox((pcb_subc_t *)obj); break; case PCB_OBJ_PSTK: pcb_pstk_bbox((pcb_pstk_t *)obj); break; case PCB_OBJ_GFX: pcb_gfx_bbox((pcb_gfx_t *)obj); break; Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 36694) +++ trunk/src/obj_text.c (revision 36695) @@ -155,7 +155,7 @@ rnd_swap(rnd_font_id_t, g->fid, g->text->fid); if (pcb != NULL) - pcb_text_bbox(pcb_font_old(pcb, g->text->fid, 1), g->text); + pcb_text_bbox(pcb_font(pcb, g->text->fid, 1), g->text); if (layer->text_tree != NULL) rnd_r_insert_entry(layer->text_tree, (rnd_box_t *)g->text); pcb_poly_clear_from_poly(layer->parent.data, PCB_OBJ_TEXT, layer, g->text); @@ -317,7 +317,7 @@ return t; } -void pcb_add_text_on_layer(pcb_layer_t *Layer, pcb_text_t *text, pcb_font_t *PCBFont) +void pcb_add_text_on_layer(pcb_layer_t *Layer, pcb_text_t *text, rnd_font_t *PCBFont) { /* calculate size of the bounding box */ pcb_text_bbox(PCBFont, text); @@ -447,7 +447,7 @@ } -void pcb_text_bbox(pcb_font_t *FontPtr, pcb_text_t *Text) +void pcb_text_bbox(rnd_font_t *FontPtr, pcb_text_t *Text) { rnd_coord_t cx[4], cy[4]; unsigned char *rendered = pcb_text_render_str(Text); @@ -583,7 +583,7 @@ Text->scale_x = (double)value / 100.0; if (Text->scale_y > 0) Text->scale_y = (double)value / 100.0; - pcb_text_bbox(pcb_font_old(PCB, Text->fid, 1), Text); + pcb_text_bbox(pcb_font(PCB, Text->fid, 1), Text); rnd_r_insert_entry(Layer->text_tree, (rnd_box_t *) Text); pcb_poly_clear_from_poly(PCB->Data, PCB_OBJ_TEXT, Layer, Text); pcb_text_invalidate_draw(Layer, Text); @@ -613,7 +613,7 @@ rnd_r_delete_entry(Layer->text_tree, (rnd_box_t *)text); text->clearance = value; if (pcb != NULL) - pcb_text_bbox(pcb_font_old(pcb, text->fid, 1), text); + pcb_text_bbox(pcb_font(pcb, text->fid, 1), text); rnd_r_insert_entry(Layer->text_tree, (rnd_box_t *)text); pcb_poly_clear_from_poly(ctx->chgsize.pcb->Data, PCB_OBJ_TEXT, Layer, text); pcb_text_invalidate_draw(Layer, text); @@ -636,7 +636,7 @@ rnd_r_delete_entry(Layer->text_tree, (rnd_box_t *) Text); pcb_poly_restore_to_poly(PCB->Data, PCB_OBJ_TEXT, Layer, Text); Text->thickness = value; - pcb_text_bbox(pcb_font_old(PCB, Text->fid, 1), Text); + pcb_text_bbox(pcb_font(PCB, Text->fid, 1), Text); rnd_r_insert_entry(Layer->text_tree, (rnd_box_t *) Text); pcb_poly_clear_from_poly(PCB->Data, PCB_OBJ_TEXT, Layer, Text); pcb_text_invalidate_draw(Layer, Text); @@ -658,7 +658,7 @@ rnd_r_delete_entry(Layer->text_tree, (rnd_box_t *) Text); pcb_poly_restore_to_poly(PCB->Data, PCB_OBJ_TEXT, Layer, Text); Text->rot = value; - pcb_text_bbox(pcb_font_old(PCB, Text->fid, 1), Text); + pcb_text_bbox(pcb_font(PCB, Text->fid, 1), Text); rnd_r_insert_entry(Layer->text_tree, (rnd_box_t *) Text); pcb_poly_clear_from_poly(PCB->Data, PCB_OBJ_TEXT, Layer, Text); pcb_text_invalidate_draw(Layer, Text); @@ -681,7 +681,7 @@ Text->TextString = ctx->chgname.new_name; /* calculate size of the bounding box */ - pcb_text_bbox(pcb_font_old(PCB, Text->fid, 1), Text); + pcb_text_bbox(pcb_font(PCB, Text->fid, 1), Text); rnd_r_insert_entry(Layer->text_tree, (rnd_box_t *) Text); pcb_poly_clear_from_poly(PCB->Data, PCB_OBJ_TEXT, Layer, Text); pcb_text_invalidate_draw(Layer, Text); @@ -792,7 +792,7 @@ PCB_FLAG_CLEAR(PCB_FLAG_ONSOLDER, text); /* re-calculate the bounding box (it could be mirrored now) */ - pcb_text_bbox(pcb_font_old(PCB, text->fid, 1), text); + pcb_text_bbox(pcb_font(PCB, text->fid, 1), text); if (!Destination->text_tree) Destination->text_tree = rnd_r_create_tree(); rnd_r_insert_entry(Destination->text_tree, (rnd_box_t *) text); @@ -865,7 +865,7 @@ Text->rot += 360.0; /* can't optimize with box rotation because of closed boxes */ - pcb_text_bbox(pcb_font_old(PCB, Text->fid, 1), Text); + pcb_text_bbox(pcb_font(PCB, Text->fid, 1), Text); } /* rotates a text; only the bounding box is rotated, @@ -880,7 +880,7 @@ Text->rot += 360.0; /* can't optimize with box rotation because of closed boxes */ - pcb_text_bbox(pcb_font_old(PCB, Text->fid, 1), Text); + pcb_text_bbox(pcb_font(PCB, Text->fid, 1), Text); } /* rotates a text object and redraws it */ @@ -934,7 +934,7 @@ text->X = PCB_SWAP_X(text->X); text->Y = PCB_SWAP_Y(text->Y) + y_offs; PCB_FLAG_TOGGLE(PCB_FLAG_ONSOLDER, text); - pcb_text_bbox(pcb_font_old(PCB, text->fid, 1), text); + pcb_text_bbox(pcb_font(PCB, text->fid, 1), text); if (layer->text_tree != NULL) rnd_r_insert_entry(layer->text_tree, (rnd_box_t *) text); } @@ -982,7 +982,7 @@ if ((sth != 1.0) && (text->thickness > 0.0)) text->thickness = rnd_round((double)text->thickness * sth); - pcb_text_bbox(pcb_font_old(PCB, text->fid, 1), text); + pcb_text_bbox(pcb_font(PCB, text->fid, 1), text); if (onbrd) pcb_text_post(text); } @@ -997,7 +997,7 @@ pcb_poly_restore_to_poly(PCB->Data, PCB_OBJ_TEXT, layer, text); rnd_r_delete_entry(layer->text_tree, (rnd_box_t *) text); text->fid = fid; - pcb_text_bbox(pcb_font_old(PCB, text->fid, 1), text); + pcb_text_bbox(pcb_font(PCB, text->fid, 1), text); rnd_r_insert_entry(layer->text_tree, (rnd_box_t *) text); pcb_poly_clear_from_poly(PCB->Data, PCB_OBJ_TEXT, layer, text); } @@ -1033,7 +1033,7 @@ pcb_poly_restore_to_poly(data, PCB_OBJ_TEXT, layer, text); rnd_r_delete_entry(layer->text_tree, (rnd_box_t *) text); - pcb_text_bbox(pcb_font_old(pcb, text->fid, 1), text); + pcb_text_bbox(pcb_font(pcb, text->fid, 1), text); rnd_r_insert_entry(layer->text_tree, (rnd_box_t *) text); pcb_poly_clear_from_poly(data, PCB_OBJ_TEXT, layer, text); } @@ -1058,7 +1058,7 @@ unsigned long newflagbits = Text->Flags.f; if ((oldflagbits & PCB_FLAG_DYNTEXT) || (newflagbits & PCB_FLAG_DYNTEXT) || (orig_layer != NULL)) - pcb_text_bbox(pcb_font_old(PCB, Text->fid, 1), Text); + pcb_text_bbox(pcb_font(PCB, Text->fid, 1), Text); if (orig_layer != NULL) rnd_r_insert_entry(orig_layer->text_tree, (rnd_box_t *)Text); @@ -1329,7 +1329,7 @@ typedef void (*rnd_draw_text_cb)(void *ctx, const rnd_glyph_atom_t *atom); -RND_INLINE void pcb_text_draw_string_rnd(pcb_draw_info_t *info, pcb_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny, pcb_draw_text_cb cb, void *cb_ctx) +RND_INLINE void pcb_text_draw_string_rnd(pcb_draw_info_t *info, rnd_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny, pcb_draw_text_cb cb, void *cb_ctx) { font_draw_atom_user_cb_t ucb; int poly_thin = info->xform->thin_draw || info->xform->wireframe; @@ -1353,22 +1353,22 @@ cb_ctx = &ucb; } - rnd_font_draw_string(&font->rnd_font, string, x0, y0, scx, scy, rotdeg, mirror, thickness, min_line_width, poly_thin, tiny, rcb, cb_ctx); + rnd_font_draw_string(font, string, x0, y0, scx, scy, rotdeg, mirror, thickness, min_line_width, poly_thin, tiny, rcb, cb_ctx); } -RND_INLINE void pcb_text_draw_string_(pcb_draw_info_t *info, pcb_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny, pcb_draw_text_cb cb, void *cb_ctx) +RND_INLINE void pcb_text_draw_string_(pcb_draw_info_t *info, rnd_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny, pcb_draw_text_cb cb, void *cb_ctx) { pcb_text_draw_string_rnd(info, font, string, x0, y0, scx, scy, rotdeg, mirror, thickness, min_line_width, xordraw, xordx, xordy, tiny, cb, cb_ctx); } -void pcb_text_draw_string(pcb_draw_info_t *info, pcb_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny) +void pcb_text_draw_string(pcb_draw_info_t *info, rnd_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny) { pcb_text_draw_string_(info, font, string, x0, y0, scx, scy, rotdeg, mirror, thickness, min_line_width, xordraw, xordx, xordy, tiny, NULL, NULL); } -void pcb_text_draw_string_simple(pcb_font_t *font, const char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy) +void pcb_text_draw_string_simple(rnd_font_t *font, const char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy) { static rnd_xform_t xform = {0}; static pcb_draw_info_t info = {0}; @@ -1375,13 +1375,13 @@ info.xform = &xform; if (font == NULL) - font = pcb_font_old(PCB, 0, 0); + font = pcb_font(PCB, 0, 0); pcb_text_draw_string_(&info, font, (const unsigned char *)string, x0, y0, scx, scy, rotdeg, mirror, thickness, 0, xordraw, xordx, xordy, PCB_TXT_TINY_CHEAP, NULL, NULL); } -void pcb_text_decompose_string(pcb_draw_info_t *info, pcb_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, pcb_draw_text_cb cb, void *cb_ctx) +void pcb_text_decompose_string(pcb_draw_info_t *info, rnd_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, pcb_draw_text_cb cb, void *cb_ctx) { pcb_text_draw_string_(info, font, string, x0, y0, scx, scy, rotdeg, mirror, thickness, 0, 0, 0, 0, PCB_TXT_TINY_ACCURATE, cb, cb_ctx); } @@ -1391,7 +1391,7 @@ unsigned char *rendered = pcb_text_render_str(text); double scx, scy; pcb_text_get_scale_xy(text, &scx, &scy); - pcb_text_decompose_string(info, pcb_font_old(PCB, text->fid, 1), rendered, text->X, text->Y, scx, scy, text->rot, text_mirror_bits(text), text->thickness, cb, cb_ctx); + pcb_text_decompose_string(info, pcb_font(PCB, text->fid, 1), rendered, text->X, text->Y, scx, scy, text->rot, text_mirror_bits(text), text->thickness, cb, cb_ctx); pcb_text_free_str(text, rendered); } @@ -1402,7 +1402,7 @@ unsigned char *rendered = pcb_text_render_str(Text); double scx, scy; pcb_text_get_scale_xy(Text, &scx, &scy); - pcb_text_draw_string_(info, pcb_font_old(PCB, Text->fid, 1), rendered, Text->X, Text->Y, scx, scy, Text->rot, text_mirror_bits(Text), Text->thickness, min_line_width, xordraw, xordx, xordy, tiny, NULL, NULL); + pcb_text_draw_string_(info, pcb_font(PCB, Text->fid, 1), rendered, Text->X, Text->Y, scx, scy, Text->rot, text_mirror_bits(Text), Text->thickness, min_line_width, xordraw, xordx, xordy, tiny, NULL, NULL); pcb_text_free_str(Text, rendered); } Index: trunk/src/obj_text.h =================================================================== --- trunk/src/obj_text.h (revision 36694) +++ trunk/src/obj_text.h (revision 36695) @@ -87,9 +87,9 @@ /* 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); +void pcb_add_text_on_layer(pcb_layer_t *Layer, pcb_text_t *text, rnd_font_t *PCBFont); -void pcb_text_bbox(pcb_font_t *FontPtr, pcb_text_t *Text); +void pcb_text_bbox(rnd_font_t *FontPtr, pcb_text_t *Text); void pcb_text_rotate90(pcb_text_t *Text, rnd_coord_t X, rnd_coord_t Y, unsigned Number); void pcb_text_rotate(pcb_text_t *Text, rnd_coord_t X, rnd_coord_t Y, double cosa, double sina, double rotdeg); void pcb_text_scale(pcb_text_t *text, double sx, double sy, double sth); @@ -112,7 +112,7 @@ void pcb_text_flagchg_post(pcb_text_t *Text, unsigned long oldflagbits, void **save); /* Low level draw call for direct rendering on preview */ -void pcb_text_draw_string_simple(pcb_font_t *font, const char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy); +void pcb_text_draw_string_simple(rnd_font_t *font, const char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy); /* Recalculate the bounding box of all dynamic text objects that are directly under data - useful e.g. on parent attr change */ Index: trunk/src/obj_text_draw.h =================================================================== --- trunk/src/obj_text_draw.h (revision 36694) +++ trunk/src/obj_text_draw.h (revision 36695) @@ -51,11 +51,11 @@ void pcb_text_draw_label(pcb_draw_info_t *info, pcb_text_t *text, rnd_bool vis_side); /* lowlevel drawing routine for text strings */ -void pcb_text_draw_string(pcb_draw_info_t *info, pcb_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny); +void pcb_text_draw_string(pcb_draw_info_t *info, rnd_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, rnd_coord_t min_line_width, int xordraw, rnd_coord_t xordx, rnd_coord_t xordy, pcb_text_tiny_t tiny); /* Call cb(ctx, ...) for every object in a rendered string or text; obj will be disacrded after the call, can be modified by the callback */ typedef void (*pcb_draw_text_cb)(void *ctx, pcb_any_obj_t *obj); -void pcb_text_decompose_string(pcb_draw_info_t *info, pcb_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, pcb_draw_text_cb cb, void *cb_ctx); +void pcb_text_decompose_string(pcb_draw_info_t *info, rnd_font_t *font, const unsigned char *string, rnd_coord_t x0, rnd_coord_t y0, double scx, double scy, double rotdeg, pcb_text_mirror_t mirror, rnd_coord_t thickness, pcb_draw_text_cb cb, void *cb_ctx); void pcb_text_decompose_text(pcb_draw_info_t *info, pcb_text_t *text, pcb_draw_text_cb cb, void *cb_ctx); Index: trunk/src_plugins/draw_csect/draw_csect.c =================================================================== --- trunk/src_plugins/draw_csect/draw_csect.c (revision 36694) +++ trunk/src_plugins/draw_csect/draw_csect.c (revision 36695) @@ -321,7 +321,7 @@ { pcb_text_t *t; t = dtext_bg(gc, x, y, 200, 0, label, &COLOR_BG, &COLOR_ANNOT); - pcb_text_bbox(pcb_font_old(PCB, 0, 1), t); + pcb_text_bbox(pcb_font(PCB, 0, 1), t); dhrect(RND_COORD_TO_MM(t->BoundingBox.X1), y, RND_COORD_TO_MM(t->BoundingBox.X2)+1, y+4, 0.25, 0, 0, 0, OMIT_NONE); box->X1 = t->BoundingBox.X1; box->Y1 = RND_MM_TO_COORD(y); @@ -521,7 +521,7 @@ if (lid == drag_lid) continue; t = dtext_bg(gc, x, y, 200, 0, l->name, &COLOR_BG, &l->meta.real.color); - pcb_text_bbox(pcb_font_old(PCB, 0, 1), t); + pcb_text_bbox(pcb_font(PCB, 0, 1), t); if (l->comb & PCB_LYC_SUB) { dhrect(RND_COORD_TO_MM(t->BoundingBox.X1), y, RND_COORD_TO_MM(t->BoundingBox.X2)+1, y+4, 1.2, 0, 0, 0, OMIT_NONE); redraw_text = 1; @@ -529,7 +529,7 @@ if (redraw_text) { t = dtext_bg(gc, x, y, 200, 0, l->name, &COLOR_BG, &l->meta.real.color); - pcb_text_bbox(pcb_font_old(PCB, 0, 1), t); + pcb_text_bbox(pcb_font(PCB, 0, 1), t); } else dhrect(RND_COORD_TO_MM(t->BoundingBox.X1), y, RND_COORD_TO_MM(t->BoundingBox.X2)+1, y+4, 0.25, 0, 0, 0, OMIT_NONE); @@ -555,7 +555,7 @@ pcb_layer_t *l = &PCB->Data->Layer[g->lid[0]]; rnd_render->set_color(gc, &l->meta.real.color); t = dtext_bg(gc, 1, y, 200, 0, l->name, &COLOR_BG, &l->meta.real.color); - pcb_text_bbox(pcb_font_old(PCB, 0, 1), t); + pcb_text_bbox(pcb_font(PCB, 0, 1), t); dhrect(RND_COORD_TO_MM(t->BoundingBox.X1), y, RND_COORD_TO_MM(t->BoundingBox.X2)+1, y+4, 1, 0, 0, 0, OMIT_NONE); dtext_bg(gc, 1, y, 200, 0, l->name, &COLOR_BG, &l->meta.real.color); reg_layer_coords(g->lid[0], t->BoundingBox.X1, RND_MM_TO_COORD(y), t->BoundingBox.X2+RND_MM_TO_COORD(1), RND_MM_TO_COORD(y+4)); @@ -563,7 +563,7 @@ else { rnd_render->set_color(gc, &COLOR_OUTLINE); t = dtext_bg(gc, 1, y, 200, 0, "", &COLOR_BG, &COLOR_OUTLINE); - pcb_text_bbox(pcb_font_old(PCB, 0, 1), t); + pcb_text_bbox(pcb_font(PCB, 0, 1), t); dhrect(RND_COORD_TO_MM(t->BoundingBox.X1), y, RND_COORD_TO_MM(t->BoundingBox.X2)+1, y+4, 1, 0, 0, 0, OMIT_NONE); dtext_bg(gc, 1, y, 200, 0, "", &COLOR_BG, &COLOR_OUTLINE); } Index: trunk/src_plugins/draw_fontsel/draw_fontsel.c =================================================================== --- trunk/src_plugins/draw_fontsel/draw_fontsel.c (revision 36694) +++ trunk/src_plugins/draw_fontsel/draw_fontsel.c (revision 36695) @@ -132,7 +132,7 @@ rnd_render->set_color(gc, BLACK); t = dtext(x, *y, 200, f->id, buf); - pcb_text_bbox(pcb_font_old(PCB, f->id, 1), t); + pcb_text_bbox(pcb_font(PCB, f->id, 1), t); *y += rnd_round(RND_COORD_TO_MM(t->BoundingBox.Y2 - t->BoundingBox.Y1) + 0.5); Index: trunk/src_plugins/fontmode/fontmode.c =================================================================== --- trunk/src_plugins/fontmode/fontmode.c (revision 36694) +++ trunk/src_plugins/fontmode/fontmode.c (revision 36695) @@ -289,7 +289,7 @@ static fgw_error_t pcb_act_FontEdit(fgw_arg_t *res, int argc, fgw_arg_t *argv) { pcb_board_t *pcb = PCB_ACT_BOARD; - pcb_font_t *font; + rnd_font_t *font; pcb_layer_t *lfont, *lorig, *lwidth, *lgrid, *lsilk; rnd_layergrp_id_t grp[4]; int l, inplace = 0; @@ -356,7 +356,7 @@ rnd_event(&pcb->hidlib, RND_EVENT_BOARD_CHANGED, NULL); rnd_event(&pcb->hidlib, PCB_EVENT_LAYERS_CHANGED, NULL); - font2editor_new(pcb, &font->rnd_font, lfont, lorig, lwidth, lsilk); + font2editor_new(pcb, font, lfont, lorig, lwidth, lsilk); for (l = 0; l < 16; l++) { int x = (l + 1) * CELL_SIZE; Index: trunk/src_plugins/io_lihata/read.c =================================================================== --- trunk/src_plugins/io_lihata/read.c (revision 36694) +++ trunk/src_plugins/io_lihata/read.c (revision 36695) @@ -1119,7 +1119,7 @@ } if (ly != NULL) - pcb_add_text_on_layer(ly, text, pcb_font_old(PCB, text->fid, 1)); + pcb_add_text_on_layer(ly, text, pcb_font(PCB, text->fid, 1)); return err; } Index: trunk/src_plugins/io_pads/delay_create.c =================================================================== --- trunk/src_plugins/io_pads/delay_create.c (revision 36694) +++ trunk/src_plugins/io_pads/delay_create.c (revision 36695) @@ -222,7 +222,7 @@ t->TextString = rnd_strdup(str); if (flags != 0) PCB_FLAG_SET(flags, t); - pcb_text_bbox(pcb_font_old(PCB, 0, 1), t); + pcb_text_bbox(pcb_font(PCB, 0, 1), t); if (dlcr->subc_begin != NULL) { if (!(flags & PCB_FLAG_FLOATER)) rnd_box_bump_box(&dlcr->subc_begin->val.subc_begin.subc->bbox_naked, &t->bbox_naked); Index: trunk/src_plugins/io_tedax/tlayer.c =================================================================== --- trunk/src_plugins/io_tedax/tlayer.c (revision 36694) +++ trunk/src_plugins/io_tedax/tlayer.c (revision 36695) @@ -406,7 +406,7 @@ rw = bx2-bx1; rh = by2-by1; pcb_text_pre(text); for(n = 0; n < 8; n++) { - pcb_text_bbox(pcb_font_old(PCB, 0, 1), text); + pcb_text_bbox(pcb_font(PCB, 0, 1), text); aw = text->bbox_naked.X2 - text->bbox_naked.X1; ah = text->bbox_naked.Y2 - text->bbox_naked.Y1; zx = (double)rw/(double)aw; zy = (double)rh/(double)ah; z = zx < zy ? zx : zy; @@ -414,7 +414,7 @@ break; text->Scale = rnd_round(text->Scale*z); } - pcb_text_bbox(pcb_font_old(PCB, 0, 1), text); + pcb_text_bbox(pcb_font(PCB, 0, 1), text); aw = text->bbox_naked.X2 - text->bbox_naked.X1; ah = text->bbox_naked.Y2 - text->bbox_naked.Y1; text->X += (double)(rw-aw)/2.0; text->Y += (double)(rh-ah)/2.0; Index: trunk/src_plugins/show_netnames/show_netnames.c =================================================================== --- trunk/src_plugins/show_netnames/show_netnames.c (revision 36694) +++ trunk/src_plugins/show_netnames/show_netnames.c (revision 36695) @@ -97,7 +97,7 @@ char *atv; t.TextString = net->name; - pcb_text_bbox(pcb_font_old(pcb, 0, 1), &t); + pcb_text_bbox(pcb_font(pcb, 0, 1), &t); shn.w = t.BoundingBox.X2 - t.BoundingBox.X1; shn.h = t.BoundingBox.Y2 - t.BoundingBox.Y1; @@ -122,7 +122,7 @@ } t.TextString = ""; - pcb_text_bbox(pcb_font_old(pcb, 0, 1), &t); + pcb_text_bbox(pcb_font(pcb, 0, 1), &t); shn_nonet.w = t.BoundingBox.X2 - t.BoundingBox.X1; shn_nonet.h = t.BoundingBox.Y2 - t.BoundingBox.Y1; shn_nonet.show = 1; @@ -159,7 +159,7 @@ const char *netname; pcb_draw_info_t *info = ctx; rnd_coord_t x, y, dx, dy; - pcb_font_t *font; + rnd_font_t *font; double rot, vx, vy, nx, ny, len, lscale; shn_net_t *shn = NULL; htshn_entry_t *e; @@ -197,7 +197,7 @@ return NULL; pcb_obj_center(obj, &x, &y); - font = pcb_font_old(PCB, 0, 0); + font = pcb_font(PCB, 0, 0); switch(obj->type) { case PCB_OBJ_LINE: