java bidi_Java Bidi類代碼示例

本文整理匯總了Java中java.text.Bidi類的典型用法代碼示例。如果您正苦於以下問題:Java Bidi類的具體用法?Java Bidi怎麽用?Java Bidi使用的例子?那麽恭喜您, 這裏精選的類代碼示例或許可以為您提供幫助。

Bidi類屬於java.text包,在下文中一共展示了Bidi類的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於我們的係統推薦出更棒的Java代碼示例。

示例1: makeTextLineOnRange

​點讚 3

import java.text.Bidi; //導入依賴的package包/類

private TextLine makeTextLineOnRange(int startPos, int limitPos) {

int[] charsLtoV = null;

byte[] charLevels = null;

if (fBidi != null) {

Bidi lineBidi = fBidi.createLineBidi(startPos, limitPos);

charLevels = BidiUtils.getLevels(lineBidi);

int[] charsVtoL = BidiUtils.createVisualToLogicalMap(charLevels);

charsLtoV = BidiUtils.createInverseMap(charsVtoL);

}

TextLineComponent[] components = makeComponentsOnRange(startPos, limitPos);

return new TextLine(fFrc,

components,

fBaselineOffsets,

fChars,

startPos,

limitPos,

charsLtoV,

charLevels,

fIsDirectionLTR);

}

開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:26,

示例2: createLineFromText

​點讚 3

import java.text.Bidi; //導入依賴的package包/類

/**

* Create a TextLine from the Font and character data over the

* range. The range is relative to both the StyledParagraph and the

* character array.

*/

public static TextLine createLineFromText(char[] chars,

StyledParagraph styledParagraph,

TextLabelFactory factory,

boolean isDirectionLTR,

float[] baselineOffsets) {

factory.setLineContext(0, chars.length);

Bidi lineBidi = factory.getLineBidi();

int[] charsLtoV = null;

byte[] levels = null;

if (lineBidi != null) {

levels = BidiUtils.getLevels(lineBidi);

int[] charsVtoL = BidiUtils.createVisualToLogicalMap(levels);

charsLtoV = BidiUtils.createInverseMap(charsVtoL);

}

TextLineComponent[] components =

getComponents(styledParagraph, chars, 0, chars.length, charsLtoV, levels, factory);

return new TextLine(factory.getFontRenderContext(), components, baselineOffsets,

chars, 0, chars.length, charsLtoV, levels, isDirectionLTR);

}

開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:30,

示例3: standardCreateTextLine

​點讚 3

import java.text.Bidi; //導入依賴的package包/類

/**

* Create a TextLine from the text. chars is just the text in the iterator.

*/

public static TextLine standardCreateTextLine(FontRenderContext frc,

AttributedCharacterIterator text,

char[] chars,

float[] baselineOffsets) {

StyledParagraph styledParagraph = new StyledParagraph(text, chars);

Bidi bidi = new Bidi(text);

if (bidi.isLeftToRight()) {

bidi = null;

}

int layoutFlags = 0; // no extra info yet, bidi determines run and line direction

TextLabelFactory factory = new TextLabelFactory(frc, chars, bidi, layoutFlags);

boolean isDirectionLTR = true;

if (bidi != null) {

isDirectionLTR = bidi.baseIsLeftToRight();

}

return createLineFromText(chars, styledParagraph, factory, isDirectionLTR, baselineOffsets);

}

開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:23,

示例4: getLevels

​點讚 3

import java.text.Bidi; //導入依賴的package包/類

/**

* Return the level of each character into the levels array starting at start.

* This is a convenience method for clients who prefer to use an explicit levels

* array instead of iterating over the runs.

*

* @param levels the array to receive the character levels

* @param start the starting offset into the the array

* @throws IndexOutOfBoundsException if start is less than 0 or

* start + getLength() is greater than levels.length.

*/

public static void getLevels(Bidi bidi, byte[] levels, int start) {

int limit = start + bidi.getLength();

if (start < 0 || limit > levels.length) {

throw new IndexOutOfBoundsException("levels.length = " + levels.length +

" start: " + start + " limit: " + limit);

}

int runCount = bidi.getRunCount();

int p = start;

for (int i = 0; i < runCount; ++i) {

int rlimit = start + bidi.getRunLimit(i);

byte rlevel = (byte)bidi.getRunLevel(i);

while (p < rlimit) {

levels[p++] = rlevel;

}

}

}

開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:30,

示例5: getLevels

​點讚 3

import java.text.Bidi; //導入依賴的package包/類

/**

* Return the level of each character into the levels array starting at start.

* This is a convenience method for clients who prefer to use an explicit levels

* array instead of iterating over the runs.

*

* @param levels the array to receive the character levels

* @param start the starting offset into the array

* @throws IndexOutOfBoundsException if {@code start} is less than 0 or

* {@code start + getLength()} is greater than {@code levels.length}.

*/

public static void getLevels(Bidi bidi, byte[] levels, int start) {

int limit = start + bidi.getLength();

if (start < 0 || limit > levels.length) {

throw new IndexOutOfBoundsException("levels.length = " + levels.length +

" start: " + start + " limit: " + limit);

}

int runCount = bidi.getRunCount();

int p = start;

for (int i = 0; i < runCount; ++i) {

int rlimit = start + bidi.getRunLimit(i);

byte rlevel = (byte)bidi.getRunLevel(i);

while (p < rlimit) {

levels[p++] = rlevel;

}

}

}

開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:30,

示例6: isRTL

​點讚 3

import java.text.Bidi; //導入依賴的package包/類

/**

* This method determines if the direction of a substring is right-to-left.

* If the string is empty that determination is based on the default system language

* Locale.getDefault().

* The method can handle invalid substring definitions (start > end etc.), in which case the

* method returns False.

*

* @return True if the text direction is right-to-left, false otherwise.

*/

public static boolean isRTL(CharSequence s, int start, int end) {

if (s == null || s.length() == 0) {

// empty string --> determine the direction from the default language

return isRTL(Locale.getDefault());

}

if (start == end) {

// if no character is selected we need to expand the selection

start = Math.max(0, --start);

if (start == end) {

end = Math.min(s.length(), ++end);

}

}

try {

Bidi bidi = new Bidi(s.subSequence(start, end).toString(), Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);

return ! bidi.baseIsLeftToRight();

}

catch (IndexOutOfBoundsException e) {

return false;

}

}

開發者ID:Ronak-LM,項目名稱:memoir,代碼行數:32,

示例7: makeTextLineOnRange

​點讚 3

import java.text.Bidi; //導入依賴的package包/類

private TextLine makeTextLineOnRange(int startPos, int limitPos) {

int[] charsLtoV = null;

byte[] charLevels = null;

if (fBidi != null) {

Bidi lineBidi = fBidi.createLineBidi(startPos, limitPos);

charLevels = BidiUtils.getLevels(lineBidi);

int[] charsVtoL = BidiUtils.createVisualToLogicalMap(charLevels);

charsLtoV = BidiUtils.createInverseMap(charsVtoL);

}

TextLineComponent[] components = makeComponentsOnRange(startPos, limitPos);

return new TextLine(fFrc,

components,

fBaselineOffsets,

fChars,

startPos,

limitPos,

charsLtoV,

charLevels,

fIsDirectionLTR);

}

開發者ID:jgaltidor,項目名稱:VarJ,代碼行數:26,

注:本文中的java.text.Bidi類示例整理自Github/MSDocs等源碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值