Пример #1
0
        public bool MoveNext()
        {
            if (_index < _line.Runs.Count)
            {
                Line.Run run = _line.Runs[_index];
                _agent.offset = run.offset;
                _agent.length = run.length;
                _agent.level  = run.level;
                ++_index;

                return(true);
            }

            Reset();
            return(false);
        }
Пример #2
0
        public bool MoveNext()
        {
            int runCount = _line.Runs.Count;

            for (; _runIndex < runCount; _runIndex++)
            {
                Line.Run run = _line.Runs[_runIndex];

                if ((run.level & 1) != 0)
                {
                    int index = _charIndex;
                    int limit = run.offset + run.length;

                    if (index == -1)
                    {
                        index = run.offset;
                    }

                    for (; index < limit; index++)
                    {
                        int mirror = PairingLookup.DetermineMirror(_line.Text[index]);

                        if (mirror != 0)
                        {
                            _charIndex    = index + 1;
                            _agent.index  = index;
                            _agent.mirror = mirror;

                            return(true);
                        }
                    }
                }

                _charIndex = -1;
            }

            Reset();
            return(false);
        }