diff --git a/src/actions.c b/src/actions.c index e17e70b2..567a969b 100644 --- a/src/actions.c +++ b/src/actions.c @@ -2433,6 +2433,7 @@ void calc_drawing_bbox(xRect *boundbox, int selected) #if HAS_CAIRO==1 int customfont; #endif + char *estr = NULL; boundbox->x1=-100; boundbox->x2=100; @@ -2533,7 +2534,8 @@ void calc_drawing_bbox(xRect *boundbox, int selected) #if HAS_CAIRO==1 customfont = set_text_custom_font(&xctx->text[i]); #endif - if(text_bbox(get_text_floater(i), xctx->text[i].xscale, + estr = my_expand(get_text_floater(i), tclgetintvar("tabstop")); + if(text_bbox(estr, xctx->text[i].xscale, xctx->text[i].yscale,xctx->text[i].rot, xctx->text[i].flip, xctx->text[i].hcenter, xctx->text[i].vcenter, xctx->text[i].x0, xctx->text[i].y0, @@ -2541,6 +2543,7 @@ void calc_drawing_bbox(xRect *boundbox, int selected) ++count; updatebbox(count,boundbox,&rect); } + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx); diff --git a/src/editprop.c b/src/editprop.c index db4222ea..6d7c3f75 100644 --- a/src/editprop.c +++ b/src/editprop.c @@ -1349,6 +1349,7 @@ static int edit_text_property(int x) } if(strcmp(tclgetvar("tctx::rcode"),"") ) { + char *estr = NULL; dbg(1, "edit_text_property(): tctx::rcode !=\"\"\n"); if(text_changed || size_changed || props_changed) { modified = 1; @@ -1364,10 +1365,12 @@ static int edit_text_property(int x) #if HAS_CAIRO==1 customfont = set_text_custom_font(&xctx->text[sel]); #endif - text_bbox(get_text_floater(sel), xctx->text[sel].xscale, + estr = my_expand(get_text_floater(sel), tclgetintvar("tabstop")); + text_bbox(estr, xctx->text[sel].xscale, xctx->text[sel].yscale, (short)rot, (short)flip, xctx->text[sel].hcenter, xctx->text[sel].vcenter, xctx->text[sel].x0, xctx->text[sel].y0, &xx1,&yy1,&xx2,&yy2, &tmp, &dtmp); + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx); diff --git a/src/findnet.c b/src/findnet.c index 89164d0a..49448cb4 100644 --- a/src/findnet.c +++ b/src/findnet.c @@ -356,6 +356,7 @@ static void find_closest_text(double mx,double my) #if HAS_CAIRO==1 int customfont; #endif + char *estr = NULL; threshold = CADWIREMINDIST * CADWIREMINDIST * xctx->zoom * xctx->zoom; for(i=0;itexts; ++i) { @@ -364,11 +365,13 @@ static void find_closest_text(double mx,double my) #if HAS_CAIRO==1 customfont = set_text_custom_font(&xctx->text[i]); #endif - text_bbox(get_text_floater(i), + estr = my_expand(get_text_floater(i), tclgetintvar("tabstop")); + text_bbox(estr, xctx->text[i].xscale, xctx->text[i].yscale, rot, flip, xctx->text[i].hcenter, xctx->text[i].vcenter, xctx->text[i].x0, xctx->text[i].y0, &xx1,&yy1, &xx2,&yy2, &tmp, &dtmp); + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx); diff --git a/src/move.c b/src/move.c index ab8d60c6..6c06be17 100644 --- a/src/move.c +++ b/src/move.c @@ -519,6 +519,7 @@ void copy_objects(int what) double angle, dtmp; int newpropcnt; double tmpx, tmpy; + char *estr = NULL; #if HAS_CAIRO==1 int customfont; @@ -813,11 +814,13 @@ void copy_objects(int what) #if HAS_CAIRO==1 /* bbox after copy */ customfont = set_text_custom_font(&xctx->text[l]); #endif - text_bbox(get_text_floater(l), xctx->text[l].xscale, + estr = my_expand(get_text_floater(l), tclgetintvar("tabstop")); + text_bbox(estr, xctx->text[l].xscale, xctx->text[l].yscale, xctx->text[l].rot,xctx->text[l].flip, xctx->text[l].hcenter, xctx->text[l].vcenter, xctx->text[l].x0, xctx->text[l].y0, &xctx->rx1,&xctx->ry1, &xctx->rx2,&xctx->ry2, &tmpi, &dtmp); + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx); @@ -913,6 +916,7 @@ void move_objects(int what, int merge, double dx, double dy) int c, i, n, k, tmpint; double angle, dtmp; double tx1,ty1; /* temporaries for swapping coordinates 20070302 */ + char *estr = NULL; #if HAS_CAIRO==1 int customfont; #endif @@ -1263,10 +1267,12 @@ void move_objects(int what, int merge, double dx, double dy) #if HAS_CAIRO==1 /* bbox before move */ customfont = set_text_custom_font(&xctx->text[n]); #endif - text_bbox(get_text_floater(n), xctx->text[n].xscale, + estr = my_expand(get_text_floater(n), tclgetintvar("tabstop")); + text_bbox(estr, xctx->text[n].xscale, xctx->text[n].yscale, xctx->text[n].rot,xctx->text[n].flip, xctx->text[n].hcenter, xctx->text[n].vcenter, xctx->text[n].x0, xctx->text[n].y0, &xctx->rx1,&xctx->ry1, &xctx->rx2,&xctx->ry2, &tmpint, &dtmp); + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx); @@ -1288,10 +1294,12 @@ void move_objects(int what, int merge, double dx, double dy) #if HAS_CAIRO==1 /* bbox after move */ customfont = set_text_custom_font(&xctx->text[n]); #endif - text_bbox(get_text_floater(n), xctx->text[n].xscale, + estr = my_expand(get_text_floater(n), tclgetintvar("tabstop")); + text_bbox(estr, xctx->text[n].xscale, xctx->text[n].yscale, xctx->text[n].rot,xctx->text[n].flip, xctx->text[n].hcenter, xctx->text[n].vcenter, xctx->text[n].x0, xctx->text[n].y0, &xctx->rx1,&xctx->ry1, &xctx->rx2,&xctx->ry2, &tmpint, &dtmp); + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx); diff --git a/src/netlist.c b/src/netlist.c index 9608e28d..739704ca 100644 --- a/src/netlist.c +++ b/src/netlist.c @@ -202,6 +202,7 @@ void hash_object(int what, int type, int n, int c) double x1, y1, x2, y2; int x1a, x2a, y1a, y2a; int skip = 0; + char *estr = NULL; switch(type) { case ELEMENT: @@ -236,11 +237,13 @@ void hash_object(int what, int type, int n, int c) xctx->arc[c][n].a, xctx->arc[c][n].b, &x1, &y1, &x2, &y2); break; case xTEXT: - text_bbox(get_text_floater(n), + estr = my_expand(get_text_floater(n), tclgetintvar("tabstop")); + text_bbox(estr, xctx->text[n].xscale, xctx->text[n].yscale, xctx->text[n].rot, xctx->text[n].flip, xctx->text[n].hcenter, xctx->text[n].vcenter, xctx->text[n].x0, xctx->text[n].y0, &x1,&y1, &x2,&y2, &tmpi, &tmpd); + my_free(_ALLOC_ID_, &estr); break; default: skip = 1; diff --git a/src/save.c b/src/save.c index f3eb145f..3e46e07a 100644 --- a/src/save.c +++ b/src/save.c @@ -3779,11 +3779,13 @@ static void calc_symbol_bbox(int pos) * * for(i=0;i 5) { + char *estr = NULL; if(!fast) { - text_bbox(get_text_floater(n), t->xscale, + estr = my_expand(get_text_floater(n), tclgetintvar("tabstop")); + text_bbox(estr, t->xscale, t->yscale, t->rot, t->flip, t->hcenter, t->vcenter, t->x0, t->y0, &xx1,&yy1,&xx2,&yy2, &tmp, &dtmp); + my_free(_ALLOC_ID_, &estr); bbox(ADD, xx1, yy1, xx2, yy2); } /* verify if there is some difference */ @@ -5247,12 +5250,15 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg } } if(change_done) { + char *estr = NULL; set_modify(1); set_text_flags(t); - text_bbox(get_text_floater(n), t->xscale, + estr = my_expand(get_text_floater(n), tclgetintvar("tabstop")); + text_bbox(estr, t->xscale, t->yscale, t->rot, t->flip, t->hcenter, t->vcenter, t->x0, t->y0, &xx1,&yy1,&xx2,&yy2, &tmp, &dtmp); + my_free(_ALLOC_ID_, &estr); if(!fast) bbox(ADD, xx1, yy1, xx2, yy2); } if(!fast) { diff --git a/src/select.c b/src/select.c index 8d371157..1b8df43d 100644 --- a/src/select.c +++ b/src/select.c @@ -353,7 +353,7 @@ void symbol_bbox(int i, double *x1,double *y1, double *x2, double *y2) for(j=0;j< (xctx->inst[i].ptr+ xctx->sym)->texts; ++j) { double xscale, yscale; - + char *estr = NULL; get_sym_text_size(i, j, &xscale, &yscale); text = (xctx->inst[i].ptr+ xctx->sym)->text[j]; @@ -367,12 +367,14 @@ void symbol_bbox(int i, double *x1,double *y1, double *x2, double *y2) #if HAS_CAIRO==1 customfont=set_text_custom_font(&text); #endif - text_bbox(tmp_txt, xscale, yscale, + estr = my_expand(tmp_txt, tclgetintvar("tabstop")); + text_bbox(estr, xscale, yscale, (text.rot + ( (sym_flip && (text.rot & 1) ) ? sym_rot+2 : sym_rot)) &0x3, sym_flip ^ text.flip, text.hcenter, text.vcenter, x0+text_x0,y0+text_y0, &xx1,&yy1,&xx2,&yy2, &tmp, &dtmp); dbg(1, "symbol bbox: text bbox: %s, %g %g %g %g\n", tmp_txt, xx1, yy1, xx2, yy2); dbg(1, "symbol bbox: text bbox: zoom=%g, lw=%g\n", xctx->zoom, xctx->lw); + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx); @@ -1302,6 +1304,7 @@ void select_inside(double x1,double y1, double x2, double y2, int sel) /*added u #if HAS_CAIRO==1 int customfont; #endif + char *estr = NULL; en_s = tclgetboolvar("enable_stretch"); for(i=0;iwires; ++i) @@ -1337,12 +1340,13 @@ void select_inside(double x1,double y1, double x2, double y2, int sel) /*added u #if HAS_CAIRO==1 customfont = set_text_custom_font(&xctx->text[i]); #endif - - text_bbox(get_text_floater(i), + estr = my_expand(get_text_floater(i), tclgetintvar("tabstop")); + text_bbox(estr, xctx->text[i].xscale, xctx->text[i].yscale, (short)select_rot, (short)select_flip, xctx->text[i].hcenter, xctx->text[i].vcenter, xctx->text[i].x0, xctx->text[i].y0, &xx1,&yy1, &xx2,&yy2, &tmpint, &dtmp); + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx); @@ -1526,6 +1530,7 @@ void select_touch(double x1,double y1, double x2, double y2, int sel) /*added un #if HAS_CAIRO==1 int customfont; #endif + char *estr = NULL; for(i=0;iwires; ++i) { @@ -1547,11 +1552,13 @@ void select_touch(double x1,double y1, double x2, double y2, int sel) /*added un customfont = set_text_custom_font(&xctx->text[i]); #endif - text_bbox(get_text_floater(i), + estr = my_expand(get_text_floater(i), tclgetintvar("tabstop")); + text_bbox(estr, xctx->text[i].xscale, xctx->text[i].yscale, (short)select_rot, (short)select_flip, xctx->text[i].hcenter, xctx->text[i].vcenter, xctx->text[i].x0, xctx->text[i].y0, &xx1,&yy1, &xx2,&yy2, &tmpint, &dtmp); + my_free(_ALLOC_ID_, &estr); #if HAS_CAIRO==1 if(customfont) { cairo_restore(xctx->cairo_ctx);