fixedPageContentExtractor.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / IO / Packaging / fixedPageContentExtractor.cs / 1305600 / fixedPageContentExtractor.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// Description: 
//              Given a DOM node for a fixed page, enumerates its text content. 
//
// History: 
//  05/11/2004: JohnLarc: Initial implementation
//---------------------------------------------------------------------------

using System; 
using System.Xml;
 
namespace MS.Internal.IO.Packaging 
{
    ///  
    /// Implements a sequence of (textContent, precedingDelimiter) pairs for
    /// a fixed page node.
    /// 
    internal class FixedPageContentExtractor 
    {
        //----------------------------------------------------- 
        // 
        //  Constructors
        // 
        //-----------------------------------------------------

        #region Constructors
        ///  
        /// Initialize a FixedPageContentExtractor from a DOM node.
        ///  
        internal FixedPageContentExtractor(XmlNode fixedPage) 
        {
            _fixedPageInfo = new XmlFixedPageInfo(fixedPage); 
            _nextGlyphRun = 0;
        }
        #endregion Constructors
 
        //------------------------------------------------------
        // 
        //  Internal Methods 
        //
        //----------------------------------------------------- 

        #region Internal Methods
        /// 
        /// Return the content of the next glyph run, with a boolean indication 
        /// whether it is separated by a space form the preceding glyph run.
        ///  
        internal string NextGlyphContent(out bool inline, out uint lcid) 
        {
            // Right now, we use the simplest possible heuristic for 
            // spacing glyph runs: All pairs of adjacent glyph runs are assumed
            // to be separated by a word break.
            inline = false;
            lcid = 0; 

            // End of page? 
            if (_nextGlyphRun >= _fixedPageInfo.GlyphRunCount) 
            {
                return null; 
            }

            // Retrieve inline, lcid and return value from the next glyph run info.
            GlyphRunInfo glyphRunInfo = _fixedPageInfo.GlyphRunAtPosition(_nextGlyphRun); 
            lcid = glyphRunInfo.LanguageID;
 
            // Point to the next glyph run for the next call and return. 
            ++_nextGlyphRun;
            return glyphRunInfo.UnicodeString; 
        }
        #endregion Internal Methods

        //------------------------------------------------------ 
        //
        //  Internal Properties 
        // 
        //------------------------------------------------------
 
        #region Internal Properties
        /// 
        /// Indicates whether no more content can be returned.
        ///  
        internal bool AtEndOfPage
        { 
            get 
            {
                return _nextGlyphRun >= _fixedPageInfo.GlyphRunCount; 
            }
        }
        #endregion Internal Properties
 
        //-----------------------------------------------------
        // 
        //  Private Fields 
        //
        //------------------------------------------------------ 

        #region Private Fields
        private XmlFixedPageInfo _fixedPageInfo;
        private int _nextGlyphRun; 
        #endregion Private Fields
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// Description: 
//              Given a DOM node for a fixed page, enumerates its text content. 
//
// History: 
//  05/11/2004: JohnLarc: Initial implementation
//---------------------------------------------------------------------------

using System; 
using System.Xml;
 
namespace MS.Internal.IO.Packaging 
{
    ///  
    /// Implements a sequence of (textContent, precedingDelimiter) pairs for
    /// a fixed page node.
    /// 
    internal class FixedPageContentExtractor 
    {
        //----------------------------------------------------- 
        // 
        //  Constructors
        // 
        //-----------------------------------------------------

        #region Constructors
        ///  
        /// Initialize a FixedPageContentExtractor from a DOM node.
        ///  
        internal FixedPageContentExtractor(XmlNode fixedPage) 
        {
            _fixedPageInfo = new XmlFixedPageInfo(fixedPage); 
            _nextGlyphRun = 0;
        }
        #endregion Constructors
 
        //------------------------------------------------------
        // 
        //  Internal Methods 
        //
        //----------------------------------------------------- 

        #region Internal Methods
        /// 
        /// Return the content of the next glyph run, with a boolean indication 
        /// whether it is separated by a space form the preceding glyph run.
        ///  
        internal string NextGlyphContent(out bool inline, out uint lcid) 
        {
            // Right now, we use the simplest possible heuristic for 
            // spacing glyph runs: All pairs of adjacent glyph runs are assumed
            // to be separated by a word break.
            inline = false;
            lcid = 0; 

            // End of page? 
            if (_nextGlyphRun >= _fixedPageInfo.GlyphRunCount) 
            {
                return null; 
            }

            // Retrieve inline, lcid and return value from the next glyph run info.
            GlyphRunInfo glyphRunInfo = _fixedPageInfo.GlyphRunAtPosition(_nextGlyphRun); 
            lcid = glyphRunInfo.LanguageID;
 
            // Point to the next glyph run for the next call and return. 
            ++_nextGlyphRun;
            return glyphRunInfo.UnicodeString; 
        }
        #endregion Internal Methods

        //------------------------------------------------------ 
        //
        //  Internal Properties 
        // 
        //------------------------------------------------------
 
        #region Internal Properties
        /// 
        /// Indicates whether no more content can be returned.
        ///  
        internal bool AtEndOfPage
        { 
            get 
            {
                return _nextGlyphRun >= _fixedPageInfo.GlyphRunCount; 
            }
        }
        #endregion Internal Properties
 
        //-----------------------------------------------------
        // 
        //  Private Fields 
        //
        //------------------------------------------------------ 

        #region Private Fields
        private XmlFixedPageInfo _fixedPageInfo;
        private int _nextGlyphRun; 
        #endregion Private Fields
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK