File: src\Framework\System\Windows\Documents\FixedLineResult.cs
Project: wpf\PresentationFramework.csproj (PresentationFramework)
//---------------------------------------------------------------------------
// <copyright file="FixedLineResult.cs" company="Microsoft">
//      Copyright (C) 2004 by Microsoft Corporation.  All rights reserved.
// </copyright>
//
// Description:
//      FixedLineResult represents a per-line layout info for a fixe page
//
// History:
//      11/23/2004 - Zhenbin Xu (ZhenbinX) - Created.
//
//---------------------------------------------------------------------------
 
namespace System.Windows.Documents
{
    using MS.Internal.Documents;
    using System;
    using System.Collections;
    using System.Diagnostics;
    using System.Globalization;
    
 
    //=====================================================================
    /// <summary>
    ///     FixedLineResult represents a per-line layout info for a fixe page
    /// </summary>
    internal sealed class FixedLineResult : IComparable
    {
        //--------------------------------------------------------------------
        //
        // Connstructors
        //
        //---------------------------------------------------------------------
 
        #region Constructors
        internal FixedLineResult(FixedNode[] nodes, Rect layoutBox)
        {
            _nodes = nodes;
            _layoutBox = layoutBox;
        }
        #endregion Constructors
        
        //--------------------------------------------------------------------
        //
        // Public Methods
        //
        //---------------------------------------------------------------------
 
        // IComparable Override
        public int CompareTo(object o)
        {
            if (o == null)
            {
                throw new ArgumentNullException("o");
            }
 
            if (o.GetType() != typeof(FixedLineResult))
            {
                throw new ArgumentException(SR.Get(SRID.UnexpectedParameterType, o.GetType(), typeof(FixedLineResult)), "o");
            }
 
            FixedLineResult lineResult = (FixedLineResult)o;
            return this.BaseLine.CompareTo(lineResult.BaseLine);
        }
 
 
#if DEBUG
        /// <summary>
        /// Create a string representation of this object
        /// </summary>
        /// <returns>string - A string representation of this object</returns>
        public override string ToString()
        {
            return String.Format(CultureInfo.InvariantCulture, "FLR[{0}:{1}][{2}][{3}]", Start.ToString(), End.ToString(), BaseLine, _layoutBox);
        }
#endif
 
        //--------------------------------------------------------------------
        //
        // Public Properties
        //
        //---------------------------------------------------------------------
 
        //--------------------------------------------------------------------
        //
        // Public Events
        //
        //---------------------------------------------------------------------
 
        //--------------------------------------------------------------------
        //
        // Internal Methods
        //
        //---------------------------------------------------------------------
 
 
        //--------------------------------------------------------------------
        //
        // Internal Properties
        //
        //---------------------------------------------------------------------
 
        #region Internal Properties
        //
        internal FixedNode Start
        {
            get
            {
                return _nodes[0];
            }
        }
 
        internal FixedNode End
        {
            get
            {
                return _nodes[_nodes.Length - 1];
            }
        }
 
        internal FixedNode[] Nodes
        {
            get
            {
                return _nodes;
            }
        }
 
        internal double BaseLine
        {
            get
            {
                return _layoutBox.Bottom;
            }
        }
 
        internal Rect LayoutBox
        {
            get
            {
                return _layoutBox;
            }
        }
        #endregion Internal Properties
 
        //--------------------------------------------------------------------
        //
        // Private Methods
        //
        //---------------------------------------------------------------------
 
        #region Private Properties
        #endregion Private Properties
 
        //--------------------------------------------------------------------
        //
        // Private Fields
        //
        //---------------------------------------------------------------------
        #region Private Fields
        private readonly FixedNode[]  _nodes;
        private readonly Rect       _layoutBox;  // relative to page
        #endregion Private Fields
    }
}