tooltip component: split text width calculation into its own method
This commit is contained in:
@@ -67,36 +67,10 @@ public class TooltipComponent implements RenderableEntity
|
|||||||
int tooltipHeight = 0;
|
int tooltipHeight = 0;
|
||||||
String[] lines = BR.split(text);
|
String[] lines = BR.split(text);
|
||||||
|
|
||||||
|
// Calculate tooltip size
|
||||||
for (String line : lines)
|
for (String line : lines)
|
||||||
{
|
{
|
||||||
int textWidth = 0;
|
int textWidth = calculateTextWidth(metrics, line);
|
||||||
|
|
||||||
char[] chars = line.toCharArray();
|
|
||||||
|
|
||||||
int begin = 0;
|
|
||||||
for (int j = 0; j < chars.length; j++)
|
|
||||||
{
|
|
||||||
if (chars[j] == '<')
|
|
||||||
{
|
|
||||||
textWidth += metrics.stringWidth(line.substring(begin, j));
|
|
||||||
|
|
||||||
begin = j;
|
|
||||||
}
|
|
||||||
else if (chars[j] == '>')
|
|
||||||
{
|
|
||||||
String subLine = line.substring(begin + 1, j);
|
|
||||||
|
|
||||||
if (subLine.startsWith("img="))
|
|
||||||
{
|
|
||||||
textWidth += MOD_ICON_WIDTH;
|
|
||||||
}
|
|
||||||
|
|
||||||
begin = j + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Include trailing text (after last tag)
|
|
||||||
textWidth += metrics.stringWidth(line.substring(begin, line.length()));
|
|
||||||
|
|
||||||
if (textWidth > tooltipWidth)
|
if (textWidth > tooltipWidth)
|
||||||
{
|
{
|
||||||
@@ -197,6 +171,39 @@ public class TooltipComponent implements RenderableEntity
|
|||||||
return new Dimension(tooltipWidth + OFFSET * 2, tooltipHeight + OFFSET * 2);
|
return new Dimension(tooltipWidth + OFFSET * 2, tooltipHeight + OFFSET * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int calculateTextWidth(FontMetrics metrics, String line)
|
||||||
|
{
|
||||||
|
char[] chars = line.toCharArray();
|
||||||
|
int textWidth = 0;
|
||||||
|
|
||||||
|
int begin = 0;
|
||||||
|
for (int j = 0; j < chars.length; j++)
|
||||||
|
{
|
||||||
|
if (chars[j] == '<')
|
||||||
|
{
|
||||||
|
textWidth += metrics.stringWidth(line.substring(begin, j));
|
||||||
|
|
||||||
|
begin = j;
|
||||||
|
}
|
||||||
|
else if (chars[j] == '>')
|
||||||
|
{
|
||||||
|
String subLine = line.substring(begin + 1, j);
|
||||||
|
|
||||||
|
if (subLine.startsWith("img="))
|
||||||
|
{
|
||||||
|
textWidth += MOD_ICON_WIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
begin = j + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Include trailing text (after last tag)
|
||||||
|
textWidth += metrics.stringWidth(line.substring(begin, line.length()));
|
||||||
|
|
||||||
|
return textWidth;
|
||||||
|
}
|
||||||
|
|
||||||
private void renderModIcon(Graphics2D graphics, int x, int y, IndexedSprite modIcon)
|
private void renderModIcon(Graphics2D graphics, int x, int y, IndexedSprite modIcon)
|
||||||
{
|
{
|
||||||
int sourceOffset = 0;
|
int sourceOffset = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user