Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / CornerRadius.cs / 1 / CornerRadius.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: CornerRadius.cs
//
// Description: Contains the CornerRadius (double x4) value type.
//
// History:
// 07/19/2004 : t-jaredg - created.
//
//---------------------------------------------------------------------------
using MS.Internal;
using System.ComponentModel;
using System.Globalization;
namespace System.Windows
{
///
/// CornerRadius is a value type used to describe the radius of a rectangle's corners (controlled independently).
/// It contains four double structs each corresponding to a corner: TopLeft, TopRight, BottomLeft, BottomRight.
/// The corner radii cannot be negative.
///
[TypeConverter(typeof(CornerRadiusConverter))]
public struct CornerRadius : IEquatable
{
//-------------------------------------------------------------------
//
// Constructors
//
//-------------------------------------------------------------------
#region Constructors
///
/// This constructor builds a CornerRadius with a specified uniform double radius value on every corner.
///
/// The specified uniform radius.
public CornerRadius(double uniformRadius)
{
_topLeft = _topRight = _bottomLeft = _bottomRight = uniformRadius;
}
///
/// This constructor builds a CornerRadius with the specified doubles on each corner.
///
/// The thickness for the top left corner.
/// The thickness for the top right corner.
/// The thickness for the bottom right corner.
/// The thickness for the bottom left corner.
public CornerRadius(double topLeft, double topRight, double bottomRight, double bottomLeft)
{
_topLeft = topLeft;
_topRight = topRight;
_bottomRight = bottomRight;
_bottomLeft = bottomLeft;
}
#endregion Constructors
//--------------------------------------------------------------------
//
// Public Methods
//
//-------------------------------------------------------------------
#region Public Methods
///
/// This function compares to the provided object for type and value equality.
///
/// Object to compare
/// True if object is a CornerRadius and all sides of it are equal to this CornerRadius'.
public override bool Equals(object obj)
{
if (obj is CornerRadius)
{
CornerRadius otherObj = (CornerRadius)obj;
return (this == otherObj);
}
return (false);
}
///
/// Compares this instance of CornerRadius with another instance.
///
/// CornerRadius instance to compare.
/// true if this CornerRadius instance has the same value
/// and unit type as cornerRadius.
public bool Equals(CornerRadius cornerRadius)
{
return (this == cornerRadius);
}
///
/// This function returns a hash code.
///
/// Hash code
public override int GetHashCode()
{
return _topLeft.GetHashCode() ^ _topRight.GetHashCode() ^ _bottomLeft.GetHashCode() ^ _bottomRight.GetHashCode();
}
///
/// Converts this Thickness object to a string.
///
/// String conversion.
public override string ToString()
{
return CornerRadiusConverter.ToString(this, CultureInfo.InvariantCulture);
}
#endregion Public Methods
//--------------------------------------------------------------------
//
// Public Operators
//
//--------------------------------------------------------------------
#region Public Operators
///
/// Overloaded operator to compare two CornerRadiuses for equality.
///
/// First CornerRadius to compare
/// Second CornerRadius to compare
/// True if all sides of the CornerRadius are equal, false otherwise
// SEEALSO
public static bool operator==(CornerRadius cr1, CornerRadius cr2)
{
return ( (cr1._topLeft == cr2._topLeft || (DoubleUtil.IsNaN(cr1._topLeft) && DoubleUtil.IsNaN(cr2._topLeft)))
&& (cr1._topRight == cr2._topRight || (DoubleUtil.IsNaN(cr1._topRight) && DoubleUtil.IsNaN(cr2._topRight)))
&& (cr1._bottomRight == cr2._bottomRight || (DoubleUtil.IsNaN(cr1._bottomRight) && DoubleUtil.IsNaN(cr2._bottomRight)))
&& (cr1._bottomLeft == cr2._bottomLeft || (DoubleUtil.IsNaN(cr1._bottomLeft) && DoubleUtil.IsNaN(cr2._bottomLeft)))
);
}
///
/// Overloaded operator to compare two CornerRadiuses for inequality.
///
/// First CornerRadius to compare
/// Second CornerRadius to compare
/// False if all sides of the CornerRadius are equal, true otherwise
// SEEALSO
public static bool operator!=(CornerRadius cr1, CornerRadius cr2)
{
return (!(cr1 == cr2));
}
#endregion Public Operators
//-------------------------------------------------------------------
//
// Public Properties
//
//--------------------------------------------------------------------
#region Public Properties
/// This property is the Length on the thickness' top left corner
public double TopLeft
{
get { return _topLeft; }
set { _topLeft = value; }
}
/// This property is the Length on the thickness' top right corner
public double TopRight
{
get { return _topRight; }
set { _topRight = value; }
}
/// This property is the Length on the thickness' bottom right corner
public double BottomRight
{
get { return _bottomRight; }
set { _bottomRight = value; }
}
/// This property is the Length on the thickness' bottom left corner
public double BottomLeft
{
get { return _bottomLeft; }
set { _bottomLeft = value; }
}
#endregion Public Properties
//-------------------------------------------------------------------
//
// Internal Methods Properties
//
//-------------------------------------------------------------------
#region Internal Methods Properties
internal bool IsValid(bool allowNegative, bool allowNaN, bool allowPositiveInfinity, bool allowNegativeInfinity)
{
if (!allowNegative)
{
if (_topLeft < 0d || _topRight < 0d || _bottomLeft < 0d || _bottomRight < 0d)
{
return (false);
}
}
if (!allowNaN)
{
if (DoubleUtil.IsNaN(_topLeft) || DoubleUtil.IsNaN(_topRight) || DoubleUtil.IsNaN(_bottomLeft) || DoubleUtil.IsNaN(_bottomRight))
{
return (false);
}
}
if (!allowPositiveInfinity)
{
if (Double.IsPositiveInfinity(_topLeft) || Double.IsPositiveInfinity(_topRight) || Double.IsPositiveInfinity(_bottomLeft) || Double.IsPositiveInfinity(_bottomRight))
{
return (false);
}
}
if (!allowNegativeInfinity)
{
if (Double.IsNegativeInfinity(_topLeft) || Double.IsNegativeInfinity(_topRight) || Double.IsNegativeInfinity(_bottomLeft) || Double.IsNegativeInfinity(_bottomRight))
{
return (false);
}
}
return (true);
}
internal bool IsZero
{
get
{
return ( DoubleUtil.IsZero(_topLeft)
&& DoubleUtil.IsZero(_topRight)
&& DoubleUtil.IsZero(_bottomRight)
&& DoubleUtil.IsZero(_bottomLeft)
);
}
}
#endregion Internal Methods Properties
//-------------------------------------------------------------------
//
// Private Fields
//
//--------------------------------------------------------------------
#region Private Fields
private double _topLeft;
private double _topRight;
private double _bottomLeft;
private double _bottomRight;
#endregion
}
}
// 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: CornerRadius.cs
//
// Description: Contains the CornerRadius (double x4) value type.
//
// History:
// 07/19/2004 : t-jaredg - created.
//
//---------------------------------------------------------------------------
using MS.Internal;
using System.ComponentModel;
using System.Globalization;
namespace System.Windows
{
///
/// CornerRadius is a value type used to describe the radius of a rectangle's corners (controlled independently).
/// It contains four double structs each corresponding to a corner: TopLeft, TopRight, BottomLeft, BottomRight.
/// The corner radii cannot be negative.
///
[TypeConverter(typeof(CornerRadiusConverter))]
public struct CornerRadius : IEquatable
{
//-------------------------------------------------------------------
//
// Constructors
//
//-------------------------------------------------------------------
#region Constructors
///
/// This constructor builds a CornerRadius with a specified uniform double radius value on every corner.
///
/// The specified uniform radius.
public CornerRadius(double uniformRadius)
{
_topLeft = _topRight = _bottomLeft = _bottomRight = uniformRadius;
}
///
/// This constructor builds a CornerRadius with the specified doubles on each corner.
///
/// The thickness for the top left corner.
/// The thickness for the top right corner.
/// The thickness for the bottom right corner.
/// The thickness for the bottom left corner.
public CornerRadius(double topLeft, double topRight, double bottomRight, double bottomLeft)
{
_topLeft = topLeft;
_topRight = topRight;
_bottomRight = bottomRight;
_bottomLeft = bottomLeft;
}
#endregion Constructors
//--------------------------------------------------------------------
//
// Public Methods
//
//-------------------------------------------------------------------
#region Public Methods
///
/// This function compares to the provided object for type and value equality.
///
/// Object to compare
/// True if object is a CornerRadius and all sides of it are equal to this CornerRadius'.
public override bool Equals(object obj)
{
if (obj is CornerRadius)
{
CornerRadius otherObj = (CornerRadius)obj;
return (this == otherObj);
}
return (false);
}
///
/// Compares this instance of CornerRadius with another instance.
///
/// CornerRadius instance to compare.
/// true if this CornerRadius instance has the same value
/// and unit type as cornerRadius.
public bool Equals(CornerRadius cornerRadius)
{
return (this == cornerRadius);
}
///
/// This function returns a hash code.
///
/// Hash code
public override int GetHashCode()
{
return _topLeft.GetHashCode() ^ _topRight.GetHashCode() ^ _bottomLeft.GetHashCode() ^ _bottomRight.GetHashCode();
}
///
/// Converts this Thickness object to a string.
///
/// String conversion.
public override string ToString()
{
return CornerRadiusConverter.ToString(this, CultureInfo.InvariantCulture);
}
#endregion Public Methods
//--------------------------------------------------------------------
//
// Public Operators
//
//--------------------------------------------------------------------
#region Public Operators
///
/// Overloaded operator to compare two CornerRadiuses for equality.
///
/// First CornerRadius to compare
/// Second CornerRadius to compare
/// True if all sides of the CornerRadius are equal, false otherwise
// SEEALSO
public static bool operator==(CornerRadius cr1, CornerRadius cr2)
{
return ( (cr1._topLeft == cr2._topLeft || (DoubleUtil.IsNaN(cr1._topLeft) && DoubleUtil.IsNaN(cr2._topLeft)))
&& (cr1._topRight == cr2._topRight || (DoubleUtil.IsNaN(cr1._topRight) && DoubleUtil.IsNaN(cr2._topRight)))
&& (cr1._bottomRight == cr2._bottomRight || (DoubleUtil.IsNaN(cr1._bottomRight) && DoubleUtil.IsNaN(cr2._bottomRight)))
&& (cr1._bottomLeft == cr2._bottomLeft || (DoubleUtil.IsNaN(cr1._bottomLeft) && DoubleUtil.IsNaN(cr2._bottomLeft)))
);
}
///
/// Overloaded operator to compare two CornerRadiuses for inequality.
///
/// First CornerRadius to compare
/// Second CornerRadius to compare
/// False if all sides of the CornerRadius are equal, true otherwise
// SEEALSO
public static bool operator!=(CornerRadius cr1, CornerRadius cr2)
{
return (!(cr1 == cr2));
}
#endregion Public Operators
//-------------------------------------------------------------------
//
// Public Properties
//
//--------------------------------------------------------------------
#region Public Properties
/// This property is the Length on the thickness' top left corner
public double TopLeft
{
get { return _topLeft; }
set { _topLeft = value; }
}
/// This property is the Length on the thickness' top right corner
public double TopRight
{
get { return _topRight; }
set { _topRight = value; }
}
/// This property is the Length on the thickness' bottom right corner
public double BottomRight
{
get { return _bottomRight; }
set { _bottomRight = value; }
}
/// This property is the Length on the thickness' bottom left corner
public double BottomLeft
{
get { return _bottomLeft; }
set { _bottomLeft = value; }
}
#endregion Public Properties
//-------------------------------------------------------------------
//
// Internal Methods Properties
//
//-------------------------------------------------------------------
#region Internal Methods Properties
internal bool IsValid(bool allowNegative, bool allowNaN, bool allowPositiveInfinity, bool allowNegativeInfinity)
{
if (!allowNegative)
{
if (_topLeft < 0d || _topRight < 0d || _bottomLeft < 0d || _bottomRight < 0d)
{
return (false);
}
}
if (!allowNaN)
{
if (DoubleUtil.IsNaN(_topLeft) || DoubleUtil.IsNaN(_topRight) || DoubleUtil.IsNaN(_bottomLeft) || DoubleUtil.IsNaN(_bottomRight))
{
return (false);
}
}
if (!allowPositiveInfinity)
{
if (Double.IsPositiveInfinity(_topLeft) || Double.IsPositiveInfinity(_topRight) || Double.IsPositiveInfinity(_bottomLeft) || Double.IsPositiveInfinity(_bottomRight))
{
return (false);
}
}
if (!allowNegativeInfinity)
{
if (Double.IsNegativeInfinity(_topLeft) || Double.IsNegativeInfinity(_topRight) || Double.IsNegativeInfinity(_bottomLeft) || Double.IsNegativeInfinity(_bottomRight))
{
return (false);
}
}
return (true);
}
internal bool IsZero
{
get
{
return ( DoubleUtil.IsZero(_topLeft)
&& DoubleUtil.IsZero(_topRight)
&& DoubleUtil.IsZero(_bottomRight)
&& DoubleUtil.IsZero(_bottomLeft)
);
}
}
#endregion Internal Methods Properties
//-------------------------------------------------------------------
//
// Private Fields
//
//--------------------------------------------------------------------
#region Private Fields
private double _topLeft;
private double _topRight;
private double _bottomLeft;
private double _bottomRight;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InfoCardTrace.cs
- ToolboxItem.cs
- WindowShowOrOpenTracker.cs
- Adorner.cs
- GridViewColumnCollection.cs
- AppearanceEditorPart.cs
- Parameter.cs
- TableHeaderCell.cs
- DefaultCommandExtensionCallback.cs
- webclient.cs
- PageTheme.cs
- MethodBody.cs
- NodeFunctions.cs
- SoapFault.cs
- NavigationPropertyAccessor.cs
- ResumeStoryboard.cs
- DynamicMethod.cs
- WinInetCache.cs
- SessionState.cs
- PropertyRecord.cs
- WindowsFormsHost.cs
- XmlBinaryReader.cs
- DocumentApplicationState.cs
- ArglessEventHandlerProxy.cs
- StateChangeEvent.cs
- Operators.cs
- FileSystemEventArgs.cs
- ApplicationBuildProvider.cs
- Logging.cs
- PropertyEntry.cs
- NativeMethods.cs
- ProgramNode.cs
- XmlSchemaElement.cs
- DetailsViewInsertEventArgs.cs
- WebProxyScriptElement.cs
- ClientSideQueueItem.cs
- VisualStyleRenderer.cs
- AdapterDictionary.cs
- SystemInformation.cs
- ReadOnlyCollection.cs
- XmlQueryType.cs
- KeyTimeConverter.cs
- SkewTransform.cs
- MeshGeometry3D.cs
- XmlILIndex.cs
- KeyedHashAlgorithm.cs
- OleDbSchemaGuid.cs
- XmlILAnnotation.cs
- SoapIgnoreAttribute.cs
- TextEndOfLine.cs
- SafeCryptoKeyHandle.cs
- WinEventHandler.cs
- ConfigXmlCDataSection.cs
- SamlDelegatingWriter.cs
- OneToOneMappingSerializer.cs
- ExpressionBinding.cs
- DiscreteKeyFrames.cs
- SystemIPGlobalStatistics.cs
- PassportPrincipal.cs
- SimpleNameService.cs
- ImplicitInputBrush.cs
- ClientType.cs
- XmlSchemaFacet.cs
- invalidudtexception.cs
- CookieProtection.cs
- ProjectionPath.cs
- PreviewPrintController.cs
- ModuleConfigurationInfo.cs
- CatalogPart.cs
- DependencyPropertyValueSerializer.cs
- DbProviderManifest.cs
- Logging.cs
- NativeMethods.cs
- VoiceInfo.cs
- GACMembershipCondition.cs
- Registry.cs
- XPathConvert.cs
- PageClientProxyGenerator.cs
- SwitchLevelAttribute.cs
- ErrorWebPart.cs
- ButtonAutomationPeer.cs
- TextOutput.cs
- NetTcpSection.cs
- ReadingWritingEntityEventArgs.cs
- TemplateControlBuildProvider.cs
- ContainsRowNumberChecker.cs
- LookupNode.cs
- DataDocumentXPathNavigator.cs
- IntranetCredentialPolicy.cs
- CqlParser.cs
- OptimalTextSource.cs
- TreeIterator.cs
- AuthenticationSection.cs
- BitSet.cs
- ProcessHost.cs
- DataRecordObjectView.cs
- XmlIlVisitor.cs
- EnumConverter.cs
- RemotingAttributes.cs
- XmlSchemaInferenceException.cs