本文整理汇总了Java中sun.font.TextLineComponent.getAdvanceBetween方法的典型用法代码示例。如果您正苦于以下问题:Java TextLineComponent.getAdvanceBetween方法的具体用法?Java TextLineComponent.getAdvanceBetween怎么用?Java TextLineComponent.getAdvanceBetween使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sun.font.TextLineComponent
的用法示例。
在下文中一共展示了TextLineComponent.getAdvanceBetween方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getAdvanceBetween
import sun.font.TextLineComponent; //导入方法依赖的package包/类
public static float getAdvanceBetween(TextLineComponent[] components, int start, int limit) {
float advance = 0;
int tlcStart = 0;
for(int i = 0; i < components.length; i++) {
TextLineComponent comp = components[i];
int tlcLength = comp.getNumCharacters();
int tlcLimit = tlcStart + tlcLength;
if (tlcLimit > start) {
int measureStart = Math.max(0, start - tlcStart);
int measureLimit = Math.min(tlcLength, limit - tlcStart);
advance += comp.getAdvanceBetween(measureStart, measureLimit);
if (tlcLimit >= limit) {
break;
}
}
tlcStart = tlcLimit;
}
return advance;
}
示例2: calcLineBreak
import sun.font.TextLineComponent; //导入方法依赖的package包/类
private int calcLineBreak(final int pos, final float maxAdvance) {
// either of these statements removes the bug:
//generateComponents(0, fChars.length);
//generateComponents(pos, fChars.length);
int startPos = pos;
float width = maxAdvance;
int tlcIndex;
int tlcStart = fComponentStart;
for (tlcIndex = 0; tlcIndex < fComponents.length; tlcIndex++) {
int gaLimit = tlcStart + fComponents[tlcIndex].getNumCharacters();
if (gaLimit > startPos) {
break;
}
else {
tlcStart = gaLimit;
}
}
// tlcStart is now the start of the tlc at tlcIndex
for (; tlcIndex < fComponents.length; tlcIndex++) {
TextLineComponent tlc = fComponents[tlcIndex];
int numCharsInGa = tlc.getNumCharacters();
int lineBreak = tlc.getLineBreakIndex(startPos - tlcStart, width);
if (lineBreak == numCharsInGa && tlcIndex < fComponents.length) {
width -= tlc.getAdvanceBetween(startPos - tlcStart, lineBreak);
tlcStart += numCharsInGa;
startPos = tlcStart;
}
else {
return tlcStart + lineBreak;
}
}
if (fComponentLimit < fChars.length) {
// format more text and try again
//if (haveLayoutWindow) {
// outOfWindow++;
//}
generateComponents(pos, fChars.length);
return calcLineBreak(pos, maxAdvance);
}
return fChars.length;
}
示例3: calcLineBreak
import sun.font.TextLineComponent; //导入方法依赖的package包/类
private int calcLineBreak(final int pos, final float maxAdvance) {
// either of these statements removes the bug:
//generateComponents(0, fChars.length);
//generateComponents(pos, fChars.length);
int startPos = pos;
float width = maxAdvance;
int tlcIndex;
int tlcStart = fComponentStart;
for (tlcIndex = 0; tlcIndex < fComponents.length; tlcIndex++) {
int gaLimit = tlcStart + fComponents[tlcIndex].getNumCharacters();
if (gaLimit > startPos) {
break;
}
else {
tlcStart = gaLimit;
}
}
// tlcStart is now the start of the tlc at tlcIndex
for (; tlcIndex < fComponents.length; tlcIndex++) {
TextLineComponent tlc = fComponents[tlcIndex];
int numCharsInGa = tlc.getNumCharacters();
int lineBreak = tlc.getLineBreakIndex(startPos - tlcStart, width);
if (lineBreak == numCharsInGa && tlcIndex < fComponents.length) {
width -= tlc.getAdvanceBetween(startPos - tlcStart, lineBreak);
tlcStart += numCharsInGa;
startPos = tlcStart;
}
else {
return tlcStart + lineBreak;
}
}
if (fComponentLimit < fChars.length) {
// format more text and try again
//if (haveLayoutWindow) {
// outOfWindow++;
//}
generateComponents(pos, fChars.length);
return calcLineBreak(pos, maxAdvance);
}
return fChars.length;
}