public Dimension2D calculateDimension(StringBounder stringBounder) { final Dimension2D rect = stringBounder.calculateDimension(fontConfiguration.getFont(), text); Log.debug("g2d=" + rect); Log.debug("Size for " + text + " is " + rect); double h = rect.getHeight(); if (h < 10) { h = 10; } final double width = text.indexOf('\t') == -1 ? rect.getWidth() : getWidth(stringBounder); return new Dimension2DDouble(width, h); }
double getWidth(StringBounder stringBounder) { final StringTokenizer tokenizer = new StringTokenizer(text, "\t", true); final double tabSize = getTabSize(stringBounder); double x = 0; while (tokenizer.hasMoreTokens()) { final String s = tokenizer.nextToken(); if (s.equals("\t")) { final double remainder = x % tabSize; x += tabSize - remainder; } else { final Dimension2D dim = stringBounder.calculateDimension(fontConfiguration.getFont(), s); x += dim.getWidth(); } } return x; }
double getTabSize(StringBounder stringBounder) { return stringBounder.calculateDimension(fontConfiguration.getFont(), " ").getWidth(); }