CharacterShapingProperties.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / MS / Internal / Shaping / CharacterShapingProperties.cs / 1 / CharacterShapingProperties.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: CharacterShapingProperties class 
//
// History: 
//  10/26/2004: Garyyang Created the file
//   1/25/2004: garyyang Move it to internal namespace
//
//--------------------------------------------------------------------------- 

using System.Runtime.InteropServices; 
 
namespace MS.Internal.Shaping
{ 
    /// 
    /// Properties per character
    /// 
    [StructLayout(LayoutKind.Sequential)] 
    internal struct CharacterShapingProperties
    { 
        ///  
        /// Constructor
        ///  
        /// reserved bits used by shaping engine
        /// flag indicating whether the code point can be glyphed alone
        internal CharacterShapingProperties(byte engineReserved, bool canGlyphAlone)
        { 
            _value = (canGlyphAlone ? CanGlyphAloneFlag : (ushort) 0);
            _value |= engineReserved; 
        } 

        ///  
        /// Get or Set CanGlyphAlone flag for the charactrer
        /// 
        /// 
        internal bool CanGlyphAlone 
        {
            get 
            { 
                return (_value & CanGlyphAloneFlag) != 0;
            } 
            set
            {
                if (value)
                { 
                    _value |= CanGlyphAloneFlag;
                } 
                else 
                {
                    _value &= (CanGlyphAloneFlag ^ 0xFFFF); 
                }
            }
        }
 
        /// 
        /// Get or Set bits reserved for shaping engine use 
        ///  
        /// 
        internal byte EngineReserved 
        {
            get
            {
                return (byte)(_value & EngineReservedValueMask); 
            }
            set 
            { 
                _value = (ushort)((_value & (EngineReservedValueMask ^ 0xFFFF)) | value);
            } 
        }

        /// 
        /// Compares two CharacterShapingProperties for equality. 
        /// 
        /// Returns true if the arguments have identical properties, false if not. 
        public static bool operator ==( 
            CharacterShapingProperties left,
            CharacterShapingProperties right) 
        {
            return left._value == right._value;
        }
 

        ///  
        /// Compares two CharacterShapingProperties for inequality. 
        /// 
        /// Returns true if the arguments are not equal, false if they are equal. 
        public static bool operator !=(
            CharacterShapingProperties left,
            CharacterShapingProperties right)
        { 
            return !(left == right);
        } 
 
        /// 
        /// Compares the specified object with this. 
        /// 
        /// Returns true if the specified object is a CharacterShapingProperties with the same
        /// value as this object.
        public override bool Equals(object o) 
        {
            if (o != null && o is CharacterShapingProperties) 
            { 
                return (CharacterShapingProperties)o == this;
            } 
            else
            {
                return false;
            } 
        }
 
 
        /// 
        /// Returns a hash code based on the property flags. 
        /// 
        public override int GetHashCode()
        {
            return _value; 
        }
 
 
        private ushort _value;
 
        // CanGlyphAloneFlag is store at the 9th bit
        private const ushort CanGlyphAloneFlag        = 0x0100;
        private const ushort EngineReservedValueMask  = 0x00FF;
    } 
}
 

// 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: CharacterShapingProperties class 
//
// History: 
//  10/26/2004: Garyyang Created the file
//   1/25/2004: garyyang Move it to internal namespace
//
//--------------------------------------------------------------------------- 

using System.Runtime.InteropServices; 
 
namespace MS.Internal.Shaping
{ 
    /// 
    /// Properties per character
    /// 
    [StructLayout(LayoutKind.Sequential)] 
    internal struct CharacterShapingProperties
    { 
        ///  
        /// Constructor
        ///  
        /// reserved bits used by shaping engine
        /// flag indicating whether the code point can be glyphed alone
        internal CharacterShapingProperties(byte engineReserved, bool canGlyphAlone)
        { 
            _value = (canGlyphAlone ? CanGlyphAloneFlag : (ushort) 0);
            _value |= engineReserved; 
        } 

        ///  
        /// Get or Set CanGlyphAlone flag for the charactrer
        /// 
        /// 
        internal bool CanGlyphAlone 
        {
            get 
            { 
                return (_value & CanGlyphAloneFlag) != 0;
            } 
            set
            {
                if (value)
                { 
                    _value |= CanGlyphAloneFlag;
                } 
                else 
                {
                    _value &= (CanGlyphAloneFlag ^ 0xFFFF); 
                }
            }
        }
 
        /// 
        /// Get or Set bits reserved for shaping engine use 
        ///  
        /// 
        internal byte EngineReserved 
        {
            get
            {
                return (byte)(_value & EngineReservedValueMask); 
            }
            set 
            { 
                _value = (ushort)((_value & (EngineReservedValueMask ^ 0xFFFF)) | value);
            } 
        }

        /// 
        /// Compares two CharacterShapingProperties for equality. 
        /// 
        /// Returns true if the arguments have identical properties, false if not. 
        public static bool operator ==( 
            CharacterShapingProperties left,
            CharacterShapingProperties right) 
        {
            return left._value == right._value;
        }
 

        ///  
        /// Compares two CharacterShapingProperties for inequality. 
        /// 
        /// Returns true if the arguments are not equal, false if they are equal. 
        public static bool operator !=(
            CharacterShapingProperties left,
            CharacterShapingProperties right)
        { 
            return !(left == right);
        } 
 
        /// 
        /// Compares the specified object with this. 
        /// 
        /// Returns true if the specified object is a CharacterShapingProperties with the same
        /// value as this object.
        public override bool Equals(object o) 
        {
            if (o != null && o is CharacterShapingProperties) 
            { 
                return (CharacterShapingProperties)o == this;
            } 
            else
            {
                return false;
            } 
        }
 
 
        /// 
        /// Returns a hash code based on the property flags. 
        /// 
        public override int GetHashCode()
        {
            return _value; 
        }
 
 
        private ushort _value;
 
        // CanGlyphAloneFlag is store at the 9th bit
        private const ushort CanGlyphAloneFlag        = 0x0100;
        private const ushort EngineReservedValueMask  = 0x00FF;
    } 
}
 

// 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