File: Core\CSharp\System\Windows\Media\Brush.cs
Project: wpf\src\PresentationCore.csproj (PresentationCore)
//---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation.  All rights reserved.
//
// File: Brush.cs
//
// Description: This file contains the implementation of Brush.
//              Brush is the abstract base class which describes how to fill 
//              a geometric area.
//
// History:
//  04/28/2003 : Microsoft - Created it.
//
//---------------------------------------------------------------------------
 
using MS.Internal;
using System;
using System.IO;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
using System.Windows.Markup;
 
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
 
namespace System.Windows.Media 
{
 
    /// <summary>
    /// Brush - 
    /// A brush is an object that represents a method to fill a plane.
    /// In addition to being able to fill a plane in an absolute way,
    /// Brushes are also able to adapt how they fill the plane to the
    /// size of the object that they are used to fill.
    /// </summary>
    [Localizability(LocalizationCategory.None, Readability=Readability.Unreadable)]
    public abstract partial class Brush : Animatable, IFormattable
    {       
        #region Constructors
        
        /// <summary>
        /// Protected constructor for Brush.  
        /// Sets all values to their defaults.  
        /// To set property values, use the constructor which accepts paramters
        /// </summary>
        protected Brush()
        {
        }
 
        #endregion Constructors
 
        #region ToString
 
        /// <summary>
        /// Parse - this method is called by the type converter to parse a Brush's string 
        /// (provided in "value") with the given IFormatProvider.
        /// </summary>
        /// <returns>
        /// A Brush which was created by parsing the "value".
        /// </returns>
        /// <param name="value"> String representation of a Brush.  Cannot be null/empty. </param>
        /// <param name="context"> The ITypeDescriptorContext for this call. </param>
        internal static Brush Parse(string value, ITypeDescriptorContext context)
        {
            Brush brush;
            IFreezeFreezables freezer = null;
            if (context != null)
            {
                freezer = (IFreezeFreezables)context.GetService(typeof(IFreezeFreezables));
                if ((freezer != null) && freezer.FreezeFreezables)
                {
                    brush = (Brush)freezer.TryGetFreezable(value);
                    if (brush != null)
                    {
                        return brush;
                    }
                }
            }
            
            brush = Parsers.ParseBrush(value, System.Windows.Markup.TypeConverterHelper.InvariantEnglishUS, context);
            
            if ((brush != null) && (freezer != null) && (freezer.FreezeFreezables))
            {
                freezer.TryFreeze(value, brush);
            }
 
            return brush;
        }
 
        /// <summary>
        /// Can serialze "this" to a string
        /// </summary>
        internal virtual bool CanSerializeToString()
        {
            return false;
        }
    
        #endregion
    }
}