Quad.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 / Core / MS / Internal / Ink / Quad.cs / 1 / Quad.cs

                            //------------------------------------------------------------------------ 
// 
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//----------------------------------------------------------------------- 

using System; 
using System.Windows; 
using System.Windows.Media;
using System.Collections; 
using System.Collections.Generic;
using System.Collections.ObjectModel;
using MS.Utility;
 
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID; 
 
namespace MS.Internal.Ink
{ 
    /// 
    /// A helper structure used in StrokeNode and StrokeNodeOperation implementations
    /// to store endpoints of the quad connecting two nodes of a stroke.
    /// The vertices of a quad are supposed to be clockwise with points A and D located 
    /// on the begin node and B and C on the end one.
    ///  
    internal struct Quad 
    {
        #region Statics 

        private static Quad s_empty = new Quad(new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0));

        #endregion 

        #region API 
 
        ///  Returns the static object representing an empty (unitialized) quad 
        internal static Quad Empty { get { return s_empty; } } 

        ///  Constructor 
        internal Quad(Point a, Point b, Point c, Point d)
        { 
            _A = a; _B = b; _C = c; _D = d;
        } 
 
        ///  The A vertex of the quad 
        internal Point A { get { return _A; } set { _A = value; } } 

        ///  The B vertex of the quad 
        internal Point B { get { return _B; } set { _B = value; } }
 
        ///  The C vertex of the quad 
        internal Point C { get { return _C; } set { _C = value; } } 
 
        ///  The D vertex of the quad 
        internal Point D { get { return _D; } set { _D = value; } } 

        // Returns quad's vertex by index where A is of the index 0, B - is 1, etc
        internal Point this[int index]
        { 
            get
            { 
                switch (index) 
                {
                    case 0: return _A; 
                    case 1: return _B;
                    case 2: return _C;
                    case 3: return _D;
                    default: 
                        throw new IndexOutOfRangeException("index");
                } 
            } 
        }
 
        ///  Tells whether the quad is invalid (empty) 
        internal bool IsEmpty
        {
            get { return (_A == _B) && (_C == _D); } 
        }
 
        internal void GetPoints(List pointBuffer) 
        {
            pointBuffer.Add(_A); 
            pointBuffer.Add(_B);
            pointBuffer.Add(_C);
            pointBuffer.Add(_D);
        } 

        ///  Returns the bounds of the quad  
        internal Rect Bounds 
        {
            get { return IsEmpty ? Rect.Empty : Rect.Union(new Rect(_A, _B), new Rect(_C, _D)); } 
        }

        #endregion
 
        #region Fields
 
        private Point _A; 
        private Point _B;
        private Point _C; 
        private Point _D;

        #endregion
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

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