Example #1
0
        public int GetOriginalPosition(int position, PositionRounding rounding)
        {
            var subset = GetSubset(position);

            if (subset == null)
            {
                switch (rounding)
                {
                case PositionRounding.None:
                    throw new UnableToDetectOriginalPositionException();

                case PositionRounding.Up:
                    subset = GetClosestHigherSubset(position);

                    return(subset == null ? int.MaxValue : subset.Index - 1 - subset.OriginalTextShift);

                case PositionRounding.Down:
                    subset = GetClosestLowerSubset(position);

                    return(subset == null ? 0 : subset.Index + subset.Length - subset.OriginalTextShift);

                default:
                    throw new NotSupportedException("Unsupported original position rounding option.");
                }
            }

            return(position - subset.OriginalTextShift);
        }
Example #2
0
        public virtual int GetOriginalPosition(int position, PositionRounding rounding)
        {
            if (Parent != null)
            {
                var originalPosition = Parent.GetOriginalPosition(position + Origin.Start, rounding);

                return(originalPosition);
            }

            return(position + Origin.Start);
        }
Example #3
0
        public override int GetOriginalPosition(int position, PositionRounding rounding)
        {
            position = TextMap.GetOriginalPosition(position, rounding) + Origin.Start;

            if (Parent != null)
            {
                var startOriginalPosition = Parent.GetOriginalPosition(position, rounding);

                return(startOriginalPosition);
            }

            return(position);
        }