DrawingBrush.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Media / DrawingBrush.cs / 1 / DrawingBrush.cs

                            //---------------------------------------------------------------------------- 
//
// Copyright (C) Microsoft Corporation.  All rights reserved.
//
// File: DrawingBrush.cs 
//
// Description: This file contains the implementation of DrawingBrush. 
//              The DrawingBrush is a TileBrush which defines its tile content 
//              by use of a Drawing.
// 
// History:
//  2003/07/17 : adsmith - Created it.
//  2003/07/28 : adsmith - Renamed it and hooked it up to the unmanaged code.
// 
//---------------------------------------------------------------------------
 
using MS.Internal; 
using System;
using System.ComponentModel; 
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media; 
using System.Windows.Media.Animation;
using System.Windows.Media.Composition; 
 
namespace System.Windows.Media
{ 
    /// 
    /// DrawingBrush - This TileBrush defines its content as a Drawing
    /// 
    public sealed partial class DrawingBrush : TileBrush 
    {
        #region Constructors 
 
        /// 
        /// Default constructor for DrawingBrush.  The resulting Brush has no content. 
        /// 
        public DrawingBrush()
        {
        } 

        ///  
        /// DrawingBrush Constructor where the image is set to the parameter's value 
        /// 
        ///  The Drawing representing the contents of this Brush.  
        public DrawingBrush(Drawing drawing)
        {
            Drawing = drawing;
        } 

        #endregion Constructors 
 
        /// 
        /// This node can introduce graphness 
        /// 
        internal override bool CanIntroduceGraphness()
        {
            return true; 
        }
 
        ///  
        /// Obtains the current bounds of the brush's content
        ///  
        ///  Output bounds of content 
        protected override void GetContentBounds(out Rect contentBounds)
        {
            contentBounds = Drawing.GetBounds(); 
        }
 
        #region Realization Support 
        /// 
        /// A drawing brush requires realizations if the drawing assigned to it requires realizations. 
        /// Note that Precompute is best called only once per managed frame.
        /// 
        internal override void Precompute()
        { 
            //
 
 
            Drawing drawing = Drawing;
 
            if (drawing != null)
            {
                drawing.PrecomputeCore();
                _requiresRealizationUpdates = drawing.RequiresRealizationUpdates; 
            }
            else 
            { 
                _requiresRealizationUpdates = false;
            } 
        }

        /// 
        /// Checks if realization updates are requried for this resource. 
        /// Before querying this property Precompute must be called to validate the property
        /// value. 
        ///  
        internal override bool RequiresRealizationUpdates
        { 
            get
            {

                return _requiresRealizationUpdates;
            } 
        }
 
        ///  
        /// Updates realizations for all dependant resources that might require realization updates.
        ///  
        internal override void UpdateRealizations(Rect fillShapeBounds, RealizationContext ctx)
        {
            if (_requiresRealizationUpdates)
            { 
                Matrix m;
                Drawing drawing = Drawing; 
 
                Debug.Assert(drawing != null); // RequiresRealizationUpdates sets the _requiresRealizationUpdates member to false if drawing == null.
 
                GetTileBrushMapping(fillShapeBounds, out m);
                ctx.TransformStack.Push(ref m, true);
                drawing.UpdateRealizations(ctx);
                ctx.TransformStack.Pop(); 
            }
        } 
 
        #endregion
 
        private bool _requiresRealizationUpdates;
    }
}

// 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.
//
// File: DrawingBrush.cs 
//
// Description: This file contains the implementation of DrawingBrush. 
//              The DrawingBrush is a TileBrush which defines its tile content 
//              by use of a Drawing.
// 
// History:
//  2003/07/17 : adsmith - Created it.
//  2003/07/28 : adsmith - Renamed it and hooked it up to the unmanaged code.
// 
//---------------------------------------------------------------------------
 
using MS.Internal; 
using System;
using System.ComponentModel; 
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media; 
using System.Windows.Media.Animation;
using System.Windows.Media.Composition; 
 
namespace System.Windows.Media
{ 
    /// 
    /// DrawingBrush - This TileBrush defines its content as a Drawing
    /// 
    public sealed partial class DrawingBrush : TileBrush 
    {
        #region Constructors 
 
        /// 
        /// Default constructor for DrawingBrush.  The resulting Brush has no content. 
        /// 
        public DrawingBrush()
        {
        } 

        ///  
        /// DrawingBrush Constructor where the image is set to the parameter's value 
        /// 
        ///  The Drawing representing the contents of this Brush.  
        public DrawingBrush(Drawing drawing)
        {
            Drawing = drawing;
        } 

        #endregion Constructors 
 
        /// 
        /// This node can introduce graphness 
        /// 
        internal override bool CanIntroduceGraphness()
        {
            return true; 
        }
 
        ///  
        /// Obtains the current bounds of the brush's content
        ///  
        ///  Output bounds of content 
        protected override void GetContentBounds(out Rect contentBounds)
        {
            contentBounds = Drawing.GetBounds(); 
        }
 
        #region Realization Support 
        /// 
        /// A drawing brush requires realizations if the drawing assigned to it requires realizations. 
        /// Note that Precompute is best called only once per managed frame.
        /// 
        internal override void Precompute()
        { 
            //
 
 
            Drawing drawing = Drawing;
 
            if (drawing != null)
            {
                drawing.PrecomputeCore();
                _requiresRealizationUpdates = drawing.RequiresRealizationUpdates; 
            }
            else 
            { 
                _requiresRealizationUpdates = false;
            } 
        }

        /// 
        /// Checks if realization updates are requried for this resource. 
        /// Before querying this property Precompute must be called to validate the property
        /// value. 
        ///  
        internal override bool RequiresRealizationUpdates
        { 
            get
            {

                return _requiresRealizationUpdates;
            } 
        }
 
        ///  
        /// Updates realizations for all dependant resources that might require realization updates.
        ///  
        internal override void UpdateRealizations(Rect fillShapeBounds, RealizationContext ctx)
        {
            if (_requiresRealizationUpdates)
            { 
                Matrix m;
                Drawing drawing = Drawing; 
 
                Debug.Assert(drawing != null); // RequiresRealizationUpdates sets the _requiresRealizationUpdates member to false if drawing == null.
 
                GetTileBrushMapping(fillShapeBounds, out m);
                ctx.TransformStack.Push(ref m, true);
                drawing.UpdateRealizations(ctx);
                ctx.TransformStack.Pop(); 
            }
        } 
 
        #endregion
 
        private bool _requiresRealizationUpdates;
    }
}

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