Index: trunk/util/boxsym-rnd/generator.awk =================================================================== --- trunk/util/boxsym-rnd/generator.awk (revision 9922) +++ trunk/util/boxsym-rnd/generator.awk (revision 9923) @@ -42,10 +42,16 @@ } else pname = PIN[pin, "label"] - len = length(pname) - if (PIN[pin, "dir"] != "") - len++; - len = int(len * text_size_mult + 0.5) + + if ((!(pname in TEXTW))) { + len = length(pname) + if (PIN[pin, "dir"] != "") + len++; + len = int(len * text_size_mult + 0.5) + } + else + len = int(TEXTW[pname] / 1000 + 0.5) + # dbg("name=" pname " " len) if (len > TXTBRD[loc]) TXTBRD[loc] = len @@ -382,8 +388,45 @@ } } +function get_text_size1(cmd, txt) +{ + print "fawk_print(" q "T: " txt q ", fontinfo(\"TextWidth\", " q txt q ", \"term-secondary\"), fontinfo(\"TextHeight\", " q txt q ", \"term-secondary\"));" | cmd +} +function get_text_sizes( n,pname,tmpfn,cmd) +{ + tmpfn = "boxsym-rnd.est.tmp" + close(tmpfn) + + cmd = "sch-rnd --gui batch > " tmpfn + close(cmd); + + print "fawk" | cmd + + for(n in PIN) { + if (n ~ (SUBSEP "label$")) { + get_text_size1(cmd, PIN[n]); + } + if (n ~ (SUBSEP "num$")) { + pname = n + sub(SUBSEP "num$", "", pname) + sub(".*::", "", pname) + get_text_size1(cmd, pname); + } + } + close(cmd) + while((getline < tmpfn) == 1) { + if ($1 == "T:") { + TEXTW[$2] = $3 + TEXTH[$2] = $4 + } + } + close(tmpfn) +} + + END { + get_text_sizes() gen_monolith() dbg("---------") gen_slots()