Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / RadialGradientBrush.cs / 1305600 / RadialGradientBrush.cs
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Description: This file contains the implementation of RadialGradientBrush.
// The RadialGradientBrush is a GradientBrush which defines its
// Gradient as a radial interpolation within an Ellipse.
//
// History:
// 05/08/2003 : [....] - Created it.
// 09/21/2004 : timothyc - Added GradientStopCollection constructor.
//
//---------------------------------------------------------------------------
using MS.Internal;
using MS.Internal.PresentationCore;
using System;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
using System.Security;
using System.Security.Permissions;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media
{
///
/// RadialGradientBrush - This GradientBrush defines its Gradient as an interpolation
/// within an Ellipse.
///
public sealed partial class RadialGradientBrush : GradientBrush
{
#region Constructors
///
/// Default constructor for RadialGradientBrush. The resulting brush has no content.
///
public RadialGradientBrush() : base()
{
}
///
/// RadialGradientBrush Constructor
/// Constructs a RadialGradientBrush with two colors specified for GradientStops at
/// offsets 0.0 and 1.0.
///
/// The Color at offset 0.0.
/// The Color at offset 1.0.
public RadialGradientBrush(Color startColor,
Color endColor) : base()
{
GradientStops.Add(new GradientStop(startColor, 0.0));
GradientStops.Add(new GradientStop(endColor, 1.0));
}
///
/// RadialGradientBrush Constructor
/// Constructs a RadialGradientBrush with GradientStops set to the passed-in
/// collection.
///
/// GradientStopCollection to set on this brush.
public RadialGradientBrush(GradientStopCollection gradientStopCollection)
: base(gradientStopCollection)
{
}
#endregion Constructors
///
/// Critical: This code acceses an unsafe code block
/// TreatAsSafe: This does not expose any data uses all local variables.
/// Sending instructions to the channel is considered a safe operation.Also
/// all calls to copybytes have been verified so the operation is safe
///
[SecurityCritical,SecurityTreatAsSafe]
private void ManualUpdateResource(DUCE.Channel channel, bool skipOnChannelCheck)
{
// If we're told we can skip the channel check, then we must be on channel
Debug.Assert(!skipOnChannelCheck || _duceResource.IsOnChannel(channel));
if (skipOnChannelCheck || _duceResource.IsOnChannel(channel))
{
Transform vTransform = Transform;
Transform vRelativeTransform = RelativeTransform;
GradientStopCollection vGradientStops = GradientStops;
DUCE.ResourceHandle hTransform;
if (vTransform == null ||
Object.ReferenceEquals(vTransform, Transform.Identity)
)
{
hTransform = DUCE.ResourceHandle.Null;
}
else
{
hTransform = ((DUCE.IResource)vTransform).GetHandle(channel);
}
DUCE.ResourceHandle hRelativeTransform;
if (vRelativeTransform == null ||
Object.ReferenceEquals(vRelativeTransform, Transform.Identity)
)
{
hRelativeTransform = DUCE.ResourceHandle.Null;
}
else
{
hRelativeTransform = ((DUCE.IResource)vRelativeTransform).GetHandle(channel);
}
DUCE.ResourceHandle hOpacityAnimations = GetAnimationResourceHandle(OpacityProperty, channel);
DUCE.ResourceHandle hCenterAnimations = GetAnimationResourceHandle(CenterProperty, channel);
DUCE.ResourceHandle hRadiusXAnimations = GetAnimationResourceHandle(RadiusXProperty, channel);
DUCE.ResourceHandle hRadiusYAnimations = GetAnimationResourceHandle(RadiusYProperty, channel);
DUCE.ResourceHandle hGradientOriginAnimations = GetAnimationResourceHandle(GradientOriginProperty, channel);
DUCE.MILCMD_RADIALGRADIENTBRUSH data;
unsafe
{
data.Type = MILCMD.MilCmdRadialGradientBrush;
data.Handle = _duceResource.GetHandle(channel);
double tempOpacity = Opacity;
DUCE.CopyBytes((byte*)&data.Opacity, (byte*)&tempOpacity, 8);
data.hOpacityAnimations = hOpacityAnimations;
data.hTransform = hTransform;
data.hRelativeTransform = hRelativeTransform;
data.ColorInterpolationMode = ColorInterpolationMode;
data.MappingMode = MappingMode;
data.SpreadMethod = SpreadMethod;
Point tempCenter = Center;
DUCE.CopyBytes((byte*)&data.Center, (byte*)&tempCenter, 16);
data.hCenterAnimations = hCenterAnimations;
double tempRadiusX = RadiusX;
DUCE.CopyBytes((byte*)&data.RadiusX, (byte*)&tempRadiusX, 8);
data.hRadiusXAnimations = hRadiusXAnimations;
double tempRadiusY = RadiusY;
DUCE.CopyBytes((byte*)&data.RadiusY, (byte*)&tempRadiusY, 8);
data.hRadiusYAnimations = hRadiusYAnimations;
Point tempGradientOrigin = GradientOrigin;
DUCE.CopyBytes((byte*)&data.GradientOrigin, (byte*)&tempGradientOrigin, 16);
data.hGradientOriginAnimations = hGradientOriginAnimations;
// NTRAID#Longhorn-1011154-2004/8/12-asecchia GradientStopCollection: Need to enforce upper-limit of gradient stop capacity
int count = (vGradientStops == null) ? 0 : vGradientStops.Count;
data.GradientStopsSize = (UInt32)(sizeof(DUCE.MIL_GRADIENTSTOP)*count);
channel.BeginCommand(
(byte*)&data,
sizeof(DUCE.MILCMD_RADIALGRADIENTBRUSH),
sizeof(DUCE.MIL_GRADIENTSTOP)*count
);
for (int i=0; i
/// RadialGradientBrush - This GradientBrush defines its Gradient as an interpolation
/// within an Ellipse.
///
public sealed partial class RadialGradientBrush : GradientBrush
{
#region Constructors
///
/// Default constructor for RadialGradientBrush. The resulting brush has no content.
///
public RadialGradientBrush() : base()
{
}
///
/// RadialGradientBrush Constructor
/// Constructs a RadialGradientBrush with two colors specified for GradientStops at
/// offsets 0.0 and 1.0.
///
/// The Color at offset 0.0.
/// The Color at offset 1.0.
public RadialGradientBrush(Color startColor,
Color endColor) : base()
{
GradientStops.Add(new GradientStop(startColor, 0.0));
GradientStops.Add(new GradientStop(endColor, 1.0));
}
///
/// RadialGradientBrush Constructor
/// Constructs a RadialGradientBrush with GradientStops set to the passed-in
/// collection.
///
/// GradientStopCollection to set on this brush.
public RadialGradientBrush(GradientStopCollection gradientStopCollection)
: base(gradientStopCollection)
{
}
#endregion Constructors
///
/// Critical: This code acceses an unsafe code block
/// TreatAsSafe: This does not expose any data uses all local variables.
/// Sending instructions to the channel is considered a safe operation.Also
/// all calls to copybytes have been verified so the operation is safe
///
[SecurityCritical,SecurityTreatAsSafe]
private void ManualUpdateResource(DUCE.Channel channel, bool skipOnChannelCheck)
{
// If we're told we can skip the channel check, then we must be on channel
Debug.Assert(!skipOnChannelCheck || _duceResource.IsOnChannel(channel));
if (skipOnChannelCheck || _duceResource.IsOnChannel(channel))
{
Transform vTransform = Transform;
Transform vRelativeTransform = RelativeTransform;
GradientStopCollection vGradientStops = GradientStops;
DUCE.ResourceHandle hTransform;
if (vTransform == null ||
Object.ReferenceEquals(vTransform, Transform.Identity)
)
{
hTransform = DUCE.ResourceHandle.Null;
}
else
{
hTransform = ((DUCE.IResource)vTransform).GetHandle(channel);
}
DUCE.ResourceHandle hRelativeTransform;
if (vRelativeTransform == null ||
Object.ReferenceEquals(vRelativeTransform, Transform.Identity)
)
{
hRelativeTransform = DUCE.ResourceHandle.Null;
}
else
{
hRelativeTransform = ((DUCE.IResource)vRelativeTransform).GetHandle(channel);
}
DUCE.ResourceHandle hOpacityAnimations = GetAnimationResourceHandle(OpacityProperty, channel);
DUCE.ResourceHandle hCenterAnimations = GetAnimationResourceHandle(CenterProperty, channel);
DUCE.ResourceHandle hRadiusXAnimations = GetAnimationResourceHandle(RadiusXProperty, channel);
DUCE.ResourceHandle hRadiusYAnimations = GetAnimationResourceHandle(RadiusYProperty, channel);
DUCE.ResourceHandle hGradientOriginAnimations = GetAnimationResourceHandle(GradientOriginProperty, channel);
DUCE.MILCMD_RADIALGRADIENTBRUSH data;
unsafe
{
data.Type = MILCMD.MilCmdRadialGradientBrush;
data.Handle = _duceResource.GetHandle(channel);
double tempOpacity = Opacity;
DUCE.CopyBytes((byte*)&data.Opacity, (byte*)&tempOpacity, 8);
data.hOpacityAnimations = hOpacityAnimations;
data.hTransform = hTransform;
data.hRelativeTransform = hRelativeTransform;
data.ColorInterpolationMode = ColorInterpolationMode;
data.MappingMode = MappingMode;
data.SpreadMethod = SpreadMethod;
Point tempCenter = Center;
DUCE.CopyBytes((byte*)&data.Center, (byte*)&tempCenter, 16);
data.hCenterAnimations = hCenterAnimations;
double tempRadiusX = RadiusX;
DUCE.CopyBytes((byte*)&data.RadiusX, (byte*)&tempRadiusX, 8);
data.hRadiusXAnimations = hRadiusXAnimations;
double tempRadiusY = RadiusY;
DUCE.CopyBytes((byte*)&data.RadiusY, (byte*)&tempRadiusY, 8);
data.hRadiusYAnimations = hRadiusYAnimations;
Point tempGradientOrigin = GradientOrigin;
DUCE.CopyBytes((byte*)&data.GradientOrigin, (byte*)&tempGradientOrigin, 16);
data.hGradientOriginAnimations = hGradientOriginAnimations;
// NTRAID#Longhorn-1011154-2004/8/12-asecchia GradientStopCollection: Need to enforce upper-limit of gradient stop capacity
int count = (vGradientStops == null) ? 0 : vGradientStops.Count;
data.GradientStopsSize = (UInt32)(sizeof(DUCE.MIL_GRADIENTSTOP)*count);
channel.BeginCommand(
(byte*)&data,
sizeof(DUCE.MILCMD_RADIALGRADIENTBRUSH),
sizeof(DUCE.MIL_GRADIENTSTOP)*count
);
for (int i=0; i
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextRangeSerialization.cs
- SupportingTokenParameters.cs
- SqlDataSourceFilteringEventArgs.cs
- SimpleExpression.cs
- _ListenerAsyncResult.cs
- XPathSelectionIterator.cs
- EncryptedKey.cs
- _AutoWebProxyScriptHelper.cs
- ReferentialConstraint.cs
- DataGridViewCellEventArgs.cs
- ArgumentException.cs
- SerializationSectionGroup.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- RuleSettings.cs
- CheckBoxRenderer.cs
- OrthographicCamera.cs
- ScrollBar.cs
- FileStream.cs
- RulePatternOps.cs
- ContractNamespaceAttribute.cs
- PathSegmentCollection.cs
- NotificationContext.cs
- safelinkcollection.cs
- Panel.cs
- UserPreferenceChangedEventArgs.cs
- WindowsAuthenticationEventArgs.cs
- InputLanguage.cs
- TextChangedEventArgs.cs
- JulianCalendar.cs
- SyndicationDeserializer.cs
- UpnEndpointIdentity.cs
- ErrorHandler.cs
- DataGridColumnHeaderAutomationPeer.cs
- CheckBoxField.cs
- PartManifestEntry.cs
- BufferModeSettings.cs
- ColorBuilder.cs
- EntityFunctions.cs
- ReturnValue.cs
- SqlDependencyUtils.cs
- TextElementEnumerator.cs
- PeerNameResolver.cs
- FindCriteria11.cs
- PolicyAssertionCollection.cs
- SafeLocalAllocation.cs
- WebPartMenu.cs
- SqlColumnizer.cs
- ActivationServices.cs
- ResourcesChangeInfo.cs
- GlobalizationSection.cs
- RegexCode.cs
- ProfileSettingsCollection.cs
- FastEncoder.cs
- ProvidersHelper.cs
- HtmlListAdapter.cs
- DateTimeFormat.cs
- CompoundFileStorageReference.cs
- SqlParameter.cs
- ProcessRequestArgs.cs
- IDispatchConstantAttribute.cs
- XmlSerializerNamespaces.cs
- FrugalMap.cs
- LocalBuilder.cs
- sqlser.cs
- CellQuery.cs
- BmpBitmapDecoder.cs
- CollectionEditVerbManager.cs
- BamlVersionHeader.cs
- WebSysDefaultValueAttribute.cs
- BamlLocalizabilityResolver.cs
- InternalConfigEventArgs.cs
- SQLChars.cs
- PtsCache.cs
- RecordBuilder.cs
- LinearGradientBrush.cs
- UnsafeNativeMethods.cs
- ElementProxy.cs
- DataTemplateSelector.cs
- NullableIntSumAggregationOperator.cs
- TextStore.cs
- CaseInsensitiveHashCodeProvider.cs
- SiteMapNodeCollection.cs
- TypeHelper.cs
- StreamAsIStream.cs
- ClientScriptManagerWrapper.cs
- DelegatingTypeDescriptionProvider.cs
- ColorConverter.cs
- SkewTransform.cs
- TimeSpanValidatorAttribute.cs
- BitmapEffectInput.cs
- SpellerHighlightLayer.cs
- CodeBinaryOperatorExpression.cs
- SafeArrayRankMismatchException.cs
- RegexCompilationInfo.cs
- ScriptServiceAttribute.cs
- LinkLabel.cs
- ELinqQueryState.cs
- VScrollProperties.cs
- TileModeValidation.cs
- sitestring.cs