FixedSOMElement.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Documents / FixedSOMElement.cs / 1 / FixedSOMElement.cs

                            /*++ 

    File: FixedSOMElement.cs

    Copyright (C) 2005 Microsoft Corporation. All rights reserved. 

    Description: 
       Abstract class that provides a common base class for all non-container semantic elements. 
       These elements have a fixed node and start and end symbol indices associated with them.
 
    History:
       05/17/2005: [....] - Created

--*/ 

namespace System.Windows.Documents 
{ 
    using System.Collections.Generic;
    using System.Diagnostics; 
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    using System.Windows.Controls; 

    internal abstract class FixedSOMElement : FixedSOMSemanticBox 
    { 
        //--------------------------------------------------------------------
        // 
        // Constructors
        //
        //---------------------------------------------------------------------
 
        #region Constructors
        protected FixedSOMElement(FixedNode fixedNode, int startIndex, int endIndex, GeneralTransform transform) 
        { 
            _fixedNode = fixedNode;
            _startIndex = startIndex; 
            _endIndex = endIndex;
            Transform trans = transform.AffineTransform;
            if (trans != null)
            { 
                _mat = trans.Value;
            } 
            else 
            {
                _mat = Transform.Identity.Value; 
            }
        }

        protected FixedSOMElement(FixedNode fixedNode, GeneralTransform transform) 
        {
            _fixedNode = fixedNode; 
 
            Transform trans = transform.AffineTransform;
            if (trans != null) 
            {
                _mat = trans.Value;
            }
            else 
            {
                _mat = Transform.Identity.Value; 
            } 
        }
 
        #endregion Constructors


        //------------------------------------------------------------------- 
        //
        // Public Properties 
        // 
        //---------------------------------------------------------------------
 
        #region Static methods

        public static FixedSOMElement CreateFixedSOMElement(FixedPage page, UIElement uiElement, FixedNode fixedNode, int startIndex, int endIndex)
        { 
            FixedSOMElement element = null;
            if (uiElement is Glyphs) 
            { 
                Glyphs glyphs = uiElement as Glyphs;
                if (glyphs.UnicodeString.Length > 0) 
                {
                    GlyphRun glyphRun = glyphs.ToGlyphRun();
                    Rect alignmentBox = glyphRun.ComputeAlignmentBox();
                    alignmentBox.Offset(glyphs.OriginX, glyphs.OriginY); 
                    GeneralTransform transform = glyphs.TransformToAncestor(page);
 
                    if (startIndex < 0) 
                    {
                        startIndex = 0; 
                    }
                    if (endIndex < 0)
                    {
                        endIndex = glyphRun.Characters == null ? 0 : glyphRun.Characters.Count; 
                    }
                    element = FixedSOMTextRun.Create(alignmentBox, transform, glyphs, fixedNode, startIndex, endIndex, false); 
                } 
            }
            else if (uiElement is Image) 
            {
                element = FixedSOMImage.Create(page, uiElement as Image, fixedNode);
            }
            else if (uiElement is Path) 
            {
                element = FixedSOMImage.Create(page, uiElement as Path, fixedNode); 
            } 
            return element;
        } 

        #endregion Static methods

 
        //--------------------------------------------------------------------
        // 
        // Public Properties 
        //
        //--------------------------------------------------------------------- 

        #region Public Properties

        public FixedNode FixedNode 
        {
            get 
            { 
                return _fixedNode;
            } 
        }

        public int StartIndex
        { 
            get
            { 
                return _startIndex; 
            }
        } 

        public int EndIndex
        {
            get 
            {
                return _endIndex; 
            } 
        }
 
        #endregion Public Properties

        //--------------------------------------------------------------------
        // 
        // Internal Properties
        // 
        //---------------------------------------------------------------------- 

        #region Internal Properties 

        internal FlowNode FlowNode
        {
            get 
            {
                return _flowNode; 
            } 
            set
            { 
                _flowNode = value;
            }
        }
 
        internal int OffsetInFlowNode
        { 
            get 
            {
                return _offsetInFlowNode; 
            }
            set
            {
                _offsetInFlowNode = value; 
            }
        } 
 
        internal Matrix Matrix
        { 
            get
            {
                return _mat;
            } 
        }
 
        #endregion Internal Properties 

 
        //-------------------------------------------------------------------
        //
        // Protected Fields
        // 
        //----------------------------------------------------------------------
 
        #region Protected Fields 
        protected FixedNode _fixedNode ;
        protected int _startIndex; 
        protected int _endIndex;
        protected Matrix _mat;
        #endregion Protected Fields
 
        #region Private Fields
        private FlowNode _flowNode; 
        private int _offsetInFlowNode; 
        #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