static byte getLevelAt(Bidi bidi, int charIndex) { /* return paraLevel if in the trailing WS run, otherwise the real level */ if (bidi.direction != Bidi.MIXED || charIndex >= bidi.trailingWSStart) { return bidi.GetParaLevelAt(charIndex); } else { return bidi.levels[charIndex]; } }
private void bracketInit(BracketData bd) { bd.isoRunLast = 0; bd.isoRuns[0] = new IsoRun(); bd.isoRuns[0].start = 0; bd.isoRuns[0].limit = 0; bd.isoRuns[0].level = GetParaLevelAt(0); bd.isoRuns[0].lastStrong = bd.isoRuns[0].lastBase = bd.isoRuns[0].contextDir = (byte)(GetParaLevelAt(0) & 1); bd.isoRuns[0].contextPos = 0; bd.openings = new Opening[SIMPLE_OPENINGS_COUNT]; bd.isNumbersSpecial = reorderingMode == REORDER_NUMBERS_SPECIAL || reorderingMode == REORDER_INVERSE_FOR_NUMBERS_SPECIAL; }
levels[i] = 0; } else { levels[i] = GetParaLevelAt(i); break; } else if ((flag & MASK_B_S) != 0){ levels[i] = GetParaLevelAt(i); break;
bidiRun.start = paraStart; bidiRun.limit = bidi.paras_limit[paraIndex]; bidiRun.level = GetParaLevelAt(paraStart); return bidiRun;
if ((level < GetParaLevelAt(i) && !((0 == level) && (dirProp == B))) || (MAX_EXPLICIT_LEVEL < level)) {
lineBidi.paraLevel = paraBidi.GetParaLevelAt(start); lineBidi.paraCount = paraBidi.paraCount; lineBidi.runs = new BidiRun[0];
(flags & DirPropFlagMultiRuns) == 0) { resolveImplicitLevels(0, length, GetLRFromLevel(GetParaLevelAt(0)), GetLRFromLevel(GetParaLevelAt(length - 1))); } else { level = GetParaLevelAt(0); nextLevel = levels[0]; if (level < nextLevel) { if ((start > 0) && (dirProps[start - 1] == B)) { sor = GetLRFromLevel(GetParaLevelAt(start)); } else { sor = eor; nextLevel = levels[limit]; } else { nextLevel = GetParaLevelAt(length - 1);
inverseRTL=((start<lastArabicPos) && ((GetParaLevelAt(start) & 1)>0) && (reorderingMode == REORDER_INVERSE_LIKE_DIRECT || reorderingMode == REORDER_INVERSE_FOR_NUMBERS_SPECIAL));
private byte resolveExplicitLevels() { int i = 0; byte dirProp; byte level = GetParaLevelAt(0); byte dirct; isolateCount = 0; case B: flags |= DirPropFlag(B); levels[i] = GetParaLevelAt(i); if ((i + 1) < length) { if (text[i] == CR && text[i + 1] == LF) validIsolateCount = 0; stackLast = 0; previousLevel = embeddingLevel = GetParaLevelAt(i + 1); stack[0] = embeddingLevel; /* initialize base entry to para level, no override, no isolate */ bracketProcessB(bracketData, embeddingLevel);