public void HighlightNextLine(bool forward) { if (Source.SyllableLines.Count <= 0) { return; } Debug.Assert(m_WriteFactory != null && m_Run != null && m_NextRun != null, "not initialized"); var subSyllables = Source.SyllableLines[CurrentSyllable.Line][CurrentSyllable.Column]; var centerX = (m_Run.GetSubSyllableBounds(subSyllables[0]).TopLeft.X + m_Run.GetSubSyllableBounds(subSyllables.Last()).BottomRight.X) / 2.0f; var newLineIndex = CurrentSyllable.Line + (forward ? 1 : -1); if (newLineIndex >= 0 && newLineIndex < Source.SyllableLines.Count) { CurrentSyllable = new SyllableLocation(newLineIndex, FindNearestSyllableIndex(newLineIndex, centerX)); } ScrollIntoCurrentSyllable(); }
public void HighlightNext(bool forward) { if (Source.SyllableLines.Count <= 0) { return; } var newLineIndex = CurrentSyllable.Line; var newColumnIndex = CurrentSyllable.Column + (forward ? 1 : -1); if (newColumnIndex >= 0 && newColumnIndex < Source.SyllableLines[newLineIndex].Length) { CurrentSyllable = new SyllableLocation(newLineIndex, newColumnIndex); } else { newLineIndex += forward ? 1 : -1; if (newLineIndex >= 0 && newLineIndex < Source.SyllableLines.Count) { newColumnIndex = forward ? 0 : Source.SyllableLines[newLineIndex].Length - 1; CurrentSyllable = new SyllableLocation(newLineIndex, newColumnIndex); } } ScrollIntoCurrentSyllable(); }
public void HighlightFirst() { CurrentSyllable = new SyllableLocation(0, 0); ScrollPositionX = 0; ScrollPositionY = 0; }