BidiRun run = line.getVisualRun(i); int st = run.getStart(); int e = run.getLimit(); int j = run.getDirection() == Bidi.LTR ? st : e - 1; int l = run.getDirection() == Bidi.LTR ? e : st - 1; boolean plus = run.getDirection() == Bidi.LTR; while (j != l) { res.append(s.charAt(j));
@Override public BidiTextRun getVisualRun(int runIndex) { BidiRun run = bidi.getVisualRun(runIndex); BidiTextRun textRun = new BidiTextRun(run.getStart(), run.getLength(), run.getDirection()); return textRun; }
static void getSingleRun(Bidi bidi, byte level) { /* simple, single-run case */ bidi.runs = bidi.simpleRuns; bidi.runCount = 1; /* fill and reorder the single run */ bidi.runs[0] = new BidiRun(0, bidi.length, level); }
@Override public BidiTextRun getVisualRun(int runIndex) { BidiRun run = bidi.getVisualRun(runIndex); BidiTextRun textRun = new BidiTextRun(run.getStart(), run.getLength(), run.getDirection()); return textRun; }
static BidiRun getVisualRun(Bidi bidi, int runIndex) { int start = bidi.runs[runIndex].start; int limit; byte level = bidi.runs[runIndex].level; if (runIndex > 0) { limit = start + bidi.runs[runIndex].limit - bidi.runs[runIndex - 1].limit; } else { limit = start + bidi.runs[0].limit; } return new BidiRun(start, limit, level); }
static BidiRun getLogicalRun(Bidi bidi, int logicalPosition) { /* this is done based on runs rather than on levels since levels have a special interpretation when REORDER_RUNS_ONLY */ BidiRun newRun = new BidiRun(), iRun; getRuns(bidi); int runCount = bidi.runCount; int visualStart = 0, logicalLimit = 0; iRun = bidi.runs[0]; for (int i = 0; i < runCount; i++) { iRun = bidi.runs[i]; logicalLimit = iRun.start + iRun.limit - visualStart; if ((logicalPosition >= iRun.start) && (logicalPosition < logicalLimit)) { break; } visualStart = iRun.limit; } newRun.start = iRun.start; newRun.limit = logicalLimit; newRun.level = iRun.level; return newRun; }
paraStart = bidi.paras_limit[paraIndex - 1]; BidiRun bidiRun = new BidiRun(); bidiRun.start = paraStart; bidiRun.limit = bidi.paras_limit[paraIndex];
if (bidiRun.isEvenRun()) { dest.append(doWriteForward(text, bidiRun.start, bidiRun.limit, markFlag = 0; if (bidiRun.isEvenRun()) { if (bidi.isInverse() && dirProps[bidiRun.start] != Bidi.L) { if (bidiRun.isEvenRun()) { dest.append(doWriteReverse(text, bidiRun.start, bidiRun.limit, if (bidiRun.isEvenRun()) { if (dirProps[bidiRun.limit - 1] != Bidi.L) { dest.append(LRM_CHAR);