|
|
|
@ -53,7 +53,7 @@ class StringBlock implements Cloneable { |
|
|
|
|
private int lineCount; |
|
|
|
|
private LineWrapMode wrapType = LineWrapMode.Word; |
|
|
|
|
private float[] tabPos; |
|
|
|
|
private float tabWidth = 50; |
|
|
|
|
private float tabWidth = BitmapFont.DEFAULT_TAB_WIDTH; |
|
|
|
|
private char ellipsisChar = 0x2026; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -91,6 +91,7 @@ class StringBlock implements Cloneable { |
|
|
|
|
clone.color = color.clone(); |
|
|
|
|
if (textBox != null) |
|
|
|
|
clone.textBox = textBox.clone(); |
|
|
|
|
// tabPos is read-only and replaced on write.
|
|
|
|
|
return clone; |
|
|
|
|
} catch (CloneNotSupportedException ex) { |
|
|
|
|
throw new AssertionError(); |
|
|
|
@ -172,28 +173,38 @@ class StringBlock implements Cloneable { |
|
|
|
|
void setLineWrapMode(LineWrapMode wrap) { |
|
|
|
|
this.wrapType = wrap; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void setEllipsisChar(char c) { |
|
|
|
|
this.ellipsisChar = c; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int getEllipsisChar() { |
|
|
|
|
return ellipsisChar; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void setTabWidth(float tabWidth) { |
|
|
|
|
this.tabWidth = tabWidth; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void setTabPosition(float[] tabs) { |
|
|
|
|
this.tabPos = tabs; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
float getTabWidth() { |
|
|
|
|
return tabWidth; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
float[] getTabPosition() { |
|
|
|
|
return tabPos; |
|
|
|
|
if(tabs != null && tabs.length > 0) { |
|
|
|
|
this.tabPos = tabs.clone(); |
|
|
|
|
} else { |
|
|
|
|
this.tabPos = null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void setEllipsisChar(char c) { |
|
|
|
|
this.ellipsisChar = c; |
|
|
|
|
} |
|
|
|
|
float calcNextTabPosition(float posX) { |
|
|
|
|
// If there is an upcoming user-set tab stop, use that one.
|
|
|
|
|
if (tabPos != null && posX < tabPos[tabPos.length-1]) { |
|
|
|
|
for (int i = 0; i < tabPos.length; i++) { |
|
|
|
|
if (posX < tabPos[i]) { |
|
|
|
|
return tabPos[i]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int getEllipsisChar() { |
|
|
|
|
return ellipsisChar; |
|
|
|
|
// No upcoming tab stops available, use default tab width.
|
|
|
|
|
return (float)Math.floor(posX / tabWidth) * tabWidth + tabWidth; |
|
|
|
|
} |
|
|
|
|
} |