コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
 public void HighlightFirst()
 {
     CurrentSyllable = new SyllableLocation(0, 0);
     ScrollPositionX = 0;
     ScrollPositionY = 0;
 }