/// <summary>
        /// Returns an array with 3 ranges indicating the first and last point for the given lines in each region.
        /// </summary>
        /// <param name="first">The index of the first line.</param>
        /// <param name="last">The index of the last line.</param>
        /// <param name="allowEstimatesForOutOfViewLines">if set to <c>true</c> allow estimates for out of view lines.</param>
        /// <returns></returns>
        public override DoubleSpan[] RangeToRegionPoints(int first, int last, bool allowEstimatesForOutOfViewLines)
        {
            var result = new DoubleSpan[3];

            for (int n = 0; n < 3; n++)
            {
                result[n] = RangeToPoints((ScrollAxisRegion)n, first, last, allowEstimatesForOutOfViewLines);
            }
            return(result);
            //new DoubleSpan[3] { DoubleSpan.Empty, DoubleSpan.Empty, DoubleSpan.Empty };
        }
        /// <summary>
        /// Returns an array with 3 ranges indicating the first and last point for the given lines in each region.
        /// </summary>
        /// <param name="first">The index of the first line.</param>
        /// <param name="last">The index of the last line.</param>
        /// <param name="allowEstimatesForOutOfViewLines">if set to <c>true</c> allow estimates for out of view lines.</param>
        /// <returns></returns>
        public override DoubleSpan[] RangeToRegionPoints(int first, int last, bool allowEstimatesForOutOfViewLines)
        {
            double p1, p2;

            p1 = Distances.GetCumulatedDistanceAt(first);
            p2 = last >= Distances.Count - 1 ? Distances.TotalDistance : Distances.GetCumulatedDistanceAt(last + 1);

            var result = new DoubleSpan[3];

            for (int n = 0; n < 3; n++)
            {
                result[n] = RangeToPointsHelper((ScrollAxisRegion)n, p1, p2);
            }

            return(result);
        }