6 * Revision 1.3 1995/12/22 22:39:12 tamches
9 * Revision 1.2 1995/12/19 00:53:34 tamches
10 * new args to tvMetric; it calls changeNumSigFigs
11 * changeNumSigFigs written to update valuesPixWidth & numSigFigs
12 * getColPixWidth updated correspondingly
14 * Revision 1.1 1995/11/04 00:45:59 tamches
15 * First version of new table visi
22 tvMetric::tvMetric(unsigned iVisiLibId,
23 const string &iName, const string &iUnitsName,
24 XFontStruct *nameFontStruct, XFontStruct *unitsNameFontStruct,
25 XFontStruct *valuesFontStruct,
26 unsigned iNumSigFigs) :
27 name(iName), unitsName(iUnitsName) {
28 visiLibId = iVisiLibId;
29 namePixWidth = XTextWidth(nameFontStruct, name.string_of(), name.length());
30 unitsPixWidth = XTextWidth(unitsNameFontStruct, iUnitsName.string_of(),
32 changeNumSigFigs(iNumSigFigs, valuesFontStruct); // updates valuesPixWidth, too
35 void tvMetric::changeNumSigFigs(unsigned newNumSigFigs, XFontStruct *valuesFontStruct) {
36 numSigFigs = newNumSigFigs;
38 // need to recalculate valuesPixWidth
40 // for values, include a decimal point and numSigFigs characters.
41 valuesPixWidth = XTextWidth(valuesFontStruct, ".", 1);
42 valuesPixWidth += numSigFigs * XTextWidth(valuesFontStruct, "0", 1); // a typical digit
43 valuesPixWidth += XTextWidth(valuesFontStruct, "0", 1);
44 // ... and a possible leading 0 not counted against the num of sig figs
47 unsigned tvMetric::getColPixWidth() const {
48 unsigned result = max(getNamePixWidth(), getUnitsPixWidth());
50 // now we must consider sig figs: the values themselves might be wider
51 // than "result" so far, which includes the labelling.
52 result = max(result, valuesPixWidth);
55 const unsigned horiz_padding_each_side = 3;
56 result += 2*horiz_padding_each_side;